GNU Classpath
| Company type | Free software project |
|---|---|
| Industry | Software development |
| Predecessor | libgcj |
| Founded | 1998 |
| Founder | Paul Fisher (early contributor) |
| Fate | Integrated with OpenJDK as official reference implementation |
| Successor | OpenJDK |
Area served | Worldwide |
Key people | Project maintainer, Bradley M. Kuhn (consultant) |
| Products | Java standard class library implementation |
| Owner | Free Software Foundation |
| Parent | GNU Project |
| Website | www |
GNU Classpath represents a free software rendition of the standard class library tailored for the Java language. It implements the majority of classes from J2SE versions 1.4 and 5.0, allowing the execution of Java-based applications. As a component of the GNU Project, GNU Classpath was originally created alongside libgcj due to licensing incompatibilities, prior to the eventual integration of these projects.
Identified as a key initiative by the Free Software Foundation, GNU Classpath arose in response to limitations imposed by the official Java release from Sun Microsystems, which restricted modification distribution. With the advent of OpenJDK licensed under the GPL, OpenJDK now functions as the official reference implementation for the Java platform.
License
The licensing for GNU Classpath is provided under the GNU General Public License combined with a linking exception, ensuring it remains free software. The codebase is officially owned by the Free Software Foundation, which oversees contributor compliance.
Uses
GNU Classpath serves as the backbone for numerous open-source Java runtimes, including but not limited to Kaffe, SableVM, JamVM, Jikes RVM, and VMKit, since comprehensive Java virtual machines depend on standard class library implementations.
Additional applications relevant to business environments include:
- The GNU Compiler for Java, which transforms Java code into native machine executables.
- GCJAppletViewer, facilitating command-line execution of Java applets unsupported by web browsers.
- IKVM, enabling interoperability between Java and the .NET Framework.
- JNode, an operating system engineered to run Java applications relying solely on Java and assembler code.
- Specialized virtual machines such as Jaos, designed for integration with the Oberon programming language, and JamaicaVM, focused on embedded real-time environments.
- Distributed computing virtual machines capable of managing clusters with up to 128 processors connected via Myrinet.
- The IcedTea project, which initially utilized GNU Classpath to substitute proprietary components in OpenJDK before these were replaced upstream.
History
The inception of GNU Classpath dates back to 1998 with a team of five developers. Throughout its progression, it consolidated efforts with related projects like Kaffe and libgcj that shared aligned objectives. At first, GNU Classpath included its own virtual machine named Japhar; however, as Classpath evolved into a core library supporting multiple projects, focus on Japhar diminished and it is no longer maintained.
Once most of the official Java 1.4 API was implemented, development priorities shifted from expanding API coverage toward resolving bugs. On October 24, 2006, the final outstanding 1.4 class, HTMLWriter, was completed. That year marked peak development activity measured by average daily additions of new code lines.
The name GNU Classpath originated when early contributor Paul Fisher consulted with Bradley M. Kuhn over concerns about Sun's trademark enforcement regarding free Java implementations. Kuhn suggested $CLASSPATH, a nod to the Java environment variable that specifies library paths, indirectly referencing "Java" without direct mention. Developers preferred a more straightforward term and ultimately chose Classpath.
Development team
The project maintainer is responsible for overseeing legal issues, coordinating software releases, and ensuring quality standards, in addition to managing CVS access rights.
GNU Classpath functions without a formal leadership structure; contributions are made by the most skilled developers without rigid role assignments. Proposed code modifications are submitted as patches to a mailing list where they undergo review and may face objections. Typically, the project evaluates between five and eight patches each day.
Advancement in GNU Classpath’s implementation completeness is measured by comparing it against benchmarks from OpenJDK6 and OpenJDK7.
Virtual machine integration
GNU Classpath incorporates classes within the official Java API namespace. Interaction with native code is facilitated through a restricted set of "VM" classes, which are named by prefixing VM to the relevant class name—for example, VMObject and VMString. These VM classes are final and package-private, with methods declared as native to signify reliance on corresponding native libraries. Such libraries are supplied by JVM developers, allowing GNU Classpath to interface with virtually any Java virtual machine provided its source code can be accessed and modified.
Support for new Java 1.5 language features
Prior to version 0.95, GNU Classpath distributed two separate tarballs: one for the stable main development line and another experimental branch that included Java 1.5 capabilities such as generics, enumerations, and annotations. Starting with version 0.95, these Java 1.5 enhancements have been fully integrated into the primary branch. The Eclipse compiler (ecj) compiles Java 1.5 source files into bytecode, which is then transformed into native code by GCJ. From this release onward, GNU Classpath supports compilation and execution using the open-source javac compiler alongside its class library, enabling tools and sample programs to be built directly with javac.
Classes from the omg.org domain
GNU Classpath excludes any components subject to non-free licenses or derived automatically from such sources. The standard Java API contains numerous classes originating from the omg.org domain, which are usually generated from Interface Definition Language (IDL) files published by the Object Management Group (OMG). Because these IDL files carry a "use but no modify" license that is classified as non-free, GNU Classpath has entirely rewritten these classes based on official printed OMG specifications to maintain this section of the project as completely free software.
See also
- Apache Harmony
- GNU Compiler for Java
- IKVM
- JamVM
- JamaicaVM
- Jaos
- JikesRVM
- Kaffe
- IcedTea
- Free Java implementations
- Java Class Library
External links
- .
- : test runs and binary compatibility tests
- .
- .