OpenJDK-23.0.1

Introduksjon til OpenJDK

OpenJDK er en åpen kildekode implementering av Oracles Java Standard Edition plattform. OpenJDK er nyttig for utvikling av Java programmer, og gir en komplett kjøretidsmiljø å kjøre Java programmer.

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

OpenJDK er GPL kode, med et spesielt unntak laget for ikke-gratis prosjekter for å bruke disse klassene i sine proprietære produkter. På samme måte som LGPL, som lar ikke-gratis programmer koble til biblioteker levert av gratis programvare GNU General Public License, version 2, with the Classpath Exception tillater tredjepartsprogrammer å bruke klasser levert av gratis programvare uten krav om at tredjepartsprogramvaren også skal være gratis. Som med LGPL, eventuelle endringer som er gjort i de gratis programvaredelene av en tredjepartsapplikasjon, må også gjøres fritt tilgjengelig.

[Notat]

Notat

OpenJDK kilde inkluderer en veldig grundig, åpen kildekode testpakke ved hjelp av JTreg testpakken. Testinstruksjonene nedenfor tillater testing av den nettopp bygde JDK for rimelig kompatibilitet med den proprietære Oracle JDK. Men for en uavhengig implementering for å kreve kompatibilitet, må den passere en proprietær JCK/TCK testpakke. Ingen påstander om kompatibilitet, eller til og med delvis kompatibilitet, kan gjøres uten å ha bestått en godkjent testpakke.

Oracle gir gratis tilgang til fellesskapet, fra sak til sak, et lukket verktøysett for å sikre 100 % kompatibilitet med sin proprietære JDK. Verken den binære versjonen som er gitt på Java-23.0.1 siden heller ikke JVM bygget med instruksjonene nedenfor har blitt testet mot TCK. Enhver versjon som er bygget etter instruksjonene som er gitt, kan ikke hevde å være kompatibel med den proprietære JDK, uten at bruker selv søker om og fullfører kompatibilitetstestene.

Med det i tankene er binærfilene produsert ved hjelp av denne byggemetoden regelmessig testet mot TCK av medlemmene som er oppført på nettstedet ovenfor. I tillegg til fellesskapslisensen ovenfor, en pedagogisk, ikke-kommersiell lisens for TCK kan fås her.

Pakkeinformasjon

  • Nedlasting (HTTP): https://github.com/openjdk/jdk23u/archive/jdk-23.0.1-ga.tar.gz

  • Nedlasting MD5 sum: c71d665970872a0571d97b23f8867531

  • Nedlastingsstørrelse: 111 MB

  • Estimert diskplass som kreves: 3.7 GB (legg til 642 MB for tester)

  • Estimert byggetid: 5.0 SBU med 4 jobber (legg til 38 SBU for tester med 4 jobber)

Ytterligere Nedlastinger

Valgfri testpakke

OpenJDK Avhengigheter

Påkrevde Avhengigheter

En eksisterende binær (Java-23.0.1 eller en tidligere bygget versjon av denne pakken. Instruksjonene nedenfor forutsetter at du bruker Konfigurering av Java miljøet), alsa-lib-1.2.13, cpio-2.15, Cups-2.4.11, UnZip-6.0, Which-2.21, Xorg Biblioteker, og Zip-3.0

Anbefalt

Valgfri

git-2.47.1, Graphviz-12.2.0, Mercurial-6.9, ccache, pandoc, og pigz

Installasjon av OpenJDK

Hvis du har lastet ned den valgfrie testpakken, pakk den ut nå:

tar -xf ../jtreg-7.3.1+1.tar.gz
[Notat]

Notat

Før du fortsetter, bør du sørge for at miljøet ditt PATH variabelen inneholder plasseringen til Java kompilatoren som brukes til bootstrapping OpenJDK. Dette er det eneste kravet til miljøet. Moderne Java installasjoner trenger ikke JAVA_HOME og CLASSPATH brukes ikke her. Videre, OpenJDK utviklere anbefaler deaktivering av JAVA_HOME og CLASSPATH.

Byggesystemet tillater ikke -j bryteren i MAKEFLAGS. Se kommandoforklaringen for --with-jobs= for mer informasjon om tilpasning av parallellisering.

Konfigurer og bygg pakken med følgende kommandoer:

unset JAVA_HOME                             &&
unset CLASSPATH                             &&
bash configure --enable-unlimited-crypto    \
               --disable-warnings-as-errors \
               --with-stdc++lib=dynamic     \
               --with-giflib=system         \
               --with-harfbuzz=system       \
               --with-jtreg=$PWD/jtreg      \
               --with-lcms=system           \
               --with-libjpeg=system        \
               --with-libpng=system         \
               --with-zlib=system           \
               --with-version-build="11"    \
               --with-version-pre=""        \
               --with-version-opt=""        \
               --with-cacerts-file=/etc/pki/tls/java/cacerts &&
make images

For å teste resultatene, må du kjøre jtreg programmet. Du kan angi antall samtidige tester ved å legge til -conc:<X> verdi i kommandoen nedenfor (tester vil kjøre sekvensielt ellers):

export JT_JAVA=$(echo $PWD/build/*/jdk) &&
jtreg/bin/jtreg -jdk:$JT_JAVA -automatic -ignore:quiet -v1 \
    test/jdk:tier1 test/langtools:tier1 &&
unset JT_JAVA

For mer kontroll over testpakken, se gjennom dokumentasjonen tilgjengelig i jtreg/doc/jtreg/usage.txt. For å gjennomgå resultatene, se filene JTreport/test_{jdk,langtools}/text/stats.txt og JTreport/test_{jdk,langtools}/text/summary.txt. Du bør forvente å se rundt 80 mislykket og 10 feil.

Installer pakken med følgende kommandoer som root bruker:

install -vdm755 /opt/jdk-23.0.1+11             &&
cp -Rv build/*/images/jdk/* /opt/jdk-23.0.1+11 &&
chown -R root:root /opt/jdk-23.0.1+11          &&
for s in 16 24 32 48; do
  install -vDm644 src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
                  /usr/share/icons/hicolor/${s}x${s}/apps/java.png
done
[Notat]

Notat

Hvis du bare ønsker å installere Java Runtime Environment, kan du erstatte build/*/images/jre i ovenstående cp kommandoen.

Det er nå to OpenJDK SDKs installert i /opt. Du bør bestemme deg for hvilken du vil bruke som standard. Normalt ville du valgt den nettopp installerte OpenJDK. Hvis ja, gjør følgende som root bruker:

ln -v -nsf jdk-23.0.1+11 /opt/jdk

Om ønskelig kan du opprette .desktop filer for å legge til oppføringer i menyen for java og jconsole. De nødvendige ikonene har allerede blitt installert. Som root bruker:

mkdir -pv /usr/share/applications &&

cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 23.0.1 Runtime
Comment=OpenJDK Java 23.0.1 Runtime
Exec=/opt/jdk/bin/java -jar
Terminal=false
Type=Application
Icon=java
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
NoDisplay=true
EOF
cat > /usr/share/applications/openjdk-jconsole.desktop << "EOF"
[Desktop Entry]
Name=OpenJDK Java 23.0.1 Console
Comment=OpenJDK Java 23.0.1 Console
Keywords=java;console;monitoring
Exec=/opt/jdk/bin/jconsole
Terminal=false
Type=Application
Icon=java
Categories=Application;System;
EOF

Parameterforklaringer

bash configure...: det øverste nivå configure er en innpakning rundt autotools. Den er ikke kjørbar og må kjøres gjennom bash.

--enable-unlimited-crypto: På grunn av begrensninger på bruk av kryptografi i noen land, er det en mulighet å begrense størrelsen på krypteringsnøkler og bruken av noen algoritmer i en policyfil. Denne bryteren lar deg sende en policyfil med ingen begrensning. Det er brukerens ansvar å sørge for korrekt overholdelse av loven.

--disable-warnings-as-errors: Denne bryteren deaktiverer bruken av -Werror i bygget.

--with-stdc++lib=dynamic: Denne bryteren tvinger byggesystemet å koble til libstdc++.so (dynamisk) i stedet for libstdc++.a (statisk).

--with-jobs=<X>: -j passert å lage fungerer ikke med make som påberopt her. Som standard vil byggesystemet bruke antallet CPUer - 1.

--with-jtreg=$PWD/jtreg: Denne bryteren forteller configure hvor du finner jtreg. Utelat hvis du ikke har lastet ned valgfri testpakke.

--with-{giflib,harfbuzz,lcms,libjpeg,libpng,zlib}=system: Disse bryterne tvinger byggesystemet å bruke systembibliotekene i stedet for de medfølgende versjonene.

--with-version-build: Foreløpig, byggesystemet inkluderer ikke byggenummeret i versjonsstrengen. Det kan spesifiseres her.

--with-version-pre: Denne bryteren lar deg prefikse versjonsstrengen med en egendefinert streng.

--with-version-opt: Denne bryteren lar deg legge til en valgfri byggebeskrivelse til versjonsstrengen.

--with-cacerts-file=/etc/pki/tls/java/cacerts: Angir hvor du finner en cacerts fil, /etc/pki/tls/java/ på et BLFS system. Ellers blir en tom opprettet. Du kan bruke /usr/sbin/make-ca --force kommando for å generere den når du har installert Java binærfilene.

--with-boot-jdk: Denne bryteren gir plassering av den midlertidige JDK. Den er normalt ikke nødvendig hvis java finnes i PATH.

Konfigurere OpenJDK

Konfigurasjonsinformasjon

Normalt er Java miljøet konfigurert etter installasjon av den binære versjonen, og kan også brukes med den nettopp bygde pakken. Gjennomgå Konfigurering av Java miljøet i tilfelle du ønsker å endre noe.

For å teste om manualsidene er riktig installert, kjør source /etc/profile og man java for å vise den respektive manualsiden.

Sette opp JRE Certificate Authority Certificates (cacerts) filen

Hvis du har kjørt instruksjonene på make-ca-1.14 siden, trenger du bare å lage en symbolkobling på standardplasseringen for cacerts filen. Som bruker root:

ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts

For å sjekke installasjonen, kjør:

cd /opt/jdk
bin/keytool -list -cacerts

Ved ledeteksten Enter keystore password:, skriv changeit (standard) eller bare trykk på «Enter» tasten. Hvis cacerts filen var installert riktig, vil du se en liste over sertifikatene med relatert informasjon for hver enkelt. Hvis ikke, må du installere dem på nytt.

Innhold

Installerte Programmer: jar, jarsigner, java, javac, javadoc, javap, jcmd, jconsole, jdb, jdeprscan, jdeps, jfr, jhsdb, jimage, jinfo, jlink, jmap, jmod, jpackage, jps, jrunscript, jshell, jstack, jstat, jstatd, jwebserver, keytool, rmiregistry, og serialver
Installerte Biblioteker: 37 biblioteker i /opt/jdk-23.0.1+11/lib/
Installerte Mapper: /opt/jdk-23.0.1+11

Korte Beskrivelser

jar

kombinerer flere filer til et enkelt jar arkiv

jarsigner

signerer jar filer og verifiserer signaturene og integriteten av en signert jar fil

java

starter en Java applikasjon ved å starte et Java kjøretids miljø, laster en spesifisert klasse og påkaller dens hoved metode

javac

leser klasse- og grensesnittdefinisjoner, skrevet i Java programmeringsspråk, og kompilerer dem til bytekode klassefiler

javadoc

analyserer erklæringene og dokumentasjonskommentarene i en sett med Java kildefiler og produserer et tilsvarende sett med HTML sider som beskriver klassene, grensesnittene, konstruktsjonsmetoder, og felt

javap

demonterer en Java klassefil

jcmd

er et verktøy for å sende diagnostiske kommandoforespørsler til en kjørende Java Virtual Machine

jconsole

er et grafisk konsollverktøy for å overvåke og administrere både lokale og eksterne Java applikasjoner og virtuelle maskiner

jdb

er en enkel kommandolinjefeilsøker for Java klasser

jdeprscan

skanner klasse- eller jar-filer for bruk av utdaterte API elementer

jdeps

viser avhengighetene på pakkenivå eller klassenivå til Java klassefiler

jfr

er et verktøy for å jobbe med «Flight Recorder» filer

jhsdb

er et verktøy for å analysere innholdet i en kjernedump fra en krasjet Java Virtual Machine (JVM)

jimage

brukes til å liste, trekke ut, bekrefte eller få informasjon om moduler i jimage formatet

jinfo

skriver ut Java konfigurasjonsinformasjon for en gitt Java prosess, kjernefil eller en ekstern feilsøkingsserver

jlink

brukes til å sette sammen og optimalisere et sett med moduler og deres avhengigheter inn i et tilpasset kjøretidsbilde

jmap

skriver ut minnekart for delte objekter eller heap minnedetaljer av en gitt prosess, kjernefil eller en ekstern feilsøkingsserver

jmod

oppretter JMOD filer og viser innholdet i eksisterende JMOD filer

jpackage

genererer java applikasjonspakker og bilder

jps

viser de instrumenterte JVM-ene på målsystemet

jrunscript

er et kommandolinjeskriptskall

jshell

er et interaktivt verktøy for å lære Java programmering språk og prototyping av Java kode

jstack

skriver ut Java stabelspor av Java tråder for en gitt Java prosess, kjernefil eller en ekstern feilsøkingsserver

jstat

viser ytelsesstatistikk for en instrumentert JVM

jstatd

er en RMI-serverapplikasjon som overvåker opprettelsen og terminering av instrumenterte JVM-er

jwebserver

gir en minimal HTTP server, designet for å brukes til prototyping, testing og feilsøking

keytool

er et nøkkel- og sertifikatadministrasjonsverktøy

rmiregistry

oppretter og starter et eksternt objektregister på den spesifiserte porten på gjeldende vert

serialver

returnerer serialVersionUID for en eller flere klasser i en skjema egnet for kopiering til en klasse i utvikling