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
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
make-ca,
giflib,
Little
CMS 2, libjpeg-turbo,
libpng,
og Wget
Installasjon av OpenJDK
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
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.
|