Title Slide

GNU Classpath: Core Classes for a Diversity
of Java Virtual Machines

By Sascha Brawer and Mark Wielaard

The slides are available in PDF and OpenOffice formats.

4th Free and Open Source Software Developers’ Meeting (FOSDEM 2004), Java Developer Room. Université Libre de Bruxelles, Brussels, Belgium. February 21, 2004

1st Let’s Open The Source Event (LOTS 2004), Universität Bern, Switzerland, February 18, 2004


The goal of GNU Classpath is to provide an implementation of the core class libraries for the Java language that is not under proprietary control. Because the license grants developers, users and researchers the freedom to adapt it to their purposes, GNU Classpath has become a catalyst for innovative VM and compiler projects.

Due to the richness of the library, GNU Classpath is a very large and ambitious project. This very richness means that Free Software developers can use a reasonably well designed, object-oriented framework that covers most needs of a typical application. The support ranges from abstract data types to graphical user interfaces, from low-level network abstractions to remote method invocation with over-the-network class loading, from mathematical libraries to database access. Because the Java framework is accepted by the mainstream, many developers are already familiar with its structure. This means that people can quickly write free software while relying on a stable, tightly integrated foundation.

GNU Classpath is used by several Virtual Machines. Therefore, the library must support execution environments with rather diverse, sometimes even conflicting design goals. Examples include the GNU Compiler for Java (GCJ), which is an ahead-of-time compiler, producing object files conformant to the binary interface of C++; the IBM Jikes Research VM (RVM), which is completely written in Java; IKVM.NET, which translates Java bytecodes to the .NET Intermediate Language and works on top of Mono; Jaos, which builds on top of the Aos/Bluebottle kernel and implements all low-level methods in Active Oberon; and Kaffe OpenVM, a traditional byte-code interpreter and just in time compiler available on lots of platforms. We show the techniques that GNU Classpath uses to cope with the needs of multiple, very different VMs.

Since a group of dedicated people has worked on GNU Classpath over the course of five years, it is now possible to develop and run large Java programs in an entirely free environment. A live demonstration of Eclipse, a large desktop, and Tomcat, a large server application, will illustrate that serious applications can now be developed on top of the framework. Nonetheless, we want to extend the core libraries with even more standard classes, so a lot of work still remains to be done. The talk concludes by showing how people can contribute to GNU Classpath, and in which areas help would be most appreciated.