Java klassbibliotek

Java Class Library ( JCL ) är en uppsättning dynamiskt laddningsbara bibliotek som Java Virtual Machine-språk (JVM) kan anropa under körning . Eftersom Java-plattformen inte är beroende av ett specifikt operativsystem kan applikationer inte förlita sig på något av de plattformsbaserade biblioteken. Istället tillhandahåller Java-plattformen en omfattande uppsättning standardklassbibliotek, som innehåller de funktioner som är gemensamma för moderna operativsystem.

JCL tjänar tre syften inom JVM:

  • Liksom andra standardkodbibliotek ger de programmeraren en välkänd uppsättning användbara faciliteter, såsom containerklasser och bearbetning av reguljära uttryck .
  • Biblioteket tillhandahåller ett abstrakt gränssnitt för uppgifter som normalt skulle bero mycket på hårdvaran och operativsystemet, såsom nätverksåtkomst och filåtkomst .
  • Vissa underliggande plattformar kanske inte stöder alla funktioner som en Java-applikation förväntar sig. I dessa fall kan biblioteksimplementeringen antingen emulera dessa funktioner eller tillhandahålla ett konsekvent sätt att kontrollera förekomsten av en specifik funktion.

Implementering och konfiguration

JCL är nästan helt skrivet i Java, förutom de delar som behöver direkt tillgång till hårdvaran och operativsystemet ( som för I/O eller bitmappsgrafik ). Klasserna som ger åtkomst till dessa funktioner använder vanligtvis Java Native Interface- omslag för att komma åt operativsystemets API :er .

Nästan hela JCL lagras i en enda Java- arkivfil som heter "rt.jar" som är försedd med JRE- och JDK -distributioner. Java Class Library (rt.jar) finns i standardklassvägen för bootstrap och behöver inte visas i klasssökvägen som deklarerats för applikationen. Körtiden använder bootstrap class loader för att hitta JCL .

Java Module System (en del av Java 9 -utgåvan) bröt den monolitiska "rt.jar" JAR-filen och modulariserade själva JCL i flera moduler med specificerade beroenden.

Överensstämmelse

Alla Java-implementationer måste klara Java Technology Compatibility Kit- testerna för överensstämmelse, vilket inkluderar JCL-tester.

Huvuddrag

JCL-funktioner nås genom klasser som tillhandahålls i paket .

Licensiering

Tidigare licenser

Innan OpenJDK släpptes var JDK baserad på en egen licens .

Efter deras löfte att släppa en helt byggbar JDK baserad på nästan helt gratis och öppen källkod under första halvåret 2007, släppte Sun den kompletta källkoden för klassbiblioteket under GPL den 8 maj 2007, förutom några begränsade delar som licensierades av Sun från tredje part som inte ville att deras kod skulle släppas under en öppen källkodslicens. Suns mål var att ersätta de delar som förblir proprietära och sluten källkod med alternativa implementeringar och göra klassbiblioteket helt gratis och öppen källkod.

Fram till december 2010 gjordes den återstående belastade delen av JDK tillgänglig av Sun sedan Oracle som binära pluggar som krävdes för att bygga JDK men som inte var nödvändiga för att köra den. i maj 2007 var den enda delen av klassbiblioteket som förblev proprietär och med stängd källkod (4 % i maj 2007 för OpenJDK 7 och mindre än 1 % i maj 2008 och OpenJDK 6) SNMP- implementeringen .

Sedan den första versionen i maj 2007 har Sun, med hjälp av communityn, släppt som öppen källkod eller ersatt med alternativ med öppen källkod nästan all belastad kod:

  • All ljudmotorkod, inklusive mjukvarusynthesizern , blev öppen källkod. Programvarusyntesen med stängd källkod har ersatts av en ny synthesizer utvecklad specifikt för OpenJDK som heter Gervill ,
  • Alla kryptografiklasser släpptes som öppen källkod,
  • Koden som skalar och rastrerar teckensnitt använder öppen källkod FreeType
  • Den inbyggda färghanteringen använder LittleCMS med öppen källkod . Det finns ett pluggbart lager i JDK, så att den kommersiella versionen av Java kan använda det ursprungliga, proprietära färghanteringssystemet och OpenJDK kan använda LittleCMS.
  • Kantutjämningsgrafikens rasteriseringskod använder den öppen källkod Pisces-renderaren som används i phoneME - projektet .
  • JavaScript - pluginet är öppen källkod ( själva JavaScript-motorn var öppen källkod från början).

Utgivning med öppen källkod

ersattes alla så kallade binära pluggar av ersättningar med öppen källkod , vilket gjorde hela JDK öppen.

Alternativa implementeringar

GNU Classpath är det andra huvudbiblioteket för gratis programvara för Java. I motsats till andra implementeringar implementerar den bara klassbiblioteket och används av många gratis Java-körtider (som Kaffe , SableVM , JamVM ).

Apache Harmony var ett annat gratisprogrambibliotek. Dess syfte var att implementera de andra delarna av Java-stacken ( virtuell maskin , kompilator och andra verktyg som krävs för alla Java-implementeringar ).

Se även

externa länkar