GNU Classpath

GNU Classpath

Infobox Software
name = GNU Classpath



caption = Demonstration of the GNU Classpath Swing
developer = GNU project
(formally held by FSF)
collapsible = yes
latest release version = 0.97.2
latest release date = release date|2008|06|6
latest preview version =
latest preview date =
operating system = Cross-platform
programming language = C and Java
genre = Library
license = GPL+linking exception
website = http://www.classpath.org

GNU Classpath is a project aiming to create a free software implementation of the standard class library for the Java programming language. 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. Classpath can thus be used to run popular Java-based software such as Vuze and Eclipse.

It is a part of the Free Software Foundation's GNU project and was launched so that computer users could use Java programs without giving up the freedoms which the free software movement works to secure. GNU Classpath was originally developed in parallel with libgcj due to license incompatibilities, but later merged.

License

GNU Classpath is licensed under the GNU General Public License with a linking exception. This is a free software license. All code is formally owned by the Free Software Foundation, and this owner is bound by its own contractual obligations to the developers.

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.
* IcedTea project use GNU Classpath as replacements for the missing Java Class Library that remain proprietary and closed-source in OpenJDK.
* 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 ( [http://www.eecg.toronto.edu/jupiter/] ).

History

GNU Classpath development started in 1998 with five developers.Fact|date=August 2007 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. On 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.

The name GNU Classpath was originally suggested by Bradley M. Kuhn to one of the first developers, Paul Fisher. At the time, there was great concern in the Free Java implementations community about enforcement of Sun's trademark on Java against free implementations. Kuhn suggested the name $CLASSPATH, which is the environment variable used by most Java systems to indicate where the Java libraries reside on the computer. Since $CLASSPATH often expanded to a path name that included the word "java" (such as /usr/lib/java), it was a way to evoke the name "Java" without actually saying it. Fisher and other developers didn't like the unsightly use of the "$" and all capital letters and settled on "Classpath".

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.Fact|date=October 2007

The GNU Classpath library code coverage progress can be tracked against J2SE 1.4 [ [http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html GNU Classpath Library Coverage against J2SE 1.4] ] and Java SE 5.0 [ [http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath.html GNU Classpath Library Coverage against Java SE 5.0] ] .

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 nearly any Java virtual machine if the sources of such machine are available and can be modified.

Support for the new language features in Java 1.5

Before version 0.95, each GNU Classpath release consisted of two separate release tarballs; one that represented the state of the main development branch and another that contained the contents of a more experimental branch, supporting the additions, such as generics, enumerations and annotations, present in Java 1.5

Since version 0.95, Java 1.5 additions like generics have been fully integrated into the main branch. 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 The release of GNU Classpath 0.95 "Take Five" [http://www.gnu.org/software/classpath/announce/20070423.html] ] .

Interface with Sun's open-source compiler

Since version 0.95, GNU Classpath supports compiling and running the GPL open-source javac compiler using Classpath runtime (GIJ) and compiler (GCJ) and also allows to compile the GNU Classpath class library, tools and examples with javac itself.

Classes from the omg.org domain

GNU Classpath does not accept any code that has a non-free license, or that was automatically generated from code with a 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.

References

See also

*Apache Harmony
*GCJ
*IKVM.NET
*JamVM
*JikesRVM
*Kaffe
*IcedTea
*Free Java implementations
*Java Class Library

External links

* [http://www.gnu.org/software/classpath/ GNU Classpath homepage]
* [http://developer.classpath.org/doc/ Automatically generated documentation, including source code]
* [http://builder.classpath.org Test runs and binary compatibility tests]
* [http://lwn.net/Articles/184967/ May 2006 article by a GNU Classpath developer about the state of free java project collaborations]
* [http://public.smi.ethz.ch/blog/2006/01/25/permeable-development/ Permeable Development]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • GNU Classpath — es un proyecto que se propone crear una implementación libre de la biblioteca de clases estándar de Java para el lenguaje de programación Java. A pesar de la enorme envergadura de la tarea, la mayor parte del trabajo ya está hecho, incluido Swing …   Wikipedia Español

  • GNU Classpath — У этого термина существуют и другие значения, см. Classpath (Java). GNU Classpath …   Википедия

  • GNU Classpath —  Pour l’article homonyme, voir Classpath (java).  GNU Classpath …   Wikipédia en Français

  • GNU Classpath — Demonstration des GNU Classpath (Swing) GNU Classpath ist eine freie Implementierung der Standardklassenbibliotheken für die Programmiersprache Java. Sie dient vielen Open Source Entwicklern als Ersatz für die ehemals proprietäre… …   Deutsch Wikipedia

  • GNU Compiler for Java — Developer(s) The GNU Project Stable release 4.6.1 / June 27, 2011; 4 months ago (2011 06 27 …   Wikipedia

  • GNU Compiler for Java — Тип Компилятор Разработчик Проект GNU Операционная …   Википедия

  • GNU Compiler for Java — GCJ ejecutado en una consola dentro de gnome terminal …   Wikipedia Español

  • GNU Compiler for the Java Programming Language — GNU Compiler for Java Entwickler: The GNU Project Aktuelle Version: 4.3.1 (6. Juni 2008) Betriebssystem …   Deutsch Wikipedia

  • Classpath — (java)  Pour l’article homonyme, voir GNU Classpath.  Classpath est un paramètre passé à une machine virtuelle Java qui définit le chemin d accès au répertoire où se trouvent les classes et les packages Java afin qu elle les exécute. Au …   Wikipédia en Français

  • Classpath (Java) —  Pour l’article homonyme, voir GNU Classpath.  Classpath est un paramètre passé à une machine virtuelle Java qui définit le chemin d accès au répertoire où se trouvent les classes et les packages Java afin qu elle les exécute. Au sein… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”