vagaries on java varieties

Bryan Sant bryan.sant at
Thu Apr 24 10:19:35 MDT 2008

On Thu, Apr 24, 2008 at 12:58 AM, Justin Findlay <justin at> wrote:
> On AD 2008 April 23 Wednesday 11:27:37 PM -0600, Bryan Sant wrote:
>  > The solution is the "Consumer JRE":
>  >     * Quickstarter. Radically reduce the startup time for Java
>  > applications and applets.
>  >     * Java Kernel. Reduce the time to install and launch when the user
>  > needs to install the JRE in order to run an application.
>  >     * Deployment toolkit. Enable easy detection and installation of the JRE.
>  >     * Installer improvements. Improve the user experience of installation.
>  >     * Graphics performance on Microsoft Windows. Enable default
>  > graphics acceleration for simple and advanced 2D rendering. (Linux is
>  > already using an OpenGL accelerated graphics pipeline for 2D
>  > rendering).
>  >     * Nimbus look and feel. Release a new cross-platform look and feel
>  > based on Synth.
>  This sounds quite good.  My main complaint against java is that there's
>  so many different names, concurrent but apparently conflicting version
>  number schemes, environments, specializations, and aftermarket rebundles
>  that it's hard to know what to think when someone says 'java' or when
>  they want you to 'install java'.  Is that indicative of fragmentation or
>  am I just a little naive?

Sun sucks at versioning.  Here's the breakdown:

Java 1.0 = Java
Java 1.1 = Java
Java 1.2 = Java2 1.2 (WTF?  Java 2 on a 1.x version?  Yup.)
Java 1.3 = Java2 1.3
Java 1.4 = Java2 1.4
Java 1.5 = Java 5
Java 6 = Java 6
Java 7 = Java 7

When Java 1.2 was released, it included some fancy new libraries and a
primitive JIT compiler so Sun wanted people to know that 1.2 was much
better than previous releases, so they called it "Java 2 version 1.2"
-- even though its version starts with a 1.x.  This is a common
pattern with Sun -- Solaris 8 is actually SunOS 5.8 for example.  Why?
 Because Sun has a retarded marketing department (or do they have one
at all?)...  Or even common sense.  Java 1.3 was release and called...
 Java 3 right?  Wrong!  Java 1.3 is called "Java 2 version 1.3".  Same
thing for Java 1.4, "Java 2 version 1.4".  Many people complained
about how stupid this versioning scheme was, so they fixed it...
Kinda half way with Java 5 and then totally with Java 6 and beyond.

When talking about "Java" there is the:
JVM (Java Virtual Machine) -- the actual java command that interprets
or compiles bytecode into native code and runs it
JRE (Java Runtime Environment) = JVM + standard libraries and stuff
JDK (Java Development Kit) = JRE + compiler, de-compiler, monitoring
tools, source code, demos and stuff

The JRE is what end-users install on their system so they can run Java
apps and view Java applets in their browser.  When someone says, "I
have 'Java' installed on my computer.", or a program, "Requires Java".
 They're talking about the JRE.

Java has many standard libraries and features.  These features are
bundled into three main categories.
Java Standard Edition (Java SE)
Java Enterprise Edition (Java EE -- formerly known as J2EE)
Java Micro Edition (Java ME -- formerly known as J2ME)

If you don't designate that you're talking about EE or ME, then you
assume you're talking about SE.  Java EE requires Java SE but has many
extra features that specifically target the web and back-end server
market.  Java ME is a stripped down version of Java SE created for
embedded devices (such as cell phones).  Java SE, EE, and ME are
versioned independently.  So you may have Java 6 installed and you're
running the Glassfish app server (which is an open source Java EE 5

90% of all Java programs only need Java SE.

I hope this helps clear things up :-).


More information about the PLUG mailing list