java-gnome 4.0.4 released!

This blog post is the release note from the NEWS file which you can read online … or in the sources, of course!

java-gnome 4.0.4 (26 Sep 2007)

Coverage increasing!

Most of our work continues to be on infrastructure and architecture, improving the code generator that outputs the translation Java layer and JNI C layer which allow bindings hackers to reach the underlying native libraries. Nevertheless, there have been a number of publicly visible improvements across the board, so we wanted to push out a release highlighting these contributions!

Documentation improvements

Continuing our effort to have extensive developer friendly tutorial style documentation, there have been major additions to a number of existing classes. Of particular note is the Window class, containing the various utility methods used to ask the window manager to do things for you (we’ve also started exposing some of the deeper parts of the GTK toolkit, though only a few things that were immediately related to window management).

While the topic of thread safety was discussed at considerable length in the last release, we have added some of the more relevant information to the code documentation to reinforce its importance.

New coverage

Numerous people have been hard at work developing new coverage. The standards for accepting patches which expose public API are high, so it’s awesome to see bundles accepted for being merged to mainline from new contributors Thomas Schmitz, Wouter Bolsterlee, and Nat Pryce.

The infrastructure for a number of areas important to supporting applications including Menus, Toolbars, and Actions has been put in place.

A number of Container related Widgets have been added, though coverage is preliminary. There have, of course, also been a number of minor improvements in other existing classes, miscellaneous constants and wrappers around the stock item identifiers.


Vreixo Formoso carried out an important refactoring to the type database and Generator family of classes in the code generator, with the result that more of the array passing and out-parameter cases are now being handled correctly. This kind of work is usually thankless and taken for granted, but it’s hugely appreciated!

The real gains are in internal quality. A number of serious bugs and limitations have been overcome (Glade is working again, for example). The generated code now guards against improper use (you can’t pass a null pointer unless it’s allowed by the underlying library). Related to this is handling of “GError” — Java side, bindings hackers will get GlibException which they can then re-throw as an appropriate Java Exception, say FileNotFoundException in the case of not being able to open a file.

This all goes along with numerous build system fixes by Srichand Pendyala to make for an increasingly robust project. Thanks guys!

Looking ahead

As mentioned above, we have mostly been focused on areas other than public API, but it is expanding steadily. The hard work on infrastructure, however, is starting to pay off, and the next release should include coverage of TreeView, GTK’s powerful but complex list Widget.

You can download java-gnome from or easily checkout a branch from mainline using Bazaar:

$ bzr branch bzr:// java-gnome

Note switch to bzr:// protocol.