Java Class Library - Java Class Library

De Java Class Library ( JCL ) is een set dynamisch laadbare bibliotheken die Java Virtual Machine (JVM) -talen tijdens runtime kunnen aanroepen . Omdat het Java-platform niet afhankelijk is van een specifiek besturingssysteem , kunnen applicaties niet vertrouwen op een van de platform-native bibliotheken. In plaats daarvan biedt het Java-platform een ​​uitgebreide set standaardklassebibliotheken , met de functies die gangbaar zijn in moderne besturingssystemen.

JCL dient drie doelen binnen de JVM:

  • Net als andere standaard codebibliotheken , bieden ze de programmeur een bekende reeks nuttige faciliteiten, zoals containerklassen en verwerking van reguliere expressies .
  • De bibliotheek biedt een abstracte interface voor taken die normaal gesproken sterk afhankelijk zijn van de hardware en het besturingssysteem, zoals netwerktoegang en bestandstoegang .
  • Sommige onderliggende platforms ondersteunen mogelijk niet alle functies die een Java-applicatie verwacht. In deze gevallen kan de bibliotheekimplementatie die functies emuleren of een consistente manier bieden om te controleren op de aanwezigheid van een specifiek kenmerk.

Implementatie en configuratie

Java Class Library ( JCL ) is bijna volledig geschreven in Java, behalve de onderdelen die directe toegang tot de hardware en het besturingssysteem nodig hebben (zoals voor I / O of bitmapafbeeldingen ). De klassen die toegang geven tot deze functies gebruiken gewoonlijk Java Native Interface- wrappers om toegang te krijgen tot API's van het besturingssysteem .

Bijna al het JCL wordt opgeslagen in een enkel Java-archiefbestand genaamd "rt.jar" dat wordt geleverd met JRE- en JDK- distributies. De Java Class Library (rt.jar) bevindt zich in het standaard bootstrap classpath en hoeft niet te verschijnen in het classpath dat voor de applicatie is gedeclareerd. De runtime gebruikt de bootstrap class loader om de JCL te vinden.

Het Java- modulesysteem (onderdeel van de Java 9- release) brak het monolithische "rt.jar" JAR-bestand en modulariseerde de JCL zelf in verschillende modules met gespecificeerde afhankelijkheden.

Conformiteit

Elke Java-implementatie moet voldoen aan de Java Technology Compatibility Kit- tests, waaronder JCL-tests.

Belangrijkste kenmerken

JCL-functies zijn toegankelijk via klassen die in pakketten worden geleverd .

Licenties

Eerdere licenties

Vóór de release van OpenJDK was de JDK gebaseerd op een eigen licentie .

Na hun belofte om in de eerste helft van 2007 een volledig bouwbare JDK uit te brengen op basis van bijna volledig gratis en open-sourcecode, heeft Sun op 8 mei 2007 de volledige broncode van de Class Library vrijgegeven onder de GPL , met uitzondering van enkele beperkte delen die zijn door Sun gelicentieerd van derden die niet wilden dat hun code werd vrijgegeven onder een open-source licentie. Het doel van Sun was om de onderdelen die eigendom en closed source blijven te vervangen door alternatieve implementaties en de Class Library volledig gratis en open source te maken.

Tot december 2010 werd het resterende bezwaarde deel van de JDK door Sun en vervolgens Oracle beschikbaar gesteld als binaire pluggen die nodig waren om de JDK te bouwen, maar niet noodzakelijk om deze uit te voeren. vanaf mei 2007 was het enige deel van de Class-bibliotheek dat eigendom en closed-source bleef (4% vanaf mei 2007 voor OpenJDK 7, en minder dan 1% vanaf mei 2008 en OpenJDK 6):

Sinds de eerste release van mei 2007 is Sun, met de hulp van de community, vrijgegeven als open-source of vervangen door open-source-alternatieven, bijna alle bezwaarde code:

  • Alle audio-engine-code, inclusief de softwaresynthesizer , werd open source. De closed-source softwaresynthesizer is vervangen door een nieuwe synthesizer die speciaal voor OpenJDK is ontwikkeld, genaamd Gervill ,
  • Alle cryptografieklassen zijn vrijgegeven als open-source,
  • De code die lettertypen schaalt en rastert, gebruikt open source FreeType
  • Het native kleurbeheer maakt gebruik van open-source LittleCMS . Er is een pluggable laag in de JDK, zodat de commerciële release van Java het originele, gepatenteerde kleurbeheersysteem kan gebruiken en OpenJDK LittleCMS kan gebruiken.
  • De anti-aliasing grafische rastercode maakt gebruik van de open source Pisces-renderer die wordt gebruikt in het phoneME- project.
  • De JavaScript- plug-in is open source (de JavaScript-engine zelf was vanaf het begin open source).

Open source-versie

Vanaf december 2010 zijn alle zogenaamde binaire pluggen vervangen door open source vervangingen, waardoor de hele JDK open is.

Alternatieve implementaties

GNU Classpath is de andere belangrijke gratis softwareklassenbibliotheek voor Java. In tegenstelling tot andere implementaties, implementeert het alleen de Class Library en wordt het gebruikt door veel gratis Java-runtimes (zoals Kaffe , SableVM , JamVM ).

Apache Harmony was een andere bibliotheek met vrije softwareklassen. Het doel was om de andere delen van de Java-stack ( virtuele machine , compiler en andere tools die nodig zijn voor elke Java-implementatie ) te implementeren .

Zie ook

Referenties

Externe links