An application developer reports that the latest Java 7 update "silently" deletes Java 6, breaking applications in the process.
Java 7 update 11 was released two weeks ago to deal with an unpatched vulnerability which had gone mainstream with its incorporation into cybercrook toolkits such as the Blackhole Exploit Kit in the days beforehand. Attacks were restricted to systems running Java browser add-ons.
But Oracle's response appears to have caused some collateral damage.
JNBridge, which provides Java and .NET interoperability tools, reports that customers of software providers who use its technology came a cropper in cases where users had applied the latest Java update (Java 7u11). The software developer blogged about the issue here.
Oracle has decided that, in order to fix extensively reported security problems, they will not only update Java 7 (their latest version of Java), they will also completely delete a completely separate product.
Worse, it appears that they are taking it upon themselves to replace installations of Java 6 with Java 7 even if the users have only Java 6 on their machines.
We followed up with Wayne Citrin, chief technology officer at JNBridge, who shed some light on the practical issues created by Oracle's recent Java update. "We provide a Java/.NET bridge, and one of the interoperability mechanisms allows the .NET and Java to run in the same process," Citrin explained. "To do this, the user needs to supply the absolute path to the jvm.dll file belonging to the JRE that they plan to use.
"The customer, an ISV that uses our product, and who uses Java 6, told us that several of their customers had updated their Java 7 and our customer’s product had stopped working. When they reconfigured our product to use Java 7’s jvm.dll, things started working again. They wanted to know whether our product had problems with the latest update to Java 7. That seemed strange to us because the customer’s product wasn’t using Java 7 (and in any case we work just fine with Java 7). Our researchers showed that the problem was that Java 6 had been removed."
Citrin added that the problem isn't directly related to Oracle decision to change Java security settings to "high" by default with the release of Java 7 update 11. "I don't think it directly relates to the Java 6 removal, though. It does affect running of Java in browsers, which I think is a good safeguard," he explained.
While consumers ought to be running the latest version of Java, the situation is more complicated in enterprise environments. "There are definitely ISVs shipping code that runs on older versions of Java (our customer's product was running on Java 6 r32, for example), which means that there are users that will want to have the old versions around," Citrin explained. "And there are developers (like us, and our aforementioned ISV customer) who will need the old versions around for development and support purposes. But I agree that it's not "normal" - most casual users of Java can probably get away with just the latest version of Java 7."
Citrin said JNBridge, at least, hadn't run into similar problems with prior Java updates. "Oracle's web notice said that the same thing happened with Java 5 at some point when Java 6 was updated, but I can't recall Java 5 disappearing, and neither can any of our developers," he said, adding that irrespective of its security problems, Java 6 is still widely deployed.
Andrew Storms, director of security operations for nCircle, said that Oracle's security update shouldn't be interfering with - much less removing - older versions of Java.
"The issue isn’t whether Oracle continues to support legacy products or not. The question is how the Java 7 update behaves when it finds older versions of Java. If they are removed as part of the update process, it could easily render other applications unusable," Storms explained.
Oracle's lack of communication compounds the apparent problem, Storms added.
"For many applications, Java acts like an application library vendors rely on – they need Java to perform as expected in order for their products to function correctly. What would happen if Microsoft automatically removed .NET version 3 when the user installed a security update to .NET version 4?
"At an absolute minimum, users should be notified before they update that if an older version of Java is found it will be removed. Removing it without offering the user clear communication about the impact of the update appears to be extremely short-sighted and seems to reveal a serious lack of understanding regarding how businesses employ Java," he concluded.
The Register contacted Oracle about the issue but it had not yet responded at the time of publishing. ®