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 .
-
java.lang
innehåller grundläggande klasser och gränssnitt nära knutna till språket och körtidssystemet . -
I/O och nätverk får åtkomst till plattformens filsystem och mer allmänt nätverk genom paketen
java.io
,java.nio
ochjava.net .
För nätverk är SCTP tillgängligt viacom.sun.nio.sctp
. -
Matematikpaket :
java.math
tillhandahåller matematiska uttryck och utvärdering, såväl som decimal- och heltalsdatatyper med godtycklig precision. - Samlingar och verktyg: inbyggda samlingsdatastrukturer och verktygsklasser för reguljära uttryck , samtidighet , loggning och datakomprimering .
-
GUI och 2D-grafik : AWT -paketet (
java.awt
) grundläggande GUI-operationer och binder till det underliggande inbyggda systemet. Den innehåller också 2D Graphics API. Swing - paketet (javax.swing
) är byggt på AWT och ger en plattformsoberoende widget-verktygssats , samt ett pluggbart utseende och känsla . Den behandlar också redigerbara och icke-redigerbara textkomponenter. - Ljud: gränssnitt och klasser för läsning, skrivning, sekvensering och syntetisering av ljuddata.
- Text:
java.text
handlar om text, datum, siffror och meddelanden. - Bildpaket:
java.awt.image
ochjavax.imageio
tillhandahåller API:er för att skriva, läsa och ändra bilder. - XML : SAX , DOM , StAX , XSLT transformer , XPath och olika API:er för webbtjänster , som SOAP-protokoll och JAX-WS .
- Säkerhet tillhandahålls av
java.security
och krypteringstjänster tillhandahålls avjavax.crypto
. -
Databaser : tillgång till SQL- databaser via
java.sql
- Tillgång till skriptmotorer: paketet
javax.script
ger tillgång till alla överensstämmande skriptspråk . -
Applets :
java.applet
låter applikationer laddas ner över ett nätverk och köras i en bevakad sandlåda -
Java Beans :
java.beans
tillhandahåller sätt att manipulera återanvändbara komponenter. - Introspektion och reflektion: java.lang.Class representerar en klass, men andra klasser som Method och Constructor är tillgängliga i
java.lang.reflect
.
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
- Java-plattform, standardutgåva
- Lista över Java API:er
- OpenJDK
- Gratis Java-implementationer
- Standardbibliotek
- Java applet
externa länkar
- Java SE Huvudsida
- Java SE 19 API Javadocs
- Java SE API dokumentation
- Java-programutvecklingssatser (status från augusti 2006):