Is Java 5.0 a brand name or a version number?

I'm trying to figure out what to call the new version of Java when it comes out this fall. Will Java 5 catch on, or will everyone except Sun and maybe book publishers call it Java 1.5?

I initially thought 1.5 would win, thinking the 5 was a marketing name, like when "Java 2" came out in 1998. But maybe Sun is taking the 5 more seriously as a true version number. Here's why this might be the case.

The official name of the new Java, as unveiled last month at JavaOne, will be "Java 2 Platform Standard Edition 5.0." See that? It's Java 2 5.0, not Java 5. It's the dot (full-stop, period, or whatever you call it) after the 5 that's making me think the name might be a real version number rather than a marketing name.

Before Sun released Java 1.2 on Dec. 8, 1998, it had re-branded the name as "Java 2" and called it something like the "Java 2 Platform, Standard Edition." But I don't think Sun ever said Java 1.2 would be called Java 2.0. Then, when versions 1.3 and 1.4 came out, the name was still Java 2 Platform Standard Edition, but with the version numbers attached.

With Java 1.5, Sun seems to be pushing the "5.0" brand as a version number, as if the next release will be 5.1. And it looks like they have to, because they're still using the "Java 2" brand in the name. I.e. this next version (Tiger) won't be called "Java 5 Standard Edition" version 1.5. It's Java 2, 5.0.

Anyone have any scoop on this from Sun? Is 5.0 a real version number rather than a marketing name? If you look at the J2SE page at Sun, there's a mixture of calling the new version of Java "5" and "5.0" -- i.e. a marketing name and a [marketing mame that sounds like a?] version number. The download for the beta is called "J2SE 5.0 Beta 2," so the "5.0" is sure starting to look like a version number. But then the URL to the "J2SE 5.0 Beta 2" page has 1.5.0 in it,

So far, though, the beta versions of the JDK are still calling themselves 1.5. If you run this code with the 1.5 beta:

public class VersionInfo {
public static void main(String[] args) {
"java.version=" +
"java.vm.specification.version=" +
"java.vm.version=" +
"java.specification.version=" +

you get:


So is 5.0 a version number or a brand name? Will the final release of Tiger show java.specification.version=5.0?

2 thoughts on “Is Java 5.0 a brand name or a version number?

  1. Sun said in a CAP email that some 1.5.0’s will be kept around for backwards compatibility, like those in java.version.

  2. As an author of books about Java, I’m wondering exactly the same thing myself.

    Sun was supposed to release a FAQ about the 5.0 number to explain this to us. It didn’t seem to come out at JavaOne, and I haven’t seen it. I don’t buy the “backward compatiblity” argument that Keith mentions above (but I have heard that excuse from Sun as well). Lack of time would seem realistic, however. I could easily believe that by the time the 5.0 number was decided on the engineers didn’t have time to eradicate all references to 1.5. In addition to the system properties you highlight, it is still in the -version argument to java, and the -source argument (and probably -target, too) arguments to javac accept 1.5, but not 5.0. And of course 1.5 is scattered throughout the javadoc in @since tags.

    I asked a senior Sun engineer which number he thought would stick and he responded “both will stick, and it will create a mess”.

    Finally, I think I detect (but have absolutely zero knowledge of) some teritoriality going on. The marketing folks say “call it 5.0” and the engineers say “screw you”. It would hardly take any time to change the java.specification.version to 5.0, for example, and retaining an old version number for “backward compatibility” makes no sense. On the other hand, this is hardly the kind of change you’d want to make after beta 2 has been released. By keeping the 5.0 decision a surprise for JavaOne, Sun limited the amount of time they’d have to actually implement the decision.

    And finally, no discussion of Java 5.0 is complete without pointing out that they wouldn’t be in this mess if not for the “Java 2” marketing fiasco. If they hadn’t done that, then this would simply be Java 2.0. and there’d be no confusion.

Comments are closed.