Although I\'m not a real Java developer (yet), I feel like I should know this by now, but I\'m still very confused. My question has two parts:
What is the d
Java 6 and Java 1.6 are the same. Originally Java was named Java 1.X but as time went, Sun marketing found that it would better signal the significant improvements done if they dropped the "1." part. The first version to do so was Java 1.5 which was marketed as Java 5.
JRE 6 is the consumer distribution of Java 6. It is easy to download from http://java.com.
JDK 6 is the developer distribution of Java 6. It contains tools like a compiler and support for more cultures than the default JRE. It needs to be downloaded from http://javasoft.com.
JVM 11.0 is the version of the Java "interpreter" inside the Oracle JRE/JDK (other vendors use different numbers). This is similar to saying that Windows Vista is really Windows 6.0.6001.
And the difference between the JVM and the JRE. Strictly speaking the JVM is just the machine that interprets the Java bytecode, while a JRE also contains all the standard class libraries, resource files, dll
s (so
s) and so on.
Details item 1 http://en.wikipedia.org/wiki/OpenJDK https://stackoverflow.com/questions/1977238/why-should-i-use-the-sun-jdk-over-the-openjdk-or-vice-versa
http://en.wikipedia.org/wiki/GNU_Compiler_for_Java
How does the GCJ relate to the Sun JDK/OpenJDK? There is no direct relation that I am aware of. GCJ is a separate project. What are the merits of using one JDK over the other? Licensing issues can occur if you redistribute the Sun JDK. Personally I put more trust in the Sun JDK, because of its stability. Isn't OpenJDK a Sun project? Yes and no. It's a community project.
Beware, GCJ is not a certified JVM. It is the GNU Classpath for Java project which has partial Java compatability under a GNU license. You should stear clear of it unless you are certain it meets your needs and you have a reason you cannot use another complete Java implementation.
Sun over the years have made some changes to the naming conventions for their programming language. Originally you had jdk1.1 and so on. At jdk1.2 they decided to change this to Java 2. So you will see some older books about Java 2.
Then for some mysterious reason it went back to jdk1.3 then jdk1.4. When jdk1.5 was released they made a concious effort to change the names again. So we had Java 5. Since they decided to stick with this you have the following:
jdk1.5 = Java 5
jdk1.6 = Java 6
jdk1.7 = Java 7
and (maybe) so on.
So hopefully that explains that part of it. In your question Java6 == Java 1.6 == JDK 6 == JDK 1.6.
As for JVM vs JRE. The JRE contains the JVM as well as class libraries and any other tools necessary to run your Java program. The JVM is simply the program that interprets your byte code and executes it on the host machine.