HOME

TheInfoList



OR:

GNU Classpath is a
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
implementation of the standard
class library In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subro ...
for the
Java programming language Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers ''write once, run anywh ...
. Most classes from J2SE 1.4 and 5.0 are implemented. Classpath can thus be used to run Java-based
applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
. GNU Classpath is a part of the
GNU Project The GNU Project () is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaborati ...
. It was originally developed in parallel with libgcj due to license incompatibilities, but later the two projects merged. GNU Classpath was deemed a high priority project by the
Free Software Foundation The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
. When the Classpath project began, the
license A license (or licence) is an official permission or permit to do, use, or own something (as well as the document of that permission or permit). A license is granted by a party (licensor) to another party (licensee) as an element of an agreeme ...
for the official Java implementation from
Sun Microsystems Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
did not allow distribution of any alterations. Since the inception of the Classpath project, the
OpenJDK OpenJDK (Open Java Development Kit) is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GPL-2.0-only wi ...
was released under the
GPL The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
and now serves as the official reference implementation for the
Java platform Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cro ...
.


License

GNU Classpath is licensed under the
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
with a linking exception. This is a
free software license A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) ...
. All code is formally owned by the
Free Software Foundation The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
, 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 Kaffe is a discontinued "clean room design" ( reverse engineering) version of a Java Virtual Machine. It comes with a subset of the Java Platform, Standard Edition (Java SE), Java API, and tools needed to provide a Java runtime environment. Like ...
,
SableVM SableVM was a clean room implementation of Java bytecode interpreter implementing the Java virtual machine ( VM) specification, second edition. SableVM was designed to be a robust, extremely portable, efficient, and fully specifications-compliant ...
,
JamVM JamVM is an open-source Java Virtual Machine (JVM) developed to be extremely small compared with other virtual machines (VMs) while conforming to the Java virtual machine specification version 2 (blue book). JamVM can be configured to use the GNU ...
,
Jikes RVM Jikes is an open-source Java compiler written in C++. It is no longer being updated. The original version was developed by David L. "Dave" Shields and Philippe Charles at IBM but was quickly transformed into an open-source project contribute ...
, and VMKit) 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 The GNU Compiler for Java (GCJ) is a free compiler for the Java programming language. It was part of the GNU Compiler Collection for over ten years but as of 2017 it is no longer maintained and will not be part of future releases. GCJ compiles ...
, which is capable of compiling Java code into native standalone executables. * GCJAppletViewer for launching
Java applet Java applets were small applications written in the Java programming language, or another programming language that compiles to Java bytecode, and delivered to users in the form of Java bytecode. The user launched the Java applet from a ...
s from command line if they are not supported by the browser in use. *
IKVM.NET IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. IKVM is free software, distributed under the zlib permissive free software license. The original developer, Jeroen Frijters, discontinued work on IKVM in 2015. In ...
, which integrates Java with the
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
* JNode, an operating system for running Java applications. This system is written in Java and assembler only. * Specialised virtual machines such a
Jaos
for integration with the
Oberon programming language Oberon is a general-purpose programming language first published in 1987 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages (Euler, ALGOL W, Pascal, Modula, and Modula-2). Oberon was the result of a concentrated ...
, and
JamaicaVM The JamaicaVM is a virtual machine and build environment for developing and running realtime Java programs. It includes a deterministic garbage collector and implements the RTSJ.Fridtjof Siebert, "Realtime Garbage Collection in the JamaicaVM 3.0 ...
for embedded systems with real-time guarantees. * Virtual machines for distributed computing with clusters, having up to 128 processors on
Myrinet Myrinet, ANSI/VITA 26-1998, is a high-speed local area networking system designed by the company Myricom to be used as an interconnect between multiple machines to form computer clusters. Description Myrinet was promoted as having lower protocol ...
. * The IcedTea project used GNU Classpath as a replacement for proprietary elements of
OpenJDK OpenJDK (Open Java Development Kit) is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GPL-2.0-only wi ...
, prior to their replacement upstream.


History

GNU Classpath development started in 1998 with five developers. During the history, it merged several times with other projects having similar goals (
Kaffe Kaffe is a discontinued "clean room design" ( reverse engineering) version of a Java Virtual Machine. It comes with a subset of the Java Platform, Standard Edition (Java SE), Java API, and tools needed to provide a Java runtime environment. Like ...
, 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 Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code. SLOC is typically used to predict the am ...
per day) reached its highest ever in 2006. The name GNU Classpath was originally suggested by
Bradley M. Kuhn Bradley M. Kuhn (born 1973) is a free software activist from the United States. Kuhn is currently Policy Fellow and Hacker-in-Residence of the Software Freedom Conservancy, having previously been executive director. Until 2010 he was the FLOSS C ...
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 An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. They are part of the environment in which a process runs. For example, a running process can query the value of the TEMP envi ...
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 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. 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 GNU Classpath library
code coverage In computer science, test coverage is a percentage measure of the degree to which the source code of a program is executed when a particular test suite is run. A program with high test coverage has more of its source code executed during testing, ...
progress can be tracked against OpenJDK6 and OpenJDK7..


Virtual machine integration

GNU Classpath contains classes from the official Java API namespace. Where calls to native code are necessary or highly desired, this is done from a small number of "VM" classes. The name of such a VM 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 native library. Such libraries are provided by the authors of a Java virtual machine, hence GNU Classpath can be connected to nearly any Java virtual machine if the sources of such virtual 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 can be built by using the
Eclipse An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
compiler, ecj, to compile Java 1.5 source code to bytecode. In the case of GCJ, it uses ecj to perform this initial stage, then converts the bytecode to native code. From 0.95 onwards, GNU Classpath also supports compiling and running the newly
GPL The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
ed open-source
javac javac (pronounced "java-see") is the primary Java compiler included in the Java Development Kit (JDK) from Oracle Corporation. Martin Odersky implemented the GJ compiler, and his implementation became the basis for javac. The compiler accepts s ...
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
using GNU Classpath and also allows the GNU Classpath class library, tools and examples to be compiled with
javac javac (pronounced "java-see") is the primary Java compiler included in the Java Development Kit (JDK) from Oracle Corporation. Martin Odersky implemented the GJ compiler, and his implementation became the basis for javac. The compiler accepts s ...
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 Object Management Group (OMG) is a computer industry standardization, standards consortium. OMG Task Forces develop enterprise integration standards for a range of technologies. Business activities The goal of the OMG was a common portabl ...
. The "use, but no modify" license of these files counts as non-free. For this reason, the mentioned classes in the GNU Classpath project were written from scratch, using only the official printed OMG specifications. Hence this part of GNU Classpath is as free as any other code in the project.


See also

* Apache Harmony *
GNU Compiler for Java The GNU Compiler for Java (GCJ) is a free compiler for the Java programming language. It was part of the GNU Compiler Collection for over ten years but as of 2017 it is no longer maintained and will not be part of future releases. GCJ compiles ...
*
IKVM.NET IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. IKVM is free software, distributed under the zlib permissive free software license. The original developer, Jeroen Frijters, discontinued work on IKVM in 2015. In ...
*
JamVM JamVM is an open-source Java Virtual Machine (JVM) developed to be extremely small compared with other virtual machines (VMs) while conforming to the Java virtual machine specification version 2 (blue book). JamVM can be configured to use the GNU ...
*
JamaicaVM The JamaicaVM is a virtual machine and build environment for developing and running realtime Java programs. It includes a deterministic garbage collector and implements the RTSJ.Fridtjof Siebert, "Realtime Garbage Collection in the JamaicaVM 3.0 ...

Jaos
* JikesRVM *
Kaffe Kaffe is a discontinued "clean room design" ( reverse engineering) version of a Java Virtual Machine. It comes with a subset of the Java Platform, Standard Edition (Java SE), Java API, and tools needed to provide a Java runtime environment. Like ...
* IcedTea *
Free Java implementations Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, making them free software. Sun released most of its Java source code as free software in May 2007, so it ca ...
*
Java Class Library The Java Class Library (JCL) is a set of dynamically loadable libraries that Java Virtual Machine (JVM) languages can call at run time. Because the Java Platform is not dependent on a specific operating system, applications cannot rely on any of ...


Notes


References


External links

* * . * : test runs and binary compatibility tests * . * . {{DEFAULTSORT:Gnu Classpath Classpath Classpath, GNU Classpath, GNU Software using the GPL linking exception