The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


A Bundle of Joy - NOT.

Posted by cayhorstmann on August 2, 2007 at 10:48 AM PDT

bundle of joy movie When JDK 6 was released, there was a lot of buzz about the bundling of Derby, erm, JavaDB: buzz, buzz, buzz. Of course, there also was some bile. Programmer opinion was mixed. My personal feeling (recorded here for posterity) was “Doesn't the Java team have better things to do?”

But so what—once the deed was done, I felt that I might as well take advantage of the bundled database. In a couple of books, I suggested that readers download JDK 6 and put jdk/lib/db/derby.jar onto the classpath. The publisher of my college text developed a nifty tool for homework checking that is deployed with Java Web Start. It allows students to run sanity checks on their homework assignments, and it uploads the solutions and the results of the checks to the professor's gradebook. For database problems, it simply uses jdk/lib/db/derby.jar.

All was peachy until Java SE 6u2. (Don't get me going on the numbering...)

Now, out of a sudden, the rules have changed. According to Sun,

“This distribution bundles Java DB, Sun Microsystems' distribution of the Apache Derby pure Java database technology. Default installation locations are:

  • Solaris: /opt/SUNWjavadb
  • Linux : /opt/sun/javadb
  • Windows: C:\Program Files\Sun\JavaDB

The reality is a bit more complex.

On Linux, JavaDB is no longer included in the Sun JDK download. It may be that they hope that Ubuntu and others add it to their package, but Ubuntu doesn't even use the /opt directory.

On Windows, the installer charmingly continues making the jdk/lib/db directory, but it leaves it empty. Users can select where they want JavaDB installed (with C:\Program Files\Sun\JavaDB as the default). You can find their decision in the registry (HKLM\Sun Microsystems\JavaDB). Except that the uninstaller doesn't remove the registry entry, so you don't want to rely on it.

I have no idea what Apple does with their JDK for the Mac, but I would love to know.

The takeaway from this sorry episode is:

  • Don't rely on JDK users having JavaDB. They may or may not have it, and if they do, it is a nightmare to locate it.
  • If you write an article or book, just tell your readers to download Apache Derby.
  • The lesson from Sun's blunder is: Don't bundle unless (a) there is a truly pressing need and (b) you have the resources to do it right. A bungled bundle is worse than not bundling in the first place.
Comments
Comments are listed in date ascending order (oldest first)