We are proud to announce the release of GNU Classpath 0.93 "Dreamland"
Read on for highlights of new features in this release, pointers to
supported applications and screenshots, the status and future of the
1.4 and 1.5 generics branches. An update on the Summer of Code
student work. Plus some prelimenary ideas on cooperating with the Sun
GPL OpenJDK Java project. And the GNU Classpath commitments to the
Free Software community for the future of various projects around GNU
Classpath, the users and GNU/Linux distros relying on our work.
Highlights of new features in this release (more extensive list below):
NIO Selector epoll (linux 2.6 kernel) and kio (BSD and Darwin)
notification mechanisms added. Fast, direct call, support for in
runtime CORBA objects. Support for user JNDI context factories (plus
corbaname: and rmi: jndi urls). New javah tool included. JSSE
SSLEngine support including TLSv1.1 and pre-shared key ciphersuites.
Full lang.management MX Beans ManagementFactory implementation.
99.95% api coverage for 1.4, 95.5% api coverage for 1.5. Much
better swing HTML support (aka JGecko). Graphics2D on cairo speedups
and make it respects interpolation hints, better gradient
support and custom Composites and Paints.
Screenshots of applications (eclipse, jedit, jfreechart, "jgecko",
statcvs.png) working out of the box with GNU Classpath 0.93 can be
With this release our 1.4 library work is 99.95 API complete.
Although this doesn't mean GNU Classpath is fully compatible and a
perfect drop in replacement for proprietary 1.4 JDKs yet, it is pretty
close and any divergence should be considered a bug. Our 1.5 library
work is now 95.5% API complete.
This is the last release that will have two separate library releases
for 1.4 and 1.5. The next release will be based on our 1.5 generics
branch work. We are willing to maintain a 1.4 branch based the
non-generic 0.93 release if people are interested in support for
this. Please contact the mailinglist email@example.com if you are.
This release contains two large contributions sponsored by the Google
Summer of Code project. Casey Marshall rewrote the SSL library to use
the NIO model of JSSE (implementing SSLEngine) and added support for
TLSv1.1 and pre-shared key ciphersuites. Originally developed on the
ssl-nio-branch this work is now available in the generics release.
Andrew John Hughes wrote a lang.management MX Beans ManagementFactory
implementation, which allows a runtime based on GNU Classpath to
provide various MX Beans through javax.management services that a user
can use to query the status and usage of various low level vm
resources. The the original implementation was written for GCJ, but
for this release other runtimes (e.g. jamvm and cacao) have added
support based on the generic vm-interface designed by Andrew.
GNU Classpath, essential libraries for java, is a project to create
free core class libraries for use with runtimes, compilers and tools
for the java programming language.
The GNU Classpath developer snapshot releases are not directly aimed
at the end user but are meant to be integrated into larger development
platforms. For example the GCC (gcj) and Kaffe projects will use the
developer snapshots as a base for future versions. More projects based
on GNU Classpath:
On November 13 (now known as Java Liberation Day) Sun decided to start
releasing all its Java ME, SE and EE implementations under the GPL.
For the last decade the
GNU Classpath community has worked together with various other free
software projects to help people avoid the so called "Java Trap"
As the FSF press release welcoming the Sun announcement said: 'Now,
Sun has begun disarming the "Java Trap", turning it from a pitfall
into a valuable foundation for future free software development.'
The new project 'OpenJDK' started by Sun will provide a full SE Java
environment. Only parts have been released now. And the GNU Classpath
community already started adopting independent parts to make them work
on a full free stack. With the 0.93 generics release you should be
able to compile and run the GPl javac compiler with some tricks.
We hope to cooperate more substantially with the OpenJDK community in
Not all code has been released by Sun, in particular the core class
libraries will not be release till somewhere next year. And some parts
might be encumbered preventing Sun from releasing those parts. We will
try and help plugg any holes left. It is too early to claim we already
know how our communities will interact and work together. But the
general feeling is positive. Sun has been very open, clear and
cooperative about OpenJDK and letting the GNU Classpath community know
about their plans and willingness to work with the existing free
The GNU Classpath community is happy with this development and
although it is too early to see what the future might bring we know we
have the following commitments to our developers, users, projects and
GNU/Linux distros depending on our work:
We want to make it easy to adopt and collaborate. We want to make it
easy for people to improve together with GNU Classpath and OpenJDK by
helping also the smaller projects and platforms with less resources to
adopt the new innovation (coordinating new VM and Platform interfaces)
- We will not regress on freedom. For anything Sun cannot release
(now) under the GPL we will provide free replacements.
- We will not regress on coverage. The platforms, architectures,
projects and programs that run now with GNU Classpath should run in
- We will not regress on having fun, innovating and hacking together!
Various individual GNU Classpath hackers have made personal statements
about all this (from Planet Classpath - http://planet.classpath.org/):
The GNU Classpath developers site http://developer.classpath.org/
provides detailed information on how to start with helping the GNU
Classpath project and gives an overview of the core class library
packages currently provided. For each snapshot release generated
documentation is provided through the GNU Classpath Tools gjdoc
project. A documentation generation framework for java source
files used by the GNU project. Full documentation on the currently
implementated packages and classes can be found at:
For more information about the project see also:
GNU Classpath 0.93 can be downloaded from
or one of the ftp.gnu.org mirrors
New in release 0.93 (Dec 8, 2006)
(See the ChangeLog file for a full list of changes.)
* CORBA objects that exist on the same virtual machine and only are
connected to another ORB are now accessed directly and no longer via
network. It is the same feature that RMI implementation
provides. These faster calls should be completely transparent, as the
parameters are cloned, where required. Currently the direct calls are
only possible for the non-deprecated objects that are connected to the
ORB via POA.
* The 'javah' tool has been added. It requires the ASM library
(see asm.objectweb.org); it can be enabled with the --with-asm
option to configure
* Added the rmi and corbaname URL context factories for JNDI.
* Fixes in the JNDI InitialContext now allows to plug-in user
* Removed currentClassLoader method from
* Added firstNonNullClassLoader method to
vm/reference/gnu/classpath/VMStackWalker.java. VMs are encouraged to
provide a more efficient implementation.
* Added aton method to vm/reference/java/net/VMInetAddress.java.
* NetworkInterface has been implemented for systems that provide the
* java.nio.channels.Selector implementations have been added that use
the kqueue notification mechanism on Mac OS X and *BSD, and that use
the epoll notification mechanism on Linux 2.6.
* java.nio has been refactored to support more non-blocking operations
natively. Blocking IO classes have been refactored to call
non-blocking classes. Non-blocking accepts, connects, and
scatter-gather IO should now be better supported.
* HTML support for Swing has been greatly enhanced.
Runtime interface changes:
* java.net.VMNetworkInterface and java.net.NetworkInterface have been
updated to keep native-modified state in the former, and to simplify
the native code in our reference implementation.
* gnu.java.nio.VMChannel has been expanded to better support native
non-blocking IO. Most native state data (such as file descriptor
integers) has been abstracted away into private state in the runtime
* gnu.java.nio.VMPipe has been similarly changed.
* gnu.java.net.VMPlainSocketImpl has been changed to remove some
functionality now provided by VMChannel; datagram socket-specific
methods have also been moved here, deprecating VMPlainDatagramSocketImpl.
* gnu.java.net.VMPlainDatagramSocketImpl removed.
The following people helped with this release:
Aaron M. Ucko, Andreas Tobler, Andrew John Hughes, Audrius Meskauskas,
Ben Konrath, Cameron McCormack, Casey Marshall, Chris Burdess,
Christian Elias Naur, Christian Thalinger, Dalibor Topic, David Daney,
David Fu, David Gilbert, David Pirkle, Edwin Steiner, Francis Kung,
Friedjof Siebert, Gary Benson, Guilhem Lavaux, Helmer Kraemer,
Ian Rogers, Ingo Proetel, Ito Kazumitsu, Jeroen Frijters,
Keith Seitz, Lillian Angel, Marco Trudel, Mario Torre, Mark Wielaard,
Martin Platter, Matthew Burgess, Michael Franz, Michael Koch,
Paul Jenner, Raif S. Naffah, Riccardo Mottola, Robert Lougher,
Robert Schuster, Roger Sayle, Roman Kennke, Sven de Marothy,
Tania Bento, Thomas Fitzsimmons and Tom Tromey
We would also like to thank the numerous bug reporters and testers!