Older blog entries for mjw (starting at number 37)

10 May 2005 (updated 10 May 2005 at 19:20 UTC) »
How to take the fun out of someones achievement

Uraeus post made me sad. It was an hectic week, but is seems our Harmony effort is already a success. planet.classpath.org saw a record number of visitors, the irc channel has been full of interested people and after some discussions back and forth it seems that everybody agrees that whatever happens next it will be a good thing for the whole community. I would love to meet my new harmony friends at ApacheCon Europe next month or meet some of the current GNU Classpath hackers at LinuxTag (during which cbj announced that I would be the new maintainer two years ago). But I decided instead to go to Guadec. I saved my last money to pay for the trip, stay and entrance fee (!). Just because I wanted to see all the cool presentations about Gnome using gcj, GNU Classpath, Eclipse and java-gnome. And to learn how to better integrate our AWT, Swing and Graphics libraries with gtk+, cairo, pango and the rest of the Gnome platform. But it seems that it is time to stop kidding ourselves that we will enhance the Gnome desktop with our efforts. Sigh.

GCC 4.0 RC1

GCC 4.0 has been frozen and a GCC 4.0 RC1 is available. Please test and report bugs/regressions.

planet.classpath.org back in the air

As soon as all the DNS servers have been updated planet.classpath.org should be back again for your reading pleasure. Sorry for the interruption. A mirror can be found at developer.classpath.org if you are impatient.

30 Mar 2005 (updated 31 Mar 2005 at 00:37 UTC) »

Sad to see Ranjit struggling with non-free proprietary software while there is so much Free Software available to help with what he is trying to accomplish.

GNU Classpath class documentation currently only comes in HTML. But is generated using gjdoc which can also generate texinfo or raw xml. From that you can generate info, docbook, pdf, etc. Evince is just the GNOME frontend for the new freedesktop Poppler pdf renderer used by both the GNOME and KDE hackers. It is under active development. Netx a free JNLP implementation that just works with GNU Classpath based execution engines:

/usr/local/gcc40/bin/gij -jar netx-0.5.jar -jnlp http://www.acm.vt.edu/~jmaxwell/dvorak/Compare.jnlp
19 Feb 2005 (updated 19 Feb 2005 at 03:01 UTC) »
Escape the Java Trap!

The official program for Escape the Java Trap! is finally ready.

You are very welcome to join us and learn about the IKVM architecture and how to freely mix and match traditional java and .net applications and libraries, how GNU and Apache developers can and should work together, how you can do rapid GNOME desktop development through java-gnome, how researchers are using GNU Classpath to do cutting edge research into Just In Time compilation, see demonstrations of lightning fast native eclipse and jonas, learn what will be possible with GNU Classpath and GCC 4.0, whether Kaffe will ever release their version 1.1.5, what we think about compatibility, freedom vs control and learn how you can create your own GNU Compiler Collection frontend for languages such as the 1.5 java programming language.

Everybody is really excited about the event this year. A very big thanks to Fosdem for hosting us the weekend of 26 and 27 February in Brussels, Belgium. I think we have a very nice list of speakers. And there will be lots of very interesting announcements and demos. See the full program list and talk abstracts.

Please add your name to the list if you will be there.

1 Oct 2004 (updated 2 Oct 2004 at 09:54 UTC) »

When advogato was down a couple of months ago I moved my diary to my own site. Which also hosts Planet Classpath. I should probably try to cross post my dairy on advogato since it is a nice community.


Saw that rbultje had some trouble with GNU gcj. It is always painful to see someones first steps with one of your projects be so hard. Especially since he hit a long standing usability bug. The solution to your problem was to do:

cd ..
gcj -o myapp application/*.java --main=application.Application
But that probably only makes sense if you know a little bit more about how gcj (and java in general) puts modules (packages) in directories, but uses dot (.) in source files or when indicating classes in a package on the command line.

Not being able to find the GTK+ AWT libraries is strange though. If you installed gcc yourself then you need to configure with --enable-java-awt=gtk, --enable-java-awt=xlib for the pure xlib version or, if you want both, --enable-java-awt=gtk,xlib. Normally distributions do already ship packages like this. If you are using Debian unstable then please note that the current libgcj5-awt package is broken in testing/sarge. This should be solved by the package in unstable that hopefully enters testing before the freeze.

Please send an email to the mailinglist if you have trouble with gcj. Or drop by on #gcj on irc.oftc.net. There are always people there that might be able to help and get you through your first steps in a couple of minutes. You don't have to spend hours struggling on your own.

Kaffe, can you say AWT?

robilad is a human merging machine :) He actually integrated the work of jserv and saugart which means that Kaffe OpenVM now has three AWT backends (QT, X and GTK+). This should also make Kaffe useable for hacking on GNU Classpath's AWT and Swing implementations.

And just to add to the free AWT/Swing UI fun graydon prepared the "monthly merge":

  • AWT lists use GTK treeviews
  • proper AWT focus management has been implemented
  • swing menus and scrollpanes are beginning to work
  • swing splitpanes, dialogs and internal frames were added
  • swing repainting / double buffering was redone
  • a lot of AWT imaging and event bugs have been picked out


23 May 2004 (updated 23 May 2004 at 17:35 UTC) »
GNU Classpath, JamVM and Eclipse

When Robert released the latest JamVM 1.1.4 his release notes just said:

  • JNI enhancements introduced in Java 1.2 implemented.
  • Updated to use GNU Classpath 0.09.
  • [...Some build infrastructure improvements...]
  • Minor bug-fixes and speed optimisations.
  • Eclipse now starts up.
Note that last little point. Eclipse is a huge complex application (suite) that tests most of the runtime and library facilities. When a java-like runtime is able to provide the execution environment for such a large project it is a sign that the project has matured and can be used for some serious work. I am really excited about this "little" break-through. Of course GNU gcj, Kaffe OpenVM, Jikes RVM and ikvm.net already could be used as alternative execution environments for Eclipse. But JamVM is the first "pure GNU Classpath runtime" that does it which is also really easy to install. All the other runtimes have larger or smaller hacks (mainly to some of the native or vm specific code) and/or are not that easy to install (need another VM or .net environment to be bootstrapped for example). JamVM does it without any JamVM specific GNU Classpath hacks and only depends on GNU Classpath and a simple C compiler. So this also proofs that GNU Classpath itself is pretty mature and usable out of the box.

We are not completely there yet though. Playing a bit with it shows some obvious bugs in our code. There seems to be some nasty with the serialization code that I cannot pinpoint. Runtime.exec() seems to have some strange issues passing some environment variables (like PATH), VMProcess had a bug that Process.wait() wouldn't work reliable (fixed in CVS) and ResourceBundle doesn't always seem to be working with the correct classloader. So still lots of stuff to hack on. But now that we are able to run this huge test suite (some call it an IDE) out of the box it will be easy to finally fix those issues once and for all. And hopefully in a generic way that can be used for all runtimes based on GNU Classpath.

If you want to play with it just install GNU Classpath 0.09, JamVM 1.1.4 and Eclipse 2.1 (gtk+). And do:

PATH=.:$PATH ./eclipse -vm /usr/local/jamvm/bin/jamvm -verbose -consoleLog -vmargs -mx256M -ms256M
killall eclipse (or CTRL-C if you don't have your prompt back after 20 seconds)
rm workspace/.metadata/.registry
PATH=.:$PATH ./eclipse -vm /usr/local/jamvm/bin/jamvm -verbose -consoleLog -vmargs -mx256M -ms256M

[Update: If debugging GNU Classpath itself isn't your main goal but you just want a working free eclipse I would recommend native eclipse (eclipse compiled with gcj to a collection of native libraries). It works out of the box on Red Hat systems and when using alien to convert the rpms you can get it working on Debian systems also. You can even use it for hacking the GNU Classpath sources]

Lucene, gcj and python

Deep in a thread about using gcj as a portable way to write programs on different architectures someone mentioned PyLucene, a python integration of Lucene (a full-featured text search engine library written in java), using gcj and SWIG. Which is a really nice showcase for what is possible with GNU gcj. It is used and developed by the OSAF for Chandler which is mostly written in Python.

When submitting the integration to the Lucene project Andi Vajda said:

Yes, I took a look at Lupy [python port of Lucene]. It claims to be 10 times slower than the java version. There is also a C++ port of Lucene, which would have been simpler to integrate, but it comes with its own set of bugs. And of course, each port is behind.

Which is why the fact that GNU gcj could be used to combine java source with Python (through Swig) is so nice. It (partly) solves having to rewrite something in another programming language just to integrate it into a larger project that has a different language preference.

21 May 2004 (updated 21 May 2004 at 17:55 UTC) »
GTK+ AWT peers now on Kaffe

Thanks to the hard work of saugart and jserv (and of course the GNU gcj hackers who worked so hard on the actual AWT peers) Kaffe can now also use the GNU Classpath GTK+ AWT peer implementation (see the announcement, including sweet screenshots).

This is really nice since it brings GNU Classpath and Kaffe OpenVM closer together. And as always when a new set of people start using a piece of free code in new and unexpected ways we found (and fixed!) some bugs (just minutes after the integration). This will really be a boost for the project because it exposes much more people and programs to the code. And it will be the start of the Free Swing integration into Kaffe.

Hacking on KDE with gcj for fun

Helped Boudewijn Rempt recently with getting kde/qtjava working with GNU gcj. It was really fun. And all it took was about three minutes. One to get us a traditional byte code interpreted version with gij. One to get us a complete monolitic native program. And finally another one to split it up in a reusable native shared library ready for linking with other programs. He made a little Creating `native' Qt applications with Java tutorial out of it. What was really nice was that his SUSE 9.1 box came with everything ready to hack in standard packages. Richard Dale made some additional observations which are also nice to read.

The only thing I need to clarify is this comment that Boudewijn made: "Mark Wielaard tells me that for every JNI call, gij is called to generate some bytecode, which is then executed. Things could be faster, he tells me." Which is not correct. JNI is not as fast as CNI, which we prefer to use with gcj specific code, but it is fast enough for this use. It doesn't need to generate extra byte code that needs to be interpreted. What I had wanted to say was that the KDE java bindings use a lot of java.lang.reflect.Proxys. These are currently implemented by creating on the fly byte code that then needs to go through the byte code interpreter. The framework for replacing this with direct native code is there, we just need an interested hacker to write it and wire it up to the rest of the gcj runtime. It is a nice little challenge for someone that want to dive into the gcj runtime.

28 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!