X
Business

Oracle rebrands Java, breaks Eclipse

Earlier this month, Oracle released a new version of Java, 1.6.0_21 (6u21). Unfortunately as Eclipse users quickly discovered, it was incompatible with Eclipse and Eclipse Rich Client Platform (RCP) programs.
Written by Ed Burnette, Contributor

Earlier this month, Oracle released a new version of Java, 1.6.0_21 (also called 6u21). Unfortunately as Eclipse users quickly discovered, it was incompatible with Eclipse and Eclipse Rich Client Platform (RCP) programs.

Bug 319514 in the Eclipse bug database has all the gory details, but in a nutshell, Oracle changed the company name property on java.exe from "Sun Microsystems, Inc" to "Oracle". The change was not announced or documented in the release notes. Ironically, Eclipse has been using this value since 2007 to work around another Java problem where Sun's default for the "MaxPermSize" option was too small for Eclipse to run. When it changed, the workaround no longer worked, and many people encountered "PermGen" errors when they started Eclipse.

Oracle responded by respinning 6u21 on Monday to restore the value, but warned that it will be changed for good in JDK 7. A company developer wrote:

As part of Oracle's rebranding of Sun's products, the Company Name property of the java.exe file, the executable file containing Oracle's JRE for Windows, was updated from "Sun Microsystems" to "Oracle" in Java SE 6u21.

After the updated JRE was posted on java.sun.com, it was reported that the change affected Eclipse users on Windows by causing it to hang when starting Eclipse after updating to the rebranded JRE. A workaround was quickly identified and posted on Eclipse's website, but a wide distribution of the rebranded JRE executable could negatively impact many Eclipse users. In consideration to Eclipse and other potentially affected users, Oracle has restored the Windows Company Name property value to "Sun Microsystems". This value will be changed to "Oracle" in JDK 7.

The change affected only the Windows version of the JRE, not the versions for Solaris and Linux. To accommodate this update the Windows build version will increase from 6u21-b06 to 6u21-b07. Solaris and Linux distributions will continue to ship build 6u21-b06.

An engineering side note: The "Java" property values for java.vendor and java.vm.vendor were never changed in the jdk6 releases and will remain "Sun Microsystems, Inc.". It was understood that changing the vendor property values could impact applications and we purposely did not disturb these vendor properties. The Windows specific exe/dll file "COMPANY" value is what is at issue here, not the Java properties. It came as a surprise to us that anyone would be inspecting or depending on the value of this very platform specific field. Regardless, we will restore the COMPANY field in the jdk6 releases. Note that the jdk7 releases will eventually be changing to Oracle, including the java.vendor and java.vm.vendor properties.

This morning I verified that the official Oracle download site has been updated with the correct version and that it works with Eclipse. Here's what it prints when I run java -version:

C:\> java -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b07) Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)

If you downloaded Java for Windows 32-bit or 64-bit recently, be sure you have the 1.6.0_21-b07 version and not b06.

Editorial standards