Java Class Library - Java Class Library
Die Java Class Library ( JCL ) ist eine Reihe dynamisch ladbarer Bibliotheken , die Java Virtual Machine (JVM) -Sprachen zur Laufzeit aufrufen können . Da die Java-Plattform nicht von einem bestimmten Betriebssystem abhängig ist , können sich Anwendungen nicht auf eine der plattformeigenen Bibliotheken verlassen. Stattdessen bietet die Java-Plattform einen umfassenden Satz von Standardklassenbibliotheken , die die Funktionen enthalten, die modernen Betriebssystemen gemeinsam sind.
JCL dient innerhalb der JVM drei Zwecken:
- Wie andere Standardcodebibliotheken bieten sie dem Programmierer eine Reihe nützlicher Funktionen wie Containerklassen und die Verarbeitung regulärer Ausdrücke .
- Die Bibliothek bietet eine abstrakte Schnittstelle zu Aufgaben, die normalerweise stark von der Hardware und dem Betriebssystem abhängen, z. B. Netzwerkzugriff und Dateizugriff .
- Einige zugrunde liegende Plattformen unterstützen möglicherweise nicht alle Funktionen, die eine Java-Anwendung erwartet. In diesen Fällen kann die Bibliotheksimplementierung diese Features entweder emulieren oder eine konsistente Möglichkeit bieten, das Vorhandensein eines bestimmten Features zu überprüfen.
Implementierung und Konfiguration
Die Java Class Library ( JCL ) ist fast vollständig in Java geschrieben, mit Ausnahme der Teile, die direkten Zugriff auf die Hardware und das Betriebssystem benötigen (z. B. für E / A- oder Bitmap-Grafiken ). Die Klassen, die Zugriff auf diese Funktionen gewähren, verwenden normalerweise Java Native Interface- Wrapper, um auf Betriebssystem- APIs zuzugreifen .
Fast die gesamte JCL wird in einer einzigen Java-Archivdatei namens "rt.jar" gespeichert, die mit JRE- und JDK- Distributionen bereitgestellt wird . Die Java-Klassenbibliothek (rt.jar) befindet sich im Standard-Bootstrap-Klassenpfad und muss nicht in dem für die Anwendung deklarierten Klassenpfad angezeigt werden . Die Laufzeit verwendet den Bootstrap-Klassenlader, um die JCL zu finden.
Das Java-Modulsystem (Teil der Java 9- Version) hat die monolithische JAR-Datei "rt.jar" beschädigt und die JCL selbst in mehreren Modulen mit angegebenen Abhängigkeiten modularisiert.
Konformität
Jede Java-Implementierung muss die Java Technology Compatibility Kit- Tests auf Konformität bestehen, einschließlich JCL-Tests.
Haupteigenschaften
Auf JCL-Funktionen wird über Klassen zugegriffen , die in Paketen bereitgestellt werden .
-
java.lang
enthält grundlegende Klassen und Schnittstellen, die eng mit dem Sprach- und Laufzeitsystem verbunden sind . -
I / O und Netzwerk - Zugriff auf dem Plattform - Dateisystem und allgemeine Netzwerke durch die
java.io
,java.nio
undjava.net
Pakete. Für die Vernetzung steht SCTP über zur Verfügungcom.sun.nio.sctp
. -
Mathematikpaket :
java.math
Bietet mathematische Ausdrücke und Auswertungen sowie Datentypen mit beliebiger Genauigkeit für Dezimalzahlen und Ganzzahlen. - Sammlungen und Anschlüsse: integrierte Sammlung Datenstrukturen und Utility - Klassen, für Reguläre Ausdrücke , Concurrency , Protokollierung und Datenkompression .
-
GUI- und 2D-Grafiken : Die grundlegenden GUI-Operationen des AWT- Pakets (
java.awt
), die an das zugrunde liegende native System gebunden sind. Es enthält auch die 2D-Grafik-API. Das Swing- Paket (javax.swing
) basiert auf AWT und bietet ein plattformunabhängiges Widget-Toolkit sowie ein Pluggable-Erscheinungsbild . Es werden auch bearbeitbare und nicht bearbeitbare Textkomponenten behandelt. - Sound: Schnittstellen und Klassen zum Lesen, Schreiben, Sequenzieren und Synthetisieren von Sounddaten.
- Text:
java.text
Behandelt Text, Daten, Zahlen und Nachrichten. - Image-Paket:
java.awt.image
undjavax.imageio
bieten APIs zum Schreiben, Lesen und Ändern von Bildern. - XML : SAX- , DOM- , StAX- , XSLT-Transformationen , XPath und verschiedene APIs für Webdienste wie SOAP-Protokoll und JAX-WS .
- CORBA- und RMI- APIs, einschließlich eines integrierten ORB
- Sicherheit wird bereitgestellt von
java.security
und Verschlüsselungsdienste werden bereitgestellt vonjavax.crypto
. -
Datenbanken : Zugriff auf SQL- Datenbanken über
java.sql
- Zugriff auf Scripting-Engines: Das
javax.script
Paket bietet Zugriff auf alle konformen Scripting-Sprachen . -
Applets :
java.applet
Ermöglicht das Herunterladen von Anwendungen über ein Netzwerk und das Ausführen in einer geschützten Sandbox -
Java Beans :
java.beans
Bietet Möglichkeiten zum Manipulieren wiederverwendbarer Komponenten. - Selbstbeobachtung und Reflexion: java.lang.Class stellt eine Klasse dar, aber andere Klassen wie Method und Constructor sind in verfügbar
java.lang.reflect
.
Lizenzierung
Vorherige Lizenzen
Vor der Veröffentlichung von OpenJDK basierte das JDK auf einer proprietären Lizenz .
Nach dem Versprechen, im ersten Halbjahr 2007 ein vollständig erstellbares JDK zu veröffentlichen, das auf fast vollständig kostenlosem Open-Source-Code basiert, veröffentlichte Sun am 8. Mai 2007 den vollständigen Quellcode der Klassenbibliothek unter der GPL , mit Ausnahme einiger begrenzter Teile wurden von Sun von Dritten lizenziert, die nicht wollten, dass ihr Code unter einer Open-Source-Lizenz veröffentlicht wird. Suns Ziel war es, die Teile, die proprietär und Closed Source bleiben, durch alternative Implementierungen zu ersetzen und die Klassenbibliothek vollständig kostenlos und Open Source zu machen.
Bis Dezember 2010 wurde der verbleibende belastete Teil des JDK von Sun und Oracle als Binary Plugs zur Verfügung gestellt, die zum Erstellen des JDK erforderlich, aber nicht zum Ausführen erforderlich waren. Ab Mai 2007 war der einzige Teil der Klassenbibliothek, der proprietär und geschlossen blieb (4% ab Mai 2007 für OpenJDK 7 und weniger als 1% ab Mai 2008 und OpenJDK 6):
- Die SNMP- Implementierung.
Seit der ersten Veröffentlichung im Mai 2007 hat Sun mit Hilfe der Community fast den gesamten belasteten Code als Open Source veröffentlicht oder durch Open Source-Alternativen ersetzt:
- Der gesamte Audio-Engine-Code, einschließlich des Software-Synthesizers , wurde Open Source. Der Closed-Source-Software-Synthesizer wurde durch einen neuen Synthesizer ersetzt, der speziell für OpenJDK entwickelt wurde und Gervill heißt.
- Alle Kryptographieklassen wurden als Open Source veröffentlicht,
- Der Code, der Schriftarten skaliert und rastert, verwendet Open Source FreeType
- Das native Farbmanagement verwendet Open-Source- LittleCMS . Das JDK enthält eine steckbare Schicht, sodass die kommerzielle Version von Java das ursprüngliche, proprietäre Farbmanagementsystem und OpenJDK LittleCMS verwenden kann.
- Der Anti-Aliasing- Grafik- Rasterizer- Code verwendet den Open-Source-Renderer Pisces, der im phoneME- Projekt verwendet wird.
- Das JavaScript- Plugin ist Open Source (die JavaScript-Engine selbst war von Anfang an Open Source).
Open Source Release
Ab Dezember 2010 wurden alle sogenannten Binärstecker durch Open Source- Ersetzungen ersetzt, wodurch das gesamte JDK geöffnet wurde.
Alternative Implementierungen
GNU Classpath ist die andere Hauptbibliothek für freie Software für Java. Im Gegensatz zu anderen Implementierungen implementiert es nur die Klassenbibliothek und wird von vielen freien Java-Laufzeiten (wie Kaffe , SableVM , JamVM ) verwendet.
Apache Harmony war eine weitere Bibliothek für freie Software. Ziel war es, die anderen Teile des Java-Stacks ( Virtual Machine , Compiler und andere Tools, die für eine Java-Implementierung erforderlich sind) zu implementieren .
Siehe auch
- Java Platform, Standard Edition
- Liste der Java-APIs
- OpenJDK
- Kostenlose Java-Implementierungen
- Standardbibliothek
- Java-Applet
Verweise
Externe Links
- Java SE Hauptseite
- Java SE 10 API Javadocs
- Java SE API-Dokumentation
- Java-Softwareentwicklungskits (Stand August 2006):