OpenJDK-17.0.17-ga

Introduksjon til OpenJDK

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

OpenJDK er GPL kode, med et spesielt unntak for ikke-frie prosjekter som bruker disse klassene i sine proprietære produkter. På samme måte som LGPL, som tillater ikke-frie programmer å lenke til biblioteker levert av fri programvare, GNU General Public License, version 2, with the Classpath Exception tillater tredjepartsprogrammer å bruke klasser levert av fri programvare uten krav om at tredjepartsprogramvaren også er fri. Som med LGPL, må eventuelle modifikasjoner som gjøres i friprogramvaredelene av et tredjepartsprogram også gjøres fritt tilgjengelige.

[Notat]

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

OpenJDK Avhengigheter

Påkrevde Avhengigheter

En eksisterende binærfil (Java-17.0.17-ga eller en tidligere bygget versjon av denne pakken. Instruksjonene nedenfor forutsetter at du bruker Konfigurering av JAVA miljøet), alsa-lib, cpio, Cups, libarchive, Xorg Libraries, Which, og Zip

Anbefalt

Installasjon av OpenJDK

[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 oppstart av OpenJDK. Dette er det eneste kravet for miljøet. Moderne Java installasjoner trenger ikke JAVA_HOME og CLASSPATH brukes ikke her. Videre anbefaler OpenJDK utviklere å avinstallere JAVA_HOME.

Byggesystemet tillater ikke -j bryteren i MAKEFLAGS. Se parameterforklaringer for kommandoen --with-jobs= for mer informasjon om tilpassing av parallellisering.

Konfigurer og bygg pakken med følgende kommandoer:

export MAKEFLAGS_HOLD=$MAKEFLAGS           &&
unset JAVA_HOME                            &&
unset CLASSPATH                            &&
unset MAKEFLAGS                            &&
bash configure --enable-unlimited-crypto    \
               --disable-warnings-as-errors \
               --with-jobs=$(nproc)         \
               --with-stdc++lib=dynamic     \
               --with-giflib=system         \
               --with-lcms=system           \
               --with-libjpeg=system        \
               --with-libpng=system         \
               --with-zlib=system           \
               --with-version-build="10"     \
               --with-version-pre=""        \
               --with-version-opt=""        \
               --with-cacerts-file=/etc/pki/tls/java/cacerts &&

make images

Installer pakken med følgende kommandoer som root bruker:

install -vdm755 /opt/jdk-17.0.17-ga &&
cp -Rv build/*/images/jdk/* /opt/jdk-17.0.17-ga &&
chown -R root:root /opt/jdk-17.0.17-ga &&
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 den ovennevnte cp kommandoen.

Det vil være mange binærfiler med feilsøkingsinformasjon som tar opp over halvparten av den installerte størrelsen. Hvis du ikke bryr deg om feilsøking, kan du fjerne informasjonen:

find /opt/jdk-17.0.17-ga -name *.debuginfo -delete

Gjenopprett MAKEFLAGS variabelen:

export MAKEFLAGS=$MAKEFLAGS_HOLD &&
unset  MAKEFLAGS_HOLD

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

ln -v -nsf jdk-17.0.17-ga /opt/jdk

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

mkdir -pv /usr/share/applications &&

cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 17.0.17 Runtime
Comment=OpenJDK Java 17.0.17 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 17.0.17 Console
Comment=OpenJDK Java 17.0.17 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ået configure er en innpakning rundt Autotools. Den er ikke kjørbar og må kjøres gjennom bash.

--enable-unlimited-crypto: På grunn av begrensninger i bruken av kryptografi i noen land, er det mulig å begrense størrelsen på krypteringsnøkler og bruken av enkelte algoritmer i en retningslinjefil. Denne bryteren tillater å sende en retningslinjefil uten begrensninger. Det er brukerens ansvar å sikre korrekt overholdelse av loven.

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

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

--with-stdc++lib=dynamic: Denne bryteren tvinger byggesystemet å lenke til libstdc++.so (dynamisk) istedenfor libstdc++.a (statisk).

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

--with-version-build: For øyeblikket inkluderer ikke byggesystemet byggenummeret i versjonsstrengen. Det må spesifiseres her.

--with-version-pre: Denne bryteren lar deg sette en egendefinert streng foran versjonsstrengen.

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

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

--with-boot-jdk: Denne bryteren angir plasseringen til den midlertidige JDK-en. Den er vanligvis ikke nødvendig hvis java finnes i PATH.

Konfigurere OpenJDK

Konfigurasjonsinformasjon

Normalt sett er JAVA miljøet konfigurert etter installasjon av binærversjonen, og kan også brukes med den nettopp bygde pakken. Gjennomgå Konfigurering av JAVA miljøet i tilfelle du vil endre noe.

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

Konfigurere JRE sertifikatutsteders sertifikatfil (cacerts)

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

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

For å sjekke installasjonen, utsted:

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

Ved spørsmålet Enter keystore password:, skriv changeit (standard) eller bare trykk på «Retur» tasten. Hvis cacerts filen ble installert riktig, vil du se en liste over sertifikatene med relatert informasjon for hvert 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: /opt/jdk-17.0.17+10/lib/*
Installerte Mapper: /opt/jdk-17.0.17+10

Korte Beskrivelser

jar

kombinerer flere filer i et enkelt jar arkiv

jarsigner

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

java

starter et Java program ved å starte et Java kjøretidsmiljø, laste inn en spesifisert klasse og kalle dens hovedmetode.

javac

leser klasse og grensesnitt definisjoner, skrevet i programmeringsspråket Java, og kompilerer dem til bytekode klassefiler

javadoc

analyserer deklarasjonene og dokumentasjonskommentarene i et sett med Java kildefiler og produserer et tilsvarende sett med HTML sider som beskriver klassene, grensesnittene, konstruktørene, metodene og feltene

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økingsfunksjon for Java klasser

jdeprscan

skanner klasse eller jar filer for bruk av utdaterte API elementer

jdeps

viser pakkenivå eller klassenivå avhengigheter for 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 opp, trekke ut, verifisere eller hente 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 til et tilpasset kjøretidsbilde

jmap

skriver ut delte objektminnekart eller heap minnedetaljer for 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 programmeringsspråket og prototyping av Java kode

jstack

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

jstat

viser ytelsesstatistikk for en instrumentert JVM

jstatd

er et RMI serverprogram som overvåker opprettelsen og avslutningen av instrumenterte JVM-er

jwebserver

tilbyr en minimal HTTP server, designet for bruk til prototyping, testing og feilsøking

keytool

er et verktøy for administrasjon av nøkler og sertifikater

rmiregistry

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

serialver

returnerer serialVersionUID for én eller flere klasser i et format som er egnet for kopiering til en klasse i utvikling.