GNU Classpath
From Wikipedia, the free encyclopedia
GNU Classpath | |
Demonstration of the GNU Classpath Swing |
|
Developer: | GNU project (formally owned by FSF) |
---|---|
Latest release: | 0.93 / December 11, 2006 |
OS: | Cross-platform |
Use: | Library |
License: | GPL+linking exception |
Website: | http://www.classpath.org |
GNU Classpath is a project aiming to create a free implementation of the standard class library for the Java programming language. It is a part of the Free Software Foundation's GNU project. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath developers have implemented almost all of the classes from J2SE 1.4 and 5.0, and Classpath can thus be used to run popular Java-based software such as Azureus and Eclipse.
GNU Classpath was developed in parallel with libgcj due to license incompatibilities. Finally they agreed on GPL with linking exception and both projects were merged.
Contents |
[edit] License
GNU Classpath is licensed under the GPL with linking exception. This is a free software licence. All code is formally owned by the Free Software Foundation, and this owner is bound by its own official obligations to developers.
[edit] Uses
GNU Classpath is used by many free Java runtimes (like Kaffe, SableVM, JamVM, CACAO, Jikes RVM) because every full-featured Java virtual machine must provide an implementation of the standard class libraries.
Some other uses include:
- the GNU Compiler for Java, which is capable of compiling Java code into native standalone executables.
- IKVM.NET, which integrates Java with the .NET Framework
- JNode operating system for running java applications. This system is written in Java and assembler only.
- specialised virtual machines such as Jaos for integration with the Oberon programming language, and JamaicaVM for embedded systems with real-time guarantees.
- virtual machines for the distributed computing with clusters, having up to 128 processors on Myrinet ([1]).
[edit] History
GNU Classpath development started in 1998 with five developers. During the history, it merged several times with other projects having similar goals (Kaffe, libgcj). In the past, GNU Classpath supplied its own virtual machine (Japhar). As Classpath was becoming a base library, shared with a lot of different projects, this virtual machine received less and less attention and is now no longer supported. After implementing the majority of the official Java 1.4 API, the work in the project became more bug oriented rather than API coverage oriented. In October 24, 2006, the implementation of the last missing 1.4 class, HTMLWriter, was committed. The development speed (computed mathematically as the average number of the new lines of code per day) reached its highest ever in 2006.
[edit] Development team
The project team consists of about 70 developers (with approximately 20 currently active) and one active maintainer. The maintainer takes care of the legal side of the project, prepares the regular project releases and does some quality management. The maintainer also grants the CVS access permissions.
Unlike some projects, GNU Classpath has no formal hierarchy. The work is done by the most technically capable, and there is no strict work division either. All code changes are first posted to the discussion list as patches where they can be opposed if needed. The project typically receives between five and eight patches per day.
The project has its own testing suite (Mauve) with about 175.000 tests and performs daily checks to ensure that the project classes are compatible with the official Sun API classes.
[edit] Virtual machine integration
GNU Classpath contains classes from the official java API namespace. Where calls to the native code are necessary or highly desired, this is done from the small number of "VM" classes. The name of such class matches the name of the class, requiring native methods plus the additional VM prefix: VMObject, VMString and so on. VM classes, stored separately from the rest of code, are package private and final. The methods of these classes contain the keyword native, indicating the necessity of the supporting library. Such library is provided by the authors of the java virtual machine. Hence GNU Classpath can be connected to near any java virtual machine if the sources of such machine are available and can be modified. For instance, it cannot be used with Sun's virtual machine that does not yet satisfy these conditions.
[edit] Support for the new language features in Java 1.5
Each GNU Classpath release currently consists of two separate release tarballs; one that represents the state of the main development branch and another that contains the contents of a more experimental branch, supporting the additions, such as generics, enumerations and annotations, present in Java 1.5.
The eventual aim is to merge this branch back into the main development stream, thus giving mainstream GNU Classpath full support for the new features. Such a merge is reliant on appropriate support being available from the VMs and compilers that work with GNU Classpath. At present, this is expected to happen when changes to GCJ taking place on the gcj-eclipse branch become part of an actual available release of GCJ. The branch allows GCJ to use Eclipse compiler, ecj, to compile Java 1.5 source code to bytecode, which is then changed into native code by GCJ itself.
[edit] Classes from the omg.org domain
GNU Classpath does not accept any code that has the non free license, or was automatically generated from the another code with the non free license. The standard java API contains numerous classes from the omg.org domain that are normally generated from the IDL files, released by the Object Management Group. The "use, but no modify" license of these files counts as non free. Because of this reason, the mentioned classes in GNU Classpath project were written by hand, using only the official printed OMG specifications. Hence this part of GNU Classpath is as free as any other code in the project. This implementation is functional.
[edit] See also
[edit] External links
- GNU Classpath homepage
- Automatically generated documentation, including source code
- Test runs and binary compatibility tests
- May 2006 article by a GNU Classpath developer about the state of free java project collaborations
- Permeable Development
History: GNU Manifesto • GNU Project • Free Software Foundation (FSF)
GNU licenses: GNU General Public License (GPL) • GNU Lesser General Public License (LGPL) • GNU Free Documentation License (FDL)
Software: GNU operating system • bash • GNU Compiler Collection • Emacs • GNU C Library • Coreutils • GNU build system • other GNU packages and programs
Speakers: Robert J. Chassell • Loïc Dachary • Ricardo Galli • Georg C. F. Greve • Federico Heinz • Bradley M. Kuhn • Eben Moglen • Richard Stallman • Len Tower