Your Java class files run on a JVM
- a "Java Virtual Machine" which is a program that reads the instructions in the (binary) class file and performs them. Although the class files are "architecture independent" - in other words, the same class file will work on an Intel and a PowerPC chip, and on Linux, Unix and Windows, the JVM is NOT portable in this way and you must have the right one for your system.
The JVM is the running "engine" of Java, but just as most of us don't just buy an engine, we buy a complete car ... so it is with Java. Most of us need a JRE
- a "Java Runtime Environment" which is a JVM plus all the standard classes which are needed to support our own piece of code. Even in a simple read / calculate / report program
, you'll need to load in other standard classes to do jobs like handle command line data, convert a String of characters into a number, and produce output to the current window. All of those standard methods are in the JRE.
Most users of Java programs will simply be running classes through a JVM with the support of a JRE, but the developers of Java programs will also need a way to turn the programs they write, in the "English-like" Java language stored in text files which can be edited easily - into those binary class files which run very mcuh quicker that a language that runs straight from the text (a 'truely interpretive language') but are impractical to edit. And those developers need not only the JVM and the supporting JRE, but also a JDK
- that's a "Java Development kit" which amongst other things includes the java compiler program (javac) to convert english-like source into quickly-run binary.
1. "JSP"s - which are Java Server Pages, run on a web server, include Java source code within the web page. This means that if you're running JSPs on your web server, even if you're not developing any code / pages yourself, you will need the full JDK loaded ... onto not only your test and development servers, but also your production server!
2. You'll very often compile your Java code on a different computer to the one it's finally going to run on - your programmer's computer is really the one that you should be creating / maintaining programs on, and that should NOT be your live server. However, you must have a complete set of all the classes that your Java code calls up when it runs on your development machine - not only is that sensible because it lets you test your code (ALWAYS test even the smallest of changes - that advise comes from experience!) but also Java insists as it won't let you compile something if the classes that the compiled code relies on aren't available for it to check your code 'against'.
JINI, JMX, JXTA, JAXB, JAXP, JAXR, SAAJ, JAX-RPC, JNI, JAXM ... are all extra technologies that you may wish to use in addition to your 'core Java'. Most of the ones I have listed are additional bundles of class files (known as "packages") which provide extra functionality for Java without the developer having to write it himself. They're accessed via method calls through their API (Application Programmer Interfaces) and to make good use of them, you need to (a) load them, (b) read the documentation / look at the samples and (c) understand something about what they actually do.
The AWT, Swing, and many other elements are also extra technologies, but these particular examples are classes / packages that are bundled with the JRE distribution, so there's no need (in these cases) to download and install them separately. (written 2009-09-26)
Associated topics are indexed underJ601 - Java Introduction 
All the Cs ... and Java too - (2009-12-13) 
Finding your java program - the CLASSPATH variable - (2009-04-02) 
Java CLASSPATH explained - (2008-11-26) 
Diagrams to show you how - Tomcat, Java, PHP - (2008-08-22) 
Trying out our Java examples on our web site - (2008-02-27) 
Training Season Starts again! - (2008-01-07) 
Effective Java training - the bootcamp approach - (2007-12-09) 
A Golf Club Decision - Perl to Java - (2007-11-01) 
Private Java Course - A customer's pictures - (2007-04-22) 
Java 6, Apache Tomcat 6. - (2007-01-21) 
Java oversold? - (2006-09-19) 
Is Java the right language to learn? - (2006-07-04) 
Programming languages - a comparison - (2005-05-20) 
PHP v Java - (2004-11-20) 
Training notes available under Open Distribution license - (2004-11-07) 
Release numbers - (2004-08-23)A501 - Web Application Deployment - Java - Basic Language Overview 
Java on the Web Server - course for delegates with some prior Java experience - (2009-04-06) 
Web Application Components - (2006-03-28)
Some other Articles
Operator overloading - redefining addition and other Perl tricksWhich version of MySQL am I running?Weekend and Christmas Promotion - Well House Manor Hotel, MelkshamA Winter Weekend Special at Well House ManorWhat is a JVM, a JRE, a JDK - components of the core Java EnvironmentLooking inside Java classes - javap and javadocSorting Collections of Objects in JavaExceptions in Java - why and howWhere is my Java class?Viv.java uses unchecked or unsafe operations - explanation and cure