OpenJDK-19.0.2
Introduction à OpenJDK
OpenJDK est une implémentation
libre de la plateforme d'édition standard Java d'Oracle.
OpenJDK est utile pour développer
des programmes Java, et fournir un
environnement d'exécution complet pour lancer des programmes
Java.
This package is known to build and work properly using an LFS 11.3
platform.
OpenJDK est sous GPL, avec une exception spéciale pour les projets
non-libres d'utiliser ces classes dans leurs produits
propriétaires. De façon similaire à la LGPL, qui autorise des
programmes non-libre à lier des bibliothèques fournit par des
programmes libres, la GNU General Public
License, version 2, avec l'exception des chemins de classe
autorise des programmes tiers à utiliser des classes fournies par
des programmes libres sans l'obligation que le programme tiers soit
également libre. Comme avec la LGPL, toutes les modifications
faites dans des parties d'un programme libre d'une application
tierce, doit également être librement disponible.
Note
Les sources de OpenJDK incluent
une suite de tests très complète et open source qui utilise
l'outil de tests JTreg. Les
instructions de tests suivantes permettent de tester le JDK tout
juste construit pour une compatibilité raisonnable avec le JDK
non-libre d'Oracle. Cependant, pour qu'une implémentation
indépendante revendique la compatibilité, elle doit passer une
suite de tests non-libre JCK/TCK. Aucune revendication de
compatibilité, même une compatibilité partielle, peut être faite
sans passer une suite de tests approuvée.
Oracle fournit un accès libre communautaire, au cas par cas, à
des outils fermés pour assurer une compatibilité à 100 %
avec leur JDK propriétaire. Cependant la version binaire fournie
sur la page Java-19.0.2 comme la JVM construit avec les
instructions suivantes n'ont pas été testées avec
TCK. Aucune version qui serait construite en utilisant les
instructions données, ne pourra revendiquer d'être compatible
avec le JDK propriétaire, sans que l'utilisateur demande, et
réussisse les tests de compatibilités.
Avec cela en tête, les binaires produits en utilisant cette
méthode de construction sont régulièrement testé avec le TCK par
les membres listés sur le site au-dessus. En plus de la licence
communautaire, une licence pour l'éducation, non-commerciale pour
TCK peut être obtenue ici.
Informations sur le paquet
-
Téléchargement (HTTP) :
https://github.com/openjdk/jdk19u/archive/jdk-19.0.2-ga.tar.gz
-
Somme de contrôle MD5 : 2c5489f4830bce40240dc4f76f890156
-
Taille du téléchargement : 103 Mo
-
Estimation de l'espace disque requis : 5,1 Go (plus
595 Mo pour les tests)
-
Estimation du temps de construction : 3,8 SBU avec
4 tâches (plus 41 SBU pour les tests avec 4 tâches)
Téléchargements supplémentaires
Tests facultatifs
Dépendances de OpenJDK
Dépendances de Required
Un binaire existant (Java-19.0.2 ou une version construite récente de
ce paquet. Les instructions qui suivent considèrent que vous
utilisez Configuration de
l'environnement JAVA) alsa-lib-1.2.8, cpio-2.13, Cups-2.4.2, UnZip-6.0, Which-2.21, Bibliothèques Xorg
et Zip-3.0
Recommandées
make-ca-1.12, giflib-5.2.1, Little CMS-2.14, libjpeg-turbo-2.1.5.1, libpng-1.6.39 et
Wget-1.21.3
Facultatives
git-2.39.2,
Graphviz-7.1.0, Mercurial-6.3.2,
pandoc et pigz
Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/openjdk
Installation de OpenJDK
Si vous avez téléchargé la suite de tests facultative,
décompressez-la maintenant :
tar -xf ../jtreg-6.1+1.tar.gz
Note
Avant de continuer, vous devez vous assurer que votre variable
d'environnement PATH
contient
l'emplacement du compilateur Java utilisé pour bootstrapper
OpenJDK. C'est le seul impératif
pour l'environnement. Les installations modernes de Java n'ont
pas besoin de JAVA_HOME
et
CLASSPATH
n'est pas utilisé ici. De
plus les développeurs d'OpenJDK recommandent de ne pas
initialiser JAVA_HOME
.
Le système de construction ne supporte pas l'option -j
dans MAKEFLAGS
.
Voir --with-jobs=
dans les
explications des commandes pour plus d'informations sur la
parallélisation.
Configurez et construisez le paquet avec les commandes
suivantes :
unset JAVA_HOME &&
bash configure --enable-unlimited-crypto \
--disable-warnings-as-errors \
--with-stdc++lib=dynamic \
--with-giflib=system \
--with-jtreg=$PWD/jtreg \
--with-lcms=system \
--with-libjpeg=system \
--with-libpng=system \
--with-zlib=system \
--with-version-build="7" \
--with-version-pre="" \
--with-version-opt="" \
--with-cacerts-file=/etc/pki/tls/java/cacerts &&
make images
Pour tester les résultats, vous devrez exécuter le programme jtreg.
Vous pouvez indiquer le nombre de tests en parallèle en ajoutant la
valeur -conc:<X>
à la commande
suivante (sinon les tests sont lancés de manière
séquentielle) :
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
Pour avoir plus de contrôle sur la suite de tests, regardez la
documentation disponible dans jtreg/doc/jtreg/usage.txt
. Pour vérifier les
résultats, ouvrez les fichiers JTreport/test_{jdk,langtools}/text/stats.txt
et
JTreport/test_{jdk,langtools}/text/summary.txt
.
Vous devriez vous attendre à une soixantaine d'échecs et une
dizaine d'erreurs.
Installez le paquet avec les commandes suivantes en tant
qu'utilisateur root
:
install -vdm755 /opt/jdk-19.0.2+7 &&
cp -Rv build/*/images/jdk/* /opt/jdk-19.0.2+7 &&
chown -R root:root /opt/jdk-19.0.2+7 &&
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
Note
Si vous souhaitez uniquement installer l'environnement
d'exécution de Java (JRE) vous pouvez utiliser build/*/images/jre
dans la commande
cp précédente.
Il y a maintenant deux SDK d'OpenJDK installés dans /opt
. Vous pouvez décider de laquelle vous voulez
utiliser par défaut. Normalement, vous devez opter pour la version
OpenJDK que vous venez
d'installer. Dans ce cas, exécutez la ligne suivante en tant
qu'utilisateur root
:
ln -v -nsf jdk-19.0.2+7 /opt/jdk
Si vous le souhaitez, vous pouvez créer des fichiers .desktop pour
ajouter des entrées dans le menu pour java et jconsole. Les icônes requises ont
déjà été installées. En tant qu'utilisateur root
:
mkdir -pv /usr/share/applications &&
cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 19.0.2 Runtime
Comment=OpenJDK Java 19.0.2 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 19.0.2 Console
Comment=OpenJDK Java 19.0.2 Console
Keywords=java;console;monitoring
Exec=/opt/jdk/bin/jconsole
Terminal=false
Type=Application
Icon=java
Categories=Application;System;
EOF
Explication des commandes
bash
configure... : Le niveau supérieur de
configure
est une enveloppe de celle
des autotools. Il n'est pas exécutable et doit être lancé avec
bash.
--enable-unlimited-crypto
: À
cause des limitations de l'usage de la cryptographie dans certains
pays, on peut limiter la taille des clés de cryptographie et
l'utilisation de certains algorithmes dans un fichier de politique.
Ce paramètre permet de garder un fichier de politique sans
restriction. Il est de la responsabilité de l'utilisateur de
s'assurer du bon respect de la loi.
--disable-warnings-as-errors
:
Ce paramètre désactive l'utilisation de -Werror
pendant la construction.
--with-stdc++lib=dynamic
: Ce
paramètre force le système de construction à se lier à libstdc++.so
(dynamique) plutôt que libstdc++.a
(statique).
--with-jobs=<X>
: le
paramètre -j
passé à make
ne fonctionne pas avec make quand il est invoqué ici. Par défaut,
le système de construction utilisera le nombre de CPU - 1.
--with-jtreg=$PWD/jtreg
: Ce
paramètre dit à configure où trouver jtreg. Ne le mettez pas si
vous n'avez pas téléchargé la suite de tests facultative.
--with-{giflib,lcms,libjpeg,libpng,zlib}=system
:
Permet d'utiliser les bibliothèques du système au lieu de celles
intégrées.
--with-version-build
:
Actuellement, le système de construction n'inclut pas le numéro de
construction dans la chaîne de version. Il est spécifié ici.
--with-version-pre
:
Ce paramètre permet d'ajouter un préfixe personnalisé à la chaîne
de version.
--with-version-opt
:
Ce paramètre permet d'ajouter une description facultative de la
construction à la chaîne de version.
--with-cacerts-file=/etc/pki/tls/java/cacerts
:
Spécifie où trouver un fichier cacerts
, /etc/pki/tls/java/
sur un système BLFS. Sinon, un
fichier vide est créé. Vous pouvez utiliser la commande
/usr/sbin/make-ca
--force pour le générer, une fois que vous avez
installé les binaires Java.
--with-boot-jdk
: Ce paramètre
fournit l'emplacement du JDK
temporaire. Ce n'est normalement pas nécessaire si java est trouvé dans le
PATH
.
Configuration de
OpenJDK
Information de configuration
Normalement, l'environnement JAVA a été configuré après
l'installation de la version binaire, et peut être utilisé avec
le paquet fraîchement construit. Regardez Configuration de
l'environnement JAVA dans le cas où vous voudriez modifier
quelque chose.
Pour tester que les pages de manuel sont correctement installées,
tapez source
/etc/profile et man
java pour afficher les pages de manuel
respectives.
Configuration du fichier de certificats d'autorités de
certification pour JRE (cacerts)
Si vous avez lancé les instructions de la page make-ca-1.12, vous n'avez qu'à créer un lien
symbolique à l'emplacement par défaut pour le fichier
cacerts
. En tant qu'utilisateur
root
:
ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts
Pour vérifier l'installation, lancez :
cd /opt/jdk
bin/keytool -list -cacerts
À l'invite Enter keystore
password:
, saisissez changeit
(la valeur par défaut)
ou appuyez seulement sur la touche « Entrée ».
Si le fichier cacerts
a été
correctement installé, vous verrez une liste de certificats avec
des informations relatives à chacun. Sinon, vous devez les
réinstaller.
Contenu
Programmes installés:
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
et serialver
Bibliothèques installées:
/opt/jdk-19.0.2/lib/*
Répertoire installé:
/opt/jdk-19.0.2
Descriptions courtes
jar
|
combine des fichiers différents en une seule archive jar
|
jarsigner
|
signe les fichiers jar et vérifie la signature et
l'intégrité d'un fichier jar signé
|
java
|
lance une application Java en démarrant l'environnement
d'exécution Java, chargeant une classe spécifiée et
invoquant sa méthode main
|
javac
|
lit les définitions de classe et d'interface, écrit dans
le langage de programmation Java, et les compile en des
fichiers de classe en bytecode
|
javadoc
|
analyse les déclarations et les commentaires de
documentation dans un ensemble de fichiers source Java et
produit l'ensemble correspondant des pages HTML décrivant
les classes, les interfaces, les méthodes de
constructions et les champs
|
javap
|
désassemble un fichier de classe Java
|
jcmd
|
est un utilitaire pour envoyer les demandes de diagnostic
à une machine virtuelle Java
|
jconsole
|
est un outil graphique de console pour surveiller et
gérer les applications Java locales et distantes et les
machines virtuelles
|
jdb
|
est un simple débogueur en ligne de commande pour les
classes Java
|
jdeprscan
|
scanne les fichiers de classes ou jar pour trouver des
utilisations d'éléments obsolètes de l'API
|
jdeps
|
montre les dépendances en termes de paquets ou de classes
des fichiers de classes Java
|
jfr
|
est un outil pour travailler avec les fichiers
« Flight
Recorder »
|
jhsdb
|
est un outil pour analyser le contenu d'un core dump
d'une machine virtuelle java (JVM) crashée
|
jimage
|
est utilisé pour lister, extraire, vérifier ou récupérer
des informations sur les modules au format jimage
|
jinfo
|
affiche les informations de configuration de Java pour un
processus Java donné, un fichier core, ou un serveur de
débogage distant
|
jlink
|
est utilisé pour assembler et optimiser un ensemble de
modules et leurs dépendances dans une image d'exécution
personnalisée
|
jmap
|
affiche les cartes mémoires des objets partagés ou les
détails mémoire d'un processus donné, d'un fichier core,
ou d'un serveur de débogage distant
|
jmod
|
crée des fichiers JMOD et liste le contenu de fichiers
JMOD existants
|
jpackage
|
génère des paquets et des images d'applications Java
|
jps
|
liste les JVM instrumentées sur le système cible
|
jrunscript
|
est un script shell en ligne de commandes
|
jshell
|
est un outil interactif pour apprendre le langage de
programmation Java et prototyper du code Java
|
jstack
|
affiche la pile des traces JAVA, des treads Java pour un
processus Java donné, un fichier core, ou un serveur de
débogage distant
|
jstat
|
affiche les statistiques de performance pour une JVM
instrumentée
|
jstatd
|
est une application serveur RMI qui surveille la création
et l'arrêt des JVM instrumentés
|
jwebserver
|
fournit un serveur HTTP minimaliste, conçu pour être
utilisé pour le prototypage, le test et le débogage
|
keytool
|
est un utilitaire de gestion des clés et certificats
|
rmiregistry
|
crée et démarre un registre d'objet distant sur le port
spécifié de l'hôte actuel
|
serialver
|
retourne le serialVersionUID pour une ou plusieurs
classes sous une forme appropriée pour la copie dans une
classe évolutive
|