Skip to main content

IcedTea passed the TCK - implications for (desktop) developers?

Posted by fabriziogiudici on June 19, 2008 at 8:23 AM PDT

Rich Sharples is blogging about the fact that IcedTea passed the TCK (via Heiko W. Rupp); Fedora 9 is the first Linux distribution to carry a completely free and unencumbered version of Java

It's an important milestone of the open sourcing of Java initiated by Sun, excellent news. Now, my doubts as a developer :-) What will happen in other Linux distributions? I'm thinking about how should I test and deploy a desktop application to Linux. While it's true that passing the TCK is a very strong assurance about the compatibility, this doesn't exclude that my application could trigger a bug in Sun's JDK and not in ICedTea, or vice-versa. And I know that in some areas, imaging for instance (where I believe there has been some encumbered code replacement) different coding approaches can show dramatic differences in performance. In other words, I think that unfortunately I have to test for each target JRE. At this point, I'd strongly prefer to see IcedTea on Ubuntu and other Linuxes too (and possibly OpenSolaris?), so my testing costs would be reduced. Will it happen? And more generally, what do you think about the impact on your deployment now that we're having multiple Java runtimes out there?


It's an unfortunate condition, but it's nothing new. The write once, run anywhere promise has always been problematic on the desktop. Witness that even on Windows, most of the popular Java Swing desktop programs (Azuresus bittorrent, Aquadata DB client, etc) bundle a specific JRE version under their directory tree. I'm hoping that someday we'll come to rely on a stable preinstalled jre, but the cynic in me says that the opportunity has passed. The best to hope for now is that the jre can become thin enough that having multiple runtimes installed is not a terrible burden.

"You're comfortable with their being different implementations from BEA, IBM, HP, Azul which likely significantly converge away from Sun's code base"

I'm _not_ comfortable with them, in the sense that I've never used nor tested my applications with anything else than Sun's JDK. Before yesterday I didn't had any problem, since my packaging for Ubuntu puts Sun's JDK as a dependency (my choice, after all you don't have any pre-installed Java with Ubuntu and given that you're potentially asking the user to install it, you can arbitrarily choose which one to use). Now things change since it appears that OpenJDK will be the preferred one (and I suppose pre-installed), and some user could complain if during the installation they find I'm forcing the installation of another JDK.

Well you would have the same problem with IBM's JVM right? For a while out of the box Linux Java support was GCJ. At least this is mostly the same as Suns JDK. Also I would not worry about proliferation to other Linux distributions. These things tend to get repackaged quickly. The OpenSolaris port is an interesting idea. I wouldn't be surprised to see a BSD port in the future, or even a Cygwin port to Windows.

exactly Fabrizio, the leak of synchronization of efforts between different distributions will sooner or later lead into incompatibilities between them. And its not only about features what I fear far more are the bug fixes... the other thing what is not quite transparent for me is how the contribution process between update10 and openjdk6 works? There is a difference of 16builds and the gap is growing.

I don't follow the logic. You're comfortable with their being different implementations from BEA, IBM, HP, Azul which likely significantly converge away from Sun's code base; but you're not OK with the Fedora 9 OpenJDK which uses 96-99% of the same code and will likely (over time) be the same. I can't imagine why any other Linux distro (or anyone for that matter) wouldn't largely or completely base their next jdk on OpenJDK and the work done in IcedTea (which will hopefully be the same over time) Rich

I'm not sure the runtime extras like javaws and especially the 6.0u10 enhancements have been released under OpenJDK either. So certainly not all runtimes are made equal (the choice of browser and version is also critical in some cases). This isn't really any different to the OSX position of having to wait for Apple to catch-up. But the lack of a truly standard platform makes life hard for desktop developers. Saying that not having the runtime pre-installed is even worse so yay whoo for all the IcedTea efforts.

Being not preinstalled might not be a problem. For instance, on .deb systems it's not really a problem: you just need to declare the dependency on the JRE and it will get downloaded and installed automatically with your application (which could be an answer to my question: if they make IcedTea available in all standard repositories, perhaps everybody can just choose which runtime to use with his application).