Java Class Library
This article needs additional citations for verification. (August 2011) |
The Java Class Library (JCL) is a set of
JCL serves three purposes within the JVM:
- Like other container classes and regular expressionprocessing.
- The library provides an abstract interface to tasks that would normally depend heavily on the hardware and operating system, such as network access and fileaccess.
- Some underlying platforms may not support all of the features a Java application expects. In these cases, the library implementation can either emulate those features or provide a consistent way to check for the presence of a specific feature.
Implementation and configuration
JCL is almost entirely written in Java, except for the parts that need direct access to the hardware and operating system (such as for I/O or bitmap graphics). The classes that give access to these functions commonly use Java Native Interface wrappers to access operating system APIs.
Almost all of JCL is stored in a single
The
Conformance
Any Java implementation must pass the Java Technology Compatibility Kit tests for compliance, which includes JCL tests.
Main features
JCL Features are accessed through
java.lang
contains fundamental classes andruntime system.- SCTP is available through.
com.sun.nio.sctp
- Mathematics package:provides mathematical expressions and evaluation, as well as arbitrary-precision decimal and integer number datatypes.
java.math
- logging and data compression.
- Swing package (. It also deals with editable and non-editable text components.
javax.swing
) is built on AWT and provides a platform-independent widget toolkit, as well as a pluggable look and feel - Sound: interfaces and classes for reading, writing, sequencing, and synthesizing of sound data.
- Text:
java.text
deals with text, dates, numbers and messages. - Image package:
java.awt.image
andjavax.imageio
provide APIs to write, read, and modify images. - JAX-WS.
- Security is provided by
java.security
and encryption services are provided byjavax.crypto
. - Databases: access to SQL databases via
java.sql
- Access to Scripting engines: The
javax.script
package gives access to any conforming Scripting language. - Applets:
java.applet
allows applications to be downloaded over a network and run within a guarded sandbox - Java Beans:provides ways to manipulate reusable components.
java.beans
- Introspection and reflection: java.lang.Class represents a class, but other classes such as Method and Constructor are available in
java.lang.reflect
.
Licensing
Prior licenses
Before the release of OpenJDK, the JDK was based on a proprietary license.
Following their promise to release a fully buildable
Until December 2010, the remaining encumbered part of the JDK was made available by Sun then Oracle as Binary Plugs[5] which were required to build the JDK but not necessary to run it. as of May 2007[update], the only part of the Class library that remained proprietary and closed-source (4% as of May 2007[update] for OpenJDK 7,[6] and less than 1% as of May 2008[update] and OpenJDK 6[7][8]) was[9] the SNMP implementation.[10]
Since the first May 2007 release, Sun, with the help of the community, released as open-source or replaced with open-source alternatives almost all the encumbered code:
- All the audio engine code, including the
- All cryptography classes were released as open-source,[13]
- The code that scales and rasterizes fonts uses open source FreeType[14][15][16]
- The native LittleCMS.[15]There is a pluggable layer in the JDK, so that the commercial release of Java can use the original, proprietary color management system and OpenJDK can use LittleCMS.
- The anti-aliasing graphics rasterizer code uses the open source Pisces renderer used in the phoneME project.[15][17][18]
- The JavaScript plugin is open source (the JavaScript engine itself was open source from the beginning).[19]
Open source release
Beginning in December 2010, all the so-called binary plugs were replaced by
Alternative implementations
GNU Classpath is the other main free software class library for Java. Contrary to other implementations, it only implements the Class Library, and is used by many free Java runtimes (like Kaffe, SableVM, JamVM).
Apache Harmony was another free software class library. Its aim was to implement the other parts of the Java stack (Virtual Machine, Compiler, and other tools required for any Java implementation).
See also
- Java Platform, Standard Edition
- List of Java APIs
- OpenJDK
- Free Java implementations
- Standard library
- Java applet
References
- ^ "How Classes are Found". Oracle Corporation. Retrieved 2015-12-05.
- ^ "JDK Module Summary". Oracle Corporation. 2015-10-23. Archived from the original on 2015-12-08. Retrieved 2015-11-29.
- ^ http://www.sun.com/software/opensource/java/faq.jsp#b4
- ^ Rich Green (2007-05-08). "Open JDK is here!". Sun Microsystems. Retrieved 2011-11-25.
- ^ "OpenJDK Binary Plugs". Sun Microsystems. 2007-05-08. Archived from the original on 2012-08-26. Retrieved 2011-11-25.
- ^ Fitzsimmons, Thomas (2007-05-18). "Plans for OpenJDK". Retrieved 2007-05-22.
- ^ Angel, Lillian (2008-03-13). "OpenJDK to replace IcedTea in Fedora 9". Archived from the original on 2012-12-10. Retrieved 2008-04-05.
- ^ Wade, Karsten (2008-03-13). "OpenJDK in Fedora 9!". redhatmagazine.com. Archived from the original on 2008-04-21. Retrieved 2008-04-05.
Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
- ^ Herron, David (2007-10-04). "Plans for OpenJDK". Archived from the original on 2007-10-11. Retrieved 2007-10-09.
- ^ a b "OpenJDK 6 b10 source posted". 2008-05-30. Retrieved 2008-06-01.
- ^ audio-engine project page
- ^ "Gervill – Software Synthesizer". Archived from the original on 2011-10-04. Retrieved 2008-06-01.
- ^ "Crypto has been added to OpenJDK". 2007-09-27. Retrieved 2007-10-07.
- ^ font-scaler projectpage
- ^ a b c Java2D project page
- ^ "Freetype font rasteriser". 2007-08-07. Retrieved 2007-11-24.
- ^ phoneme.dev.java.net/ Archived 2007-06-10 at the Wayback Machine
- ^ graphics-rasterizer project page
- ^ "Javascript is encumbered and there is no javascript plugin support". IcedTea. 2008-03-11. Archived from the original on 2008-09-27. Retrieved 2008-06-01.
Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support.
- ^ Kelly O'Hair (December 2010). "OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed". Oracle Corporation. Retrieved 2011-11-25.
External links
- Java SE Main page
- Java SE 19 API Javadocs
- Java SE API documentation
- Java software development kits (status as of August 2006[update]):