Specifically, I would like to understand the difference between Oracle's JDK and OpenJDK in terms of bug fixes and other patches.
Which branch gets fixes first and is Oracle in a habit of making patches that never make it to OpenJDK?
java
Specifically, I would like to understand the difference between Oracle's JDK and OpenJDK in terms of bug fixes and other patches.
Which branch gets fixes first and is Oracle in a habit of making patches that never make it to OpenJDK?
Best Answer
This is explained in much details at OpenJDK page: JDK 7 Update Project Proposal Q & A
Per my reading, above essentially means that patches and updates will typically go first to Open JDK and then, with as small delay as possible, delivered in Oracle JDK.
For security patches, the picture seems to be opposite, ie I'd rather expect them to go first to Oracle releases and then (again, with as small delay as possible) to OpenJDK:
To better understand the reasons why there seem to be so much effort put into keeping Oracle and Open JDKs in sync, it makes sense to take a look at the Oracle decision on preceding project: Moving to OpenJDK as the official Java SE 7 Reference Implementation:
Above decision means a lot of effort to put into Open JDK code, to release officially verified, tested, licensed and compliant code. If you add that it has to be released following the agreed public schedule, it becomes obvious that such an effort will be about the same as previously was put into "traditional" Sun/Oracle Java releases.
This makes it only reasonable to keep Open and Oracle JDK code bases as close as possible: otherwise, duplication of development and fixes to make both projects compliant with TCK could become prohibitively daunting.
It looks like decision to use Open JDK as a Reference Implementation made it in the best interest of Oracle to keep their JDK as close as possible in sync with Open JDK - up to release of JDK 7.
To understand what could motivate Oracle to keep mentioned sync further, with JDK 7 update releases, one would better take a look at the Open JDK 8 project, which purpose is described pretty much similar to that of Open JDK 7:
For the same reasoning as was explained above regarding reference implementation of JDK 7, it is, again, in the best interest of Oracle to keep the updates of both JDKs as much in sync as possible.
The more differences would be between these JDKs now, the harder would it be for Oracle to release Java SE 8, due to duplication of efforts necessary to bring their own release into compliance with TCK. The opposite is also true, ie the closer both projects are going to be now, the less effort will be required to release both Java 8 implementations.
Did it ever happened to you to support in parallel two slightly different versions of the same software, targeted at different clients? If yes, you likely remember the desire to keep them both as close as possible, and the inconveniences you experienced when these were out of sync. With Open and Oracle JDKs, it is pretty much like that, only on a larger scale.