Why do XX and YY in JDK6 uXX and OpenJDK6 bYY differ?

This question seems to get asked fairly frequently and since there is no page clearly explaining this, here is one!

At the time of writing this, the latest version of JDK6 (the proprietary Oracle version) is u25. The latest OpenJDK6 release right now is b22. So what is going on? Why is OpenJDK6 so far behind JDK6? Well, it is not.

The uXX numbering for the proprietary JDK is completely unrelated to the bYY releases of OpenJDK and any comparison of the two is meaningless. This image (taken from my RedHat Summit 2011 slides) explains how OpenJDK6 came into being:

JDK and OpenJDK relationships

The filled arrows going between JDK7 and OpenJDK7 indicate that the two sources are very similar (about 95% according to the last heard count). The empty arrows between OpenJDK7 and OpenJDK6 indicate backports.

OpenJDK6 was created from OpenJDK7 by removing Java 7 specific items from the code. Development of OpenJDK6 today largely consists of backporting fixes from OpenJDK7 and keeping security fixes up-to-date.

In terms of bug fixes, a comparison is not easily possible because the code bases differ and a bug that manifests in JDK6 may not manifest in OpenJDK6 and vice versa. OpenJDK6 bugs are fixed as they are encountered/reported.

In terms of features, JDK6 is in maintenance mode and therefore does not add features in its updates. The same applies to OpenJDK6. If any feature/API change were to be made to JDK6 in the future, OpenJDK6 would follow suite accordingly.

So the next time you see a higher update number of _either_ of JDK6 or OpenJDK6, promptly ignore it because it is like comparing apples and oranges šŸ™‚


About dbhole

I have been a member of the Java Group at Red Hat since mid-2008. I started off as an engineer and in late 2012, I switched to the dark side, a.k.a management :) I now manage all the members in the Java Group and some members from the QE team dedicated to JDK/component related QE.
This entry was posted in IcedTea, Java. Bookmark the permalink.

2 Responses to Why do XX and YY in JDK6 uXX and OpenJDK6 bYY differ?

  1. Kris Mok says:

    I made a table that shows the correspondence of Oracle JDK and OpenJDK versions, according to the version of the HotSpot VM in them. This table doesn’t reflect differences in the JDK class libraries, just the VM, because that’s the part I’m interested in.

  2. KELLY OHAIR says:

    Just FYI…
    Historically the bNN numbers are “Build Numbers” and represent unique builds of a product by the Release Engineering people, sometimes these are referred to as “Promoted Builds”, if there is a formal process for declaring them “Promoted” (testing etc.). They normally happen weekly, bi-weekly, or on some schedule, or maybe on no schedule at all. After the build promotion, the source repositories would be tagged with something like jdk7-b133.
    The uNN numbers are “Update Numbers” and are updates to a release. There are build numbers for Update releases too, so you could see something like jdk6u26 b03.
    With OpenJDK, the bNN was kind of like a Build Promotion, but more light weight. The sources were the primary deliverable, and all repositories would get tagged at each bNN with a jdk6-bNN tag.
    So I view Update numbers as more of a release name, and Build numbers as a reference to a specific build and source state for that release.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s