[image of the evil water droplet] (jpeg 3k) no gifs due to patent problems

GNU Classpath

Classpath: Savannah  |   Homepage  |   Bugs  |   Support  |   Patches  |   Mailing Lists  |   Tasks  |   News  |   CVS  
    Tools: Savannah  |   Homepage  |   Bugs  |   Support  |   Patches  |   Mailing Lists  |   Tasks  |   News  |   CVS  

GNU Classpath, Essential Libraries for Java, is a GNU project to create free core class libraries for use with virtual machines and compilers for the java programming language.

Classpath is still a work in progress. The first public release will be version 1.0. There have been no public releases; however, pre-release source code is available via GNU's anonymous CVS server , and snapshots of the Classpath tree have been released and are available from ftp://alpha.gnu.org/gnu/classpath/ (older releases can be found in the archive).

Documentation

Status

GNU Classpath 1.0 will be fully compatible with the 1.1 and largely compliant with the 1.2 API specification and will have a stable API for interacting with virtual machines.

Current snapshot releases have implementations for the following packages (and some subpackages) java.applet, java.awt, java.beans, java.io, java.lang, java.math, java.net, java.rmi, java.security, java.sql, java.text, java.util, java.util.jar, java.util.zip. Not all classes and methods are implemented yet, but most are. many of the implemented classes are already up to the 1.2 API spec. Some are already compliant with the 1.3 and 1.4 API specification (there are preliminary implementations of java.nio and javax.swing).

An up to date view of the current state of GNU Classpath can be obtained by looking at these resources.

Testing

The test framework for GNU Classpath is called Mauve. There are instructions within the Mauve website on how to download and use Mauve. Writing Mauve tests is the most important thing GNU Classpath developers could do for the project at this time.

Java API compatibility testing can be performed using japitools. Japitools already does full API comparisons but it doesn't have the capability to extract APIs from the documentation - instead, the "japize" tool uses the jode.bytecode library to identify the public members of a given set of packages from the binary jars or zips. But japitools does separate the API-inspection phase ("japize") from the compatibility-testing phase ("japicompat") so it would be easy to offer an alternative to japize that worked on API documentation.

Another method of API compatibility testing is to use jdiff.sh, at least until this functionality is merged into japitools.

Other Package Providers

Below is a table of providers for free core packages not already available with GNU Classpath

Core PackageProvider
Various non-core packagesGNU ClasspathX
javax.cryptoGNU Crypto
javax.soundTritonus
org.ietf.jgssIETF RFC 2853
org.omgOMG

Virtual Machines

The primary target for GNU Classpath was originally Japhar. Japhar-0.07 works out-of-the-box with GNU Classpath-0.00. Current Japhar versions do not work with current versions of GNU Classpath.

JVMDescription
AegisVM The Aegis VM Project is an on-going effort to develop a lightweight, secure virtual machine for executing Java bytecode. The Aegis VM will eventually feature a modular bytecode verification architecture that allows user-defined static verification procedures to be integrated into the VM's dynamic linking process through pluggable verification modules.
GCJ Although GNU Classpath cannot be directly compiled for use with GCJ at this time, a lot of work has been done to merge GCJ class library code and GNU Classpath class library code. This has resulted in a better version of each. The current merge status between the two projects is located here.
IKVM.NET A JVM for the .NET platform. Runs on top of Mono.
Jikes RVM Jikes RVM now uses GNU Classpath for all of its libraries. Also, instructions for using Classpath are provided in the Jikes RVM user's guide as of the Jikes RVM 4/7/03 release (2.2.1). Nightly regression tests are run against Classpath 0.05 and the Classpath CVS head. The results are posted on the jikesrvm-regression mailing list, which is archived and available on the Jikes RVM home page.
Jupiter This VM also uses a modified version of the GNU Classpath libraries.
Kissme This VM is almost always guaranteed to work with GNU Classpath CVS source code.
ORP Information about ORP can also be found at http://orp.sourceforge.net/. ORP 1.10 does not work with current GNU Classpath libraries. Information is available in the mailing list archives.
SableVM This VM provides a repackaged version of GNU Classpath that aims to be the easiest to install and use.
Jaos The Jaos VM is a JVM using GNU Classpath implemented on top of the Aos/Bluebottle kernel. This kernel offers many useful features like garbage collected memory management, dynamic module loading, and object-oriented model. This makes the implementation of a JVM particularly attractive and simple.
JAmiga A JRE implementation for the Amiga Platform.
Kaffe Kaffe OpenVM is a complete virtual machine, library framework and tools for programming in the java language. It has its own implementation of part of the core libraries, but uses large parts of the GNU Classpath framework.

Other projects using GNU classpath

ProjectDescription
Flex Compiler FLEX is a compiler infrastructure written in Java for Java. Applications include a program analysis and transformation framework for distributed and embedded systems. Native backends exist for the StrongARM and MIPS processors; it can also generate portable C code that can run on any platform with gcc.

Distribution terms

Classpath is distributed under the terms of the GNU General Public License with the following clarification and special exception.

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.

As such, it can be used to run, create and distribute a large class of applications and applets. When GNU Classpath is used unmodified as the core class library for a virtual machine, compiler for the java languge, or for a program written in the java programming language it does not affect the licensing for distributing those programs directly.




Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to webmasters@www.gnu.org, send other questions to gnu@gnu.org.

Copyright (C) 1999-2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Updated: Fri Sep 19 12:51:37 2003 Mark Wielaard