The Source for Java Technology Collaboration
User: Password:



David Herron

David Herron's Blog

On the naming of Java releases

Posted by robogeek on August 01, 2007 at 12:04 PM | Comments (7)

J2EE or JEE, Java 5 or Java 1.5 - Is SUN Crazy?.. Maybe we are crazy, who knows. But it's not unknown in the history of marketing to have product name changes for various purposes. At OSCON last week one presentation was an overview of branding, and the presenter discussed how GTE (General Telephone) had a horrible reputation in the 60's, they realized it would take a generation or more of good behavior to fix that reputation, so instead they changed their name to Verizon.

I'm not sure who 'nitinpai' is but s/he is showering frustration upon the various names Sun's Java implementation has gone under. As an engineer I can only shake my head in bewilderment at some of the things Marketing has done. In this case it just makes me think of the naming changes from SunOS 4.x to Solaris 2.1, 2.2, etc, which eventually became Solaris 8, Solaris 9, Solaris 10, Solaris Developer Express, Solaris 11, etc.

In the beginning there was Java and all was good. Then there was Java2 (just be thankful it didn't become named Java2000). And now there's Java5, Java6, etc. What happened to Java3 and Java4? It's the same thing which happened to Solaris3, Solaris4, Solaris5, Solaris6?

And, this is not an unknown practice. Consider if you will the naming of Windows releases. I believe that Win2000 and WinXP and Windows Vista all have an underlying version of WinNT that you could think of as the "Engineering Version" versus the "Marketing Version". XP is the Marketing version of what Engineers might call Windows NT 6.x (if I've counted right).

JavaTM SE 6, Platform Name and Version Numbers discusses the thinking at the release of Java 6. This is the current definitive statement of how to interpolate the version numbering. The following links are presented as a history of prior forms of versioning Java.

J2SE Code Names is an out-of-date listing of the release version names and project code names.

J2SE SDK/JRE Version String Naming Convention gives you a decoder methodology to help decode the version numbering, except we aren't using that particular set of conventions right now.

Java SE Naming and Versions covers the naming changes which came with Java 6.

Version 1.5.0 or 5.0? discusses the thinking at the release of Java 5.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • What do you mean "what happened to Java 3 or Java 4?" I'm using Java 4 right now. I wish we could use Java 5. But the architecture group, or whatever group that gets to decide about such matters, hasn't approved it yet. So no auto-boxing, the foreach loop, or generics for now. Just plain old Java 4 features: classes and interfaces and what have you, for now.

    :)

    Posted by: weiqigao on August 01, 2007 at 02:44 PM

  • No, that's not Java 4, it's Java2 version 1.4.x. I've also been confused by these numbers, but finally I think I understand all of them from surface to core. Please point out if I got them right
    For a developer, it's very easy. All the released versions have been 1.x.x, sometimes with suffix "_xx", which means a patched version.
    For marketing versions, there are 4 eras:

    Before 1.2: the marketing version is the same as engineering version. I guess the marketing guys still haven't really pay attention to the new platform (or language, or ...)
    After 1.2: Marketing guys want to show that a brand new Java was born. Some people may call it next-generation Java or simply Java.NEXT, but the Sun guys decide on the Java 2 name, which means the 2nd generation of Java. Fortunately, the version numbers are still the same, and the engineering guys are happy.
    5.0: The 2 in Java 2 has been there for a long time and 1.5.0 has quite a lot of language-level changes, so I somehow believe the marketing guys may like to use the Java 3 name (just a guess). However, the engineering guys is starting to worry about if this looks silly and when the end will be. The legal guys come out at the right moment and announce that the "2" in "Java 2" is not a version number, but the whole "Java 2" is a trademark, and you just cannot invent new trademarks all the time. The engineering guys sneak in and says "why not just use 5.0? it's even bigger". The marketing guys happily accept this suggestion and forget about the "2". During the all-hands of engineers, it's announced that the reason to change 1.5.0 to 5.0 is because "Compatibility matters". Since the major version number is all about compatibility change (who said that?), so it will be 1 forever. Since it will be 1 forever, so there's no use to always write it there (because it conveys no information and 0 entropy). The engineers are happy.
    6: Several years later, people in the Java community are already using the word Java 5 and they are laughing about the "2" in Java 2. There are not a lot of eye-candy language improvements in the new version but the marketing guys think it's time to release one. They decide only a new name can make it look spectacular. The new name "J6SE" may be on the table but the legal guys repeat their old opinion that version numbers should not be messed into the trademark. Finally they choose the new version "Java SE 6.0" and ask if the engineering guys agree on it. Being tired of these nomenclature things, the engineering guys are reluctant to change it. Some of them still believe they should play a role inside the game, and they suggest "Java SE 6" because it looks clean and short, and the marketing guys are happy because that already sounds like a new trademark. Back on the all-hands of engineering guys, it's announced that the change from "6.0" to "6" means there will never be micro versions (I mean the 3rd number) later on because "Even micro compatibility matters". For the same reason the useless "0" should be removed, and the engineers are happy. (The secret is, there's not enough documentation guys for a real 1.5.1 release).

    Posted by: weijun on August 01, 2007 at 05:55 PM

  • @weiqigao: Java3 and Java4 never existed. There was Java2 for awhile, which the J2SE Code Names page lists as applying to 1.2.x, 1.3.x, 1.4.x and 1.5.x. The "2" was dropped along with going to Java 6. Weijun in his comment has a pretty good take on it. Except that for 5.0 we decided to drop the "dot-dot" releases. The dot-dot releases refer to x.y.z (such as 1.4.2) where our rules said we could do both bug fixes and minor features but nothing that changed any interfaces. The current model is to only do major releases ("5", "6") and to do update releases containing primarily bug fixes (6u1, 6u2, ...). A 6u2 can also be called 1.6.0_02, I think.

    Posted by: robogeek on August 01, 2007 at 07:16 PM

  • Ok, ok, I understand all the explanations. After all, I started using Java when the development kit was called the JDK the first time around. And then they stopped calling it the JDK before they called it the JDK again.

    My use of "Java 4" may not be accurate according to Sun marketing, but it does get the point across with less words. Witness the first sentence of weijun's response: "... it's Java 2 version 1.4.x." He knows exactly what I'm referring to. So does every other Java programmer I encountered.

    Posted by: weiqigao on August 02, 2007 at 04:33 AM

  • http://weblogs.java.net/blog/cayhorstmann/archive/2007/07/number_melancho.html

    Posted by: cayhorstmann on August 02, 2007 at 10:01 AM

  • Let's call the next release JaveME2! in honour of all the "features" added under the reasoning of "Ruby has it so Java should have it too, the Me2! argument for wanting something"...
    It would be honest, and marketing always loves such expressive names.

    Posted by: jwenting on August 02, 2007 at 10:31 PM

  • Maybe we are crazy,
    Yes, Sun is. Period.
    who knows.
    You customers know. I have first-hand witnessed the version number chaos Sun created with the Workshop C/C++ compiler and the "IDE" ("IDE" in quotes, because it hardly qualified as one). Oh, you don't know what that Workshop is/was? No wounder. The compiler and IDE was also named "Pro", "Forte", "Sun ONE", and "Sun Studio". Not necessarily in that order. And of course Workshop version x.y included a compiler version x'.y' with x' ≤ x and y - 3 < y' < y

    And your list of Solaris versions excluded Solaris 1. Yep, Sun marketing at one time talked about Solaris 1. It was just an attempt to retroactively rebrand SunOS 4.1 (or the like, forgot the exact minor number). It never catched on with customers and finally fell apart when it turned out that that SunOS wasn't the last SunOS version.

    Did someone already rant about the usage of "b" and "u" letters in the release numbers? "b" equals beta, right? Wrong! It means build. But it is indeed not a build number as MS has teached us. No, it is just the tiny part of the version number, only that Sun now sets the real tiny part always to zero and attaches a forth level, the "build" level, too. And the "u"? That's again the build number. Why "u"? Because "u" is the second letter in "build"? No, because when Sun talks about a build they actually mean "update".

    See kids, this happens when marketing people are bored. Keep them busy or keep them away from your version numbers.

    Posted by: twe on August 03, 2007 at 05:06 AM



Only logged in users may post comments. Login Here.


Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds