PR and technology progress


Sven de Marothy made it on LugRadio. He describes his experiences on the GNU Classpath mailinglist. It is interesting to see how these things work. I was mainly surprized about how the interviewers wanted it to be some fight between mono and GNU Classpath. While in reality mono is of course just one of the execution environments for GNU Classpath based programs through IKVM. They did reach an interesting conclusion though. There is so much free software out there written in the java programming language and GNU Classpath based compilers/runtimes like gcj can now support so many millions lines of code like eclipse, jonas, jakarta, etc that it is a very safe and solid choice to build upon (or as Sascha would say “it is the cobol of this millennium”, but that doesn’t sound as sexy).


Normally I avoid introducing all the runtimes based on GNU Classpath since it seems to confuse non-core developers (see the above interview with Sven). People seem to be scared of choice. But the recent improvements of JCVM are impressive and drive home the point why we are better of with Free Software and the freedom of exploring various different execution models for free software.

JCVM has sometimes been described as a “poor man’s gcj” since it is a ahead of time compiler generating native code, but can only compile from .class files and actually generates C source files, not object code. It isn’t a “real” compiler like gcj which is embedded into the GNU Compiler Collection GCC, and uses the GCC framework to do most of its optimisations. JCVM optimizes the byte code and transforms them into C source files and lets gcc optimize the C source files which produces the ELF object files. Surprizingly (at least to me) this sometimes generates much faster code then gcj does. As seen by some optimization experiments done by Tzvetan Mikov. It will be interesting to see when such improvements will be carried over to GCC or other compiler frameworks.

If you haven’t read it, and you are interested in the issues and challenges of creating a execution model for programs written in the java programming language then you should read the JCVM Manual. It has a lot of very interesting low level details in it.