Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
GNU Classpath
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Implementation of standard class library of Java}} {{More citations needed|date=July 2023}} {{Infobox software | name = GNU Classpath | logo = GNU Classpath badge.png | logo size = 180px | screenshot = GC SwingDemo.png | screenshot size = 300px | caption = Demonstration of the GNU Classpath [[Swing (Java)|Swing]] | developer = [[GNU Project]]<br />(formally held by [[Free Software Foundation|FSF]]) | collapsible = yes | discontinued = yes | latest release version = 0.99<ref>{{cite web | url= http://blog.fuseyism.com/index.php/2012/03/16/gnu-classpath-0-99-released/ | title= GNU Classpath 0.99 Released! | first= Andrew John | last= Hughes | date= 2012-03-16 | type= [[World Wide Web]] log | publisher= Fuseyism | access-date= 2012-03-20 | archive-url= https://web.archive.org/web/20121214141527/http://blog.fuseyism.com/index.php/2012/03/16/gnu-classpath-0-99-released/ | archive-date= 2012-12-14 | url-status= dead }}</ref> | latest release date = {{Start date and age|2012|03|16}} | latest preview version = | latest preview date = | operating system = [[Cross-platform]] | programming language = [[C (programming language)|C]] and [[Java (programming language)|Java]] | genre = [[Library (computer science)|Library]] | license = [[GPL linking exception]] | website = {{url|https://www.gnu.org/software/classpath/}} }} '''GNU Classpath''' is a [[free software]] implementation of the standard [[Java Class Library|class library]] for the [[Java (programming language)|Java programming language]]. Most classes from [[Java Platform, Standard Edition|J2SE]] 1.4 and 5.0 are implemented. Classpath can thus be used to run Java-based [[application software|applications]]. GNU Classpath is a part of the [[GNU Project]]. It was originally developed in parallel with [[GNU Compiler for Java|libgcj]] due to license incompatibilities, but later the two projects merged. GNU Classpath was deemed a high priority project by the [[Free Software Foundation]]. When the Classpath project began, the [[software license|license]] for the official Java implementation from [[Sun Microsystems]] did not allow distribution of any alterations. Since the inception of the Classpath project, the [[OpenJDK]] was released under the [[GNU General Public License|GPL]] and now serves as the official reference implementation for the [[Java platform]]. == License == GNU Classpath is licensed under the [[GNU General Public License]] with a [[GPL linking exception|linking exception]]. This is a [[free software license]]. All code is formally owned by the [[Free Software Foundation]],{{citation needed|date=December 2011}} and this owner is bound by its own contractual obligations to the developers.{{clarify|date=October 2010}} == Uses == GNU Classpath is used by many [[Free Java implementations|free Java runtimes]] (like [[Kaffe]], [[SableVM]], [[JamVM]], [[Jikes RVM]], 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]], which is capable of compiling Java code into native standalone executables. * GCJAppletViewer<ref>{{Citation | title = GCJ applet viewer | publisher = Koders | url = http://www.koders.com/java/fid00976F58DD49540480F81EB78F2C2492A3393CD1.aspx | access-date = 2009-09-14 | archive-url = https://web.archive.org/web/20090918100934/http://www.koders.com/java/fid00976F58DD49540480F81EB78F2C2492A3393CD1.aspx | archive-date = 2009-09-18 | url-status = dead }}.</ref> for launching [[Java applet]]s from command line if they are not supported by the browser in use. * [[IKVM]], which integrates Java with the [[.NET Framework]] * JNode, an operating system for running Java applications. This system is written in Java and assembler only. * Specialised virtual machines such as [https://web.archive.org/web/20080316045633/http://www.oberon.ethz.ch/jaos/ Jaos] for integration with the [[Oberon programming language]], and [[JamaicaVM]] for embedded systems with real-time guarantees. * Virtual machines for distributed computing with clusters, having up to 128 processors on [[Myrinet]].<ref>{{Citation | url = http://www.eecg.toronto.edu/jupiter/ | title = EECG | publisher = U Toronto | contribution = Jupiter}}.</ref> * The [[IcedTea]] project used GNU Classpath as a replacement for proprietary elements of [[OpenJDK]], prior to their replacement upstream. == History == GNU Classpath development started in 1998 with five developers.{{Citation needed|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.{{citation needed|date=December 2011}} 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, [https://web.archive.org/web/20090715130332/http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/html/HTMLWriter.html HTMLWriter], was committed. The development speed (computed mathematically as the average number of the new [[Source lines of code|lines of code]] per day) reached its highest ever in 2006.{{Citation needed|date=August 2010}} The name GNU Classpath was originally suggested by [[Bradley M. Kuhn]] to one of the first developers, Paul Fisher. At the time, there was [[Free Java implementations|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 (computing)|path name]] that included the word ''java'' (such as <code>/usr/lib/java</code>), 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 [[Concurrent Versions System|CVS]] access permissions.{{citation needed|date=December 2011}} 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]] progress can be tracked against OpenJDK6<ref>{{Citation | url = http://fuseyism.com/japi/icedtea6-classpath.html | publisher = Fuseyism | title = J API | contribution = GNU Classpath Library Coverage against OpenJDK6 | access-date = 2012-05-31 | archive-date = 2015-09-06 | archive-url = https://web.archive.org/web/20150906132808/http://fuseyism.com/japi/icedtea6-classpath.html | url-status = dead }}.</ref> and OpenJDK7.<ref>{{Citation | url = http://fuseyism.com/japi/icedtea7-classpath.html | publisher = Fuseyism | title = J API | contribution = GNU Classpath Library Coverage against OpenJDK7 | access-date = 2012-05-31 | archive-date = 2016-03-04 | archive-url = https://web.archive.org/web/20160304051651/http://fuseyism.com/japi/icedtea7-classpath.html | url-status = dead }}.</ref> == 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 [[Java syntax#Access modifiers|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 [[Branching (software)|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.<ref name="generics-release">{{Citation | url = https://www.gnu.org/software/classpath/announce/20051102.html | series = Software |title= The GNU Project | contribution = GNU Classpath "95% and counting" 0.19 released | publisher = The Free Software Foundation | type = announcement | date = 2005-11-02 |access-date=31 May 2011}}.</ref> Since version 0.95,<ref name="release">{{Citation | url = https://www.gnu.org/software/classpath/announce/20090205.html | series = Software |title= The GNU Project | contribution = The release of GNU Classpath 0.98 "Better Late Than Never | publisher = The Free Software Foundation | type = announcement | date = 2009-02-05}}.</ref> Java 1.5 additions like generics have been fully integrated into the main branch. The branch can be built by using the [[Eclipse (software)|Eclipse]] 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]]ed open-source [[javac]] [[Java compiler|compiler]] using GNU Classpath and also allows the GNU Classpath class library, tools and examples to be compiled with [[javac]] itself. == Classes from the omg.org domain == [[File:Interoperable software.png|thumb|100px|Sun and GNU [[Common Object Request Broker Architecture|Corba]] interact in a two client game{{Refn | group = "lower-alpha" | Fosdem 2006 included this and other demonstrations of data exchange between Sun's and Classpath implementations of CORBA.<ref>{{Citation | url = http://developer.classpath.org/mediation/Fosdem2006 | type = conference archive | title = Fosdem | year = 2006 | publisher = Classpath}}.</ref> The source code is available<ref>{{Citation | publisher = The Free Software Foundation | type = example | format = source code | title = The GNU is Not Unix Project | contribution = Classpath | url = http://cvs.savannah.gnu.org/viewvc/classpath/examples/gnu/classpath/examples/CORBA/swing/x5/?root=classpath}}.</ref> in the Classpath repository.}}]] 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 [[Interface definition language|IDL]] files, released by the [[Object Management Group]]. 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 == {{Portal|Free and open-source software|Computer programming}} *[[Apache Harmony]] *[[GNU Compiler for Java]] *[[IKVM]] *[[JamVM]] *[[JamaicaVM]] *[https://web.archive.org/web/20080316045633/http://www.oberon.ethz.ch/jaos/ Jaos] *[[JikesRVM]] *[[Kaffe]] *[[IcedTea]] *[[Free Java implementations]] *[[Java Class Library]] ==Notes== {{Reflist | group = "lower-alpha"}} ==References== {{Reflist |32em}} ==External links== * {{Official website}} * {{Citation | url = http://developer.classpath.org/doc/ | contribution = Automatically generated documentation, including source code | title = Classpath}}. * {{Citation | url = http://builder.classpath.org/ | title = Classpath | contribution = Builder}}: test runs and binary compatibility tests * {{Citation | url = https://lwn.net/Articles/184967/ |date=May 2006 | type = article | author = A GNU Classpath developer | title = The state of free java project collaborations | newspaper = GNU/Linux weekly news}}. * {{Citation |url=http://public.smi.ethz.ch/blog/2006/01/25/permeable-development/ |title=SMI |type=[[World Wide Web]] log |date=2006-01-25 |contribution=Permeable Development |publisher=ETHZ |place=[[Switzerland|CH]] |url-status=dead |archive-url=https://web.archive.org/web/20060720171116/http://public.smi.ethz.ch/blog/2006/01/25/permeable-development/ |archive-date=2006-07-20 }}.<!-- Broken as of 2011-12-17 --> {{Java (Sun)}} {{GNU}} {{DEFAULTSORT:Gnu Classpath}} [[Category:GNU Project software|Classpath]] [[Category:Java (programming language) libraries|Classpath, GNU]] [[Category:Java platform|Classpath, GNU]] [[Category:Software using the GPL linking exception]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Clarify
(
edit
)
Template:GNU
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Java (Sun)
(
edit
)
Template:Main other
(
edit
)
Template:More citations needed
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Refn
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)