Back When It Was The JDK

This graphic illustrates the JDK naming history.

JDK Version History

I like “JDK 6u5″ the best. The first number indicates API changes, the second number indicates implementation changes. The “JDK” lets you know this is the development kit, not the runtime environment. This is simple, concise, and easy to understand.

I think the 1.x.0_0y scheme is redundant and confusing because the “1″ and “0″ never change any more.

The whole “Java SE 6″ name just adds to the confusion. Nobody I know says that name out loud. It reminds me of the asinine commercials where the 5 year old kid is singing “I am stuck on Band Aid Brand”, as if a 5-year old would ever say “Band Aid Brand”.


Fred Says:

Well, personally I’m waiting for Java SE 2.0.0 to be the Java Next Generation. No more backward compatibility and strange looking java like:
int thisMethodReturnAndArray()[] {…};
Collections<? extends Date>.emptyList();
Hashtable, Vector
Annotations that cannot inherit
Strange looking closures :(

Doug Says:

The third number in the version numbering does change.
1.1 went to 1.1.8
1.2 went to 1.2.2
1.3 went to 1.3.1
1.4 went to 1.4.2.

As for “Java SE 6″ and “Band Aid Brand”, both phrases come from the same thing. (At least in the US) a trademark is an adjective, not a noun. The careful trademark holder will always have a noun after their trademark when referring to the trademarked product or service.

Side note: this is why Sun disapproved of other people advertising “Java training”. That phrase means Java branded training, and Sun holds the trademark on the Java brand. “Java language training” or “Java platform training” or “Java EE training” or the like wouldn’t have been such a problem.

Eric Burke Says:

I am well aware that they used to use the third digit, but they have apparently abandoned that practice:

1.6.0
1.6.0_01
1.6.0_02
1.6.0_03
1.6.0_04
1.6.0_05

I fail to see how the _0x addition is better than just using the third digit like they used to. Instead we just have this confusing extra clutter.

How do you spell 6u5?

Actually I meant “pronounce”. How do you pronounce 6u5?

Smitty Says:

@Jorn “Six” “u” “five”.

Doug Says:

The “_xx” part isn’t “an addition”. It’s been there all along. For example, the final release of Java 1.1 was 1.1.8_10.

Sun has a page where they describe the Java version numbering protocols starting with Java 1.3: http://java.sun.com/j2se/versioning_naming.html

The third number is associated with “engineering focused bug fixes”, which mostly consist of performance enhancements and fixes for serious security holes. I don’t have a reference handy for this, but as I recall Sun has stated that they don’t want that number to go above 2. So it’s not always 0, but it’s always 0, 1, or 2 (since Java 1.3).

The “_xx” number is for “customer focused bug fixes”, and if you don’t need any of the specific fixes that are included then there’s no particular reason for you to grab the latest version. In contrast, if the third number ticks over to “1″ or “2″, Sun thinks that the new version is a worthwhile upgrade for just about everyone.

Eric Burke Says:

I understand all that. Here is my position, plain and simple. Where I work, we’ve been using Java for years, with dozens of huge apps. Just about every single JDK update breaks us in some way. So from our perspective, all of this fine-grained detail in the versioning scheme borders on the ridiculous. For instance, JDK 1.6.0_04 completely replaced the JAX-WS implementation, which broke almost every app in our organization. In my opinion, all of these digits and underscores and numbers simply are not needed. We only care about two things: did the APIs change, and did the implementation change. Because no matter what, we’ll assume something will break.

Also, there were times in the past when Sun actually fixed things in some _0x update, but did not make that update available via Java Web Start. Thus, to get critical bug fixes out to our customers, we had to write our own replacement for Web Start.

Eric Roe Says:

Sun has always done goofy things with their version numbering. Look at SunOS and Solaris — Solaris 8 was also SunOS 5.8. Huh? Nice to confuse people who don’t want to read Sun’s “Manual ‘o Versioning”. I remember trying to explain to a customer that Java 2 was actually any version of Java after 1.1. Then Sun went and changed Java 1.5 to Java 5, which is still Java 2… or is it? Practical and easy to rationalize, this scheme is not.

Jim Says:

>Then Sun went and changed Java 1.5 to Java 5, which is still Java 2

Isn’t this is the problem with marketers fiddling with version numbers – they don’t understand (or care) what a version number really means.

steve Says:

Sun is proud to not have any sense of marketing. They exhibit this in many ways — versioning is just one. I will bet anything that there is not a single user, executive, or IT manager who understands this stuff, despite the fact that they are the ones with budget to buy. The last time I tried to explain that Java 6 was spelled JDK 1.6.0_0n, the person I was talking to laughed in my face and accused me of deliberately trying to confuse them.