Monday, August 1, 2011

Why Java 7's hotspot bug is a bad bug

I'm responding partly to Alex Blewitt's article in which he downplays the severity of the Hotspot bug exhibited in Java 7.

First of all, I think that in principle he may have a good point: previous Java releases have exhibited bugs which are arguably just as severe if not more so, there has been a temporary workaround, and they have been fixed and the world has carried on ticking. It's also true that any critical application upgrading to Java 7, as with any major upgrade of a key system component, would be mad not to have a regression plan should the proverbial shit hit the fan.

Where I disagree with downplaying this bug is that I believe the problem is largely one of process rather than the substance of the actual bug:

  • this is the first major release of Java since Oracle took over stewardship of the Java language: eyes were on them to see how they would handle it;
  • this is the first major release since the departure of various key ex-Sun employees;
  • the bug(s) in question were reported before the release and were exhibited by code present in the experimental stage in releases of Java 6 (or to paraphrase: "if the fix for that known serious-sounding bug wasn't tested properly, then what else wasn't tested properly?");
  • the precise circumstances under which the bug(s) exhibited themselves were not clearly published, let alone by Oracle;
  • without knowing the details, a vague birds-eye view of the problem (a "bug with JIT-compiling nested loops") sounds like a bug in a fundamental function of the JVM that you would ideally want to work reliably 100% of the time.

Alex Blewitt takes the view that: "since Java 7 has only just been released it would be unlikely to be used in production environments yet". I don't buy this view. If this is an alpha release, then call it an alpha release. But if your position is that you are making a "release", then that quite reasonably means "this is a version that has been through rigorous testing which I believe is suitable for use in production environments". Let's not flannel our way out of this: it was a cock-up.

If I were using Oracle Database for any critical applications, I would certainly now be looking for some reassurance that they take the testing and release procedure of their database products more seriously than they do Java...

No comments: