«« Thornley at Capital Music Hall, Ottawa What's Up, Doc? »»
blog header image
Write Once, Don't Run on Linux

I'm having an interesting problem with the daily builds of AudioMan. For now AudioMan is only meant to run on Java for Windows, but is built with Java for Windows or Linux on my build machine. This isn't a problem because both SDKs (javac) produce the same bytecode, right?

It's not a problem until you try to test it. On Windows and Mac OS X the AudioMan test suite passes 100%. The Windows JVM I use is from Sun and the Mac JVM I use is from Apple. The Linux JVM is also from Sun and out of 899 tests, 9 of AudioMan's tests are failing for a variety of reasons -- mostly related to files, OS specific. See the builds page for the JUnit test results and errors.

If you look at the code provided with Java, you'll see that many of the clases are shared between platforms. Only the classes that have OS-dependent idiosyncracies are implemented for each platform, like the File class.

My problem really puts a damper on the "write once, run anywhere" mantra, doesn't it? It's the same reason why people dump on SWT: the implementations, though they use the same API, are developed independently. Given the size of the API, there are bound to be inconsistencies in those implementations -- and bugs, don't forget those. Even worse, different bugs between implementations of the JVM over different platforms.

Even with these problems, can you see it being done another way?

Posted at June 01, 2004 at 07:37 AM EST
Last updated June 01, 2004 at 07:37 AM EST
Comments
Google
 
Search scope: Web ryanlowe.ca