OpenJDK-9.0.4
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.
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-8.2.
Note
Un greffon de navigateur et une implémentation de webstart sont
fournis par le projet Icedtea. Pour fournir une implémentation
complète, vous devrez installer plus tard IcedTea-Web-1.7.1.
OpenJDK est sous GPL, cependant, il convient de préciser qu'il y a
eu 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 appelée
JTreg. Les instructions de tests
suivantes permettent de tester le JDK tout juste construit pour
une compatibilité raisonnable avec le JDK fermé d'Oracle.
Cependant, pour qu'une implémentation indépendante revendique la
compatibilité, elle doit passer une suite de tests fermée
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-9.0.4 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 supplément 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) :
http://hg.openjdk.java.net/jdk-updates/jdk9u/archive/jdk-9.0.4+11.tar.bz2
-
Somme de contrôle MD5 du téléchargement :
174205155c001cf0cc5d3250d86cfb69
-
Taille du téléchargement : 812 Ko
-
En plus du paquet principal, les instructions suivantes
commecent par télécharger sept archives de sous-projet, pour
une taille totale de 83 Mo.
-
Estimation de l'espace disque requis : 4.6 Go (676 Mo
supplémentaires pour les tests)
-
Estimation du temps de construction : 3.8 SBU avec 4
tâches en parallèle (12.1 SBU supplémentaires pour les tests
avec 4 travaux)
Téléchargements supplémentaires
Suite de tests facultative
Dépendances de OpenJDK
Dépendances de Required
Un binaire existant (Java-9.0.4 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.1.5, cpio-2.12, Cups-2.2.6, UnZip-6.0, Which-2.21, Bibliothèques Xorg
et Zip-3.0.
Recommandées
make-ca-0.7, giflib-5.1.4, Little CMS-2.9, libjpeg-turbo-1.5.3, libpng-1.6.34 et
Wget-1.19.4
Facultatives
Mercurial-4.5 et un gestionnaire de fenêtres X
comme twm-1.0.9 (pour les tests)
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/openjdk
Installation de OpenJDK
Contrairement aux autres paquets dans BLFS, les sources de
OpenJDK sont distribuées dans de
multiples archives. Vous devez commencer par extraire les sources
racines depuis le fichier jdk-9.0.4+11.tar.bz2
. Allez dans le répertoire
extrait, puis continuez avec les instructions suivantes :
cat > subprojects.md5 << EOF &&
dbc62e27a93686a9aea12e9c97c2f765 corba.tar.bz2
25853ba33123397b2e755249f102ae73 hotspot.tar.bz2
f5ab5e468565e1ab3a181d2efb45b51f jaxp.tar.bz2
520ff49cb470fbcec2f46cbb3fdb377d jaxws.tar.bz2
be9f261b19451ab1300c5842188e3fe2 jdk.tar.bz2
22b65322d04c8ffafd77230dbe5f178f langtools.tar.bz2
729d03b0cede2f697ad77170a9d89095 nashorn.tar.bz2
EOF
for subproject in corba hotspot jaxp jaxws jdk langtools nashorn; do
wget -c http://hg.openjdk.java.net/jdk-updates/jdk9u/${subproject}/archive/jdk-9.0.4+11.tar.bz2 \
-O ${subproject}.tar.bz2
done &&
md5sum -c subprojects.md5 &&
for subproject in corba hotspot jaxp jaxws jdk langtools nashorn; do
mkdir -pv ${subproject} &&
tar -xf ${subproject}.tar.bz2 --strip-components=1 -C ${subproject}
done
Si vous avez téléchargé la suite de tests facultative,
décompressez-la également :
tar -xf ../jtreg-4.2-b12.tar.gz
Note
Avant de continuer, vous devez vous assurer que votre variable
d'environnement PATH
contient le
dossier du compilateur Java utilisé pour boostrapper 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 le paramètre
-j
dans MAKEFLAGS
.
Configurez et construisez le paquet avec les commandes suivantes
(la valeur --with-milestone peut être modifiée selon les
préférences de l'utilisateur) :
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="11" \
--with-version-pre="" \
--with-version-opt="" \
--with-cacerts-file=/etc/ssl/java/cacerts.jks &&
make images
Note
Par défaut, le système de construction utilisera (NOMBRECPU - 1)
travaux. Pour changer, initialisez JOBS=<X>
à l'invocation de make.
Pour tester les résultats, lancez : make run-test-tier1. Sept tests
sont connu pour échouer et 11 pour produire des erreurs lorsque
vous construisez uniquement la cible server. Vous pouvez limiter le
nombre de tests parallèles en initialisant JTREG="JOBS=<X>"
où <X> est le nombre de
travaux.
Installez le paquet avec les commandes suivantes en tant
qu'utilisateur root
:
install -vdm755 /opt/jdk-9.0.4+11 &&
cp -Rv build/*/images/jdk/* /opt/jdk-9.0.4+11 &&
chown -R root:root /opt/jdk-9.0.4+11 &&
find /opt/jdk-9.0.4+11 -name \*.diz -delete &&
for s in 16 24 32 48; do
install -Dm 644 jdk/src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
/usr/share/icons/hicolor/${s}x${s}/apps/java9.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-9.0.4+11 /opt/jdk
Si vous le souhaitez vous pouvez créer des fichiers .desktop pour
ajouter des entrées dans le menu pour java, policytool et jconsole. Les icônes requises ont
déjà été installés. En tant qu'utilisateur root
:
mkdir -pv /usr/share/applications &&
cat > /usr/share/applications/openjdk-9-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 9 Runtime
Comment=OpenJDK Java 9 Runtime
Exec=/opt/jdk/bin/java -jar
Terminal=false
Type=Application
Icon=java9
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
NoDisplay=true
EOF
cat > /usr/share/applications/openjdk-9-policytool.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 9 Policy Tool
Name[pt_BR]=OpenJDK Java 9 - Ferramenta de Política
Comment=OpenJDK Java 9 Policy Tool
Comment[pt_BR]=OpenJDK Java 9 - Ferramenta de Política
Exec=/opt/jdk/bin/policytool
Terminal=false
Type=Application
Icon=java9
Categories=Settings;
EOF
cat > /usr/share/applications/openjdk-9-jconsole.desktop << "EOF"
[Desktop Entry]
Name=OpenJDK Java 9 Console
Comment=OpenJDK Java 9 Console
Keywords=java;console;monotoring
Exec=/opt/jdk/bin/jconsole
Terminal=false
Type=Application
Icon=java9
Categories=Application;System;
EOF
Le choix de pt_BR est juste un exemple. Vous pouvez ajouter des
traductions en ajoutant les lignes correspondantes à votre locale,
par exemple fr_FR, avec les valeurs « Name[fr_FR]= » et « Comment[fr_FR]= » appropriées pour la langue.
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-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/ssl/java/cacerts.jks
:
Spécifie où trouver un fichier cacerts
, /etc/ssl/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
.
find ... -iname '*.diz'
-delete : Cette commande supprime les fichiers
redondants.
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.
Installez ou mettez à
jour les fichiers "Certificats d'autorité de certification pour
JRE" (cacerts)
OpenJDK utilise son propre
format pour les certificats de CA. Ces certificats sont placés
dans un fichier nommé /etc/ssl/java/cacerts.jks
. Ce fichier devrait
être généré à partir du magasin de confiance PKI du système. Vous
devriez utiliser les instructions sur la page make-ca-0.7 pour mettre à jour le fichier dans
/etc/ssl/java
. Installez un lien
symbolique à l'emplacement par défaut en tant qu'utilisateur
root
:
/usr/sbin/make-ca --force &&
ln -sfv /etc/ssl/java/cacerts.jks /opt/jdk/lib/security/cacerts
Utilisez les commandes suivantes pour vérifier si le fichier
cacerts
a été installé avec
succès :
cd /opt/jdk
bin/keytool -list -keystore /etc/ssl/java/cacerts
À l'invite "Enter keystore password:", entrez "changeit" (la
valeur par défaut). 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:
appletviewer, extcheck, idlj, jar,
jarsigner, java, javac, javadoc, javah, javap, java-rmi.cgi,
jcmd, jconsole, jdb, jdeps, jhat, jinfo, jjs, jmap, jps,
jrunscript, jsadebugd, jstack, jstat, jstatd, keytool,
native2ascii, orbd, pack200, policytool, rmic, rmid,
rmiregistry, schemagen, serialver, servertool, tnameserv,
unpack200, wsgen, wsimport et xjc
Bibliothèques installées:
/opt/OpenJDK-9.0.4/lib/* et
/opt/OpenJDK-9.0.4/jre/lib/*
Répertoire installé:
/opt/OpenJDK-9.0.4
Descriptions courtes
appletviewer
|
permet le lancement des applets en dehors du navigateur
web.
|
extcheck
|
vérifie un fichier jar spécifié pour les conflits de
titre et de version avec toutes les extensions installées
dans le logiciel OpenJDK.
|
idlj
|
génère les liaisons Java depuis un fichier IDL donné.
|
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.
|
javah
|
génère les entêtes C et les fichiers sources qui sont
nécessaires pour implémenter des méthodes natives.
|
javap
|
désassemble un fichier de classe Java.
|
java-rmi.cgi
|
est le client RMI de 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.
|
jdeps
|
montre les dépendances en termes de paquets ou de classes
des fichiers de classes Java.
|
jhat
|
analyse un fichier Java de heap dump et permet de le voir
dans un navigateur web.
|
jinfo
|
affiche les informations de configuration de Java pour un
processus Java donné, un fichier core, ou un serveur de
débogage distant.
|
jjs
|
est un outil en ligne de commande utilisé pour appeler le
moteur Nashorn. Il peut être utilisé pour interpréter un
ou plusieurs fichiers de script, ou les lancer dans un
shell interactif.
|
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.
|
jps
|
liste les JVM instrumentées sur le système cible.
|
jrunscript
|
est un script shell en ligne de commandes.
|
jsadebugd
|
s'attache à un processus Java ou à un fichier core et
agit en tant que serveur de débogage.
|
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.
|
keytool
|
est un utilitaire de gestion des clés et certificats.
|
native2ascii
|
convertit les fichiers qui contiennent des caractères non
supportés par l'encodage en des fichiers contenant des
caractères Latin-1 ou Unicode.
|
orbd
|
est utilisé pour activer les clients pour trouver de
façon transparente et invoquer les objets persistants sur
les serveurs dans un environnement CORBA.
|
pack200
|
est une application Java qui transforme un fichier jar en
un fichier compressé pack200 un utilisant un compacteur
gzip.
|
policytool
|
crée et gère les fichiers de politique graphiquement.
|
rmic
|
génère des fichiers de classes vides et squelettes pour
des objets distants depuis le nom des classes JAVA
compilées qui contiennent des implémentations d'objets
distants.
|
rmid
|
démarre le démon d'activation du système.
|
rmiregistry
|
crée et démarre un registre d'objet distant sur le port
spécifié de l'hôte actuel.
|
schemagen
|
est un générateur de schéma de liaison Java XML.
|
serialver
|
retourne le serialVersionUID pour une ou plusieurs
classes sous une forme appropriée pour la copie dans une
classe évolutive.
|
servertool
|
fournit une interface facile à utiliser pour les
programmeurs d'applications pour inscrire, désinscrire,
démarrer et arrêter un serveur.
|
tnameserv
|
démarre le serveur de nom Java IDL.
|
unpack200
|
est une implémentation native qui transforme un fichier
produit par pack200 en
un fichier jar.
|
wsgen
|
génère des artefacts portables JAX-WS utilisés dans les
services web JAX-WS.
|
wsimport
|
génère des artefacts JAX-WS portables.
|
xjc
|
est un compilateur de liaison Java XML.
|
Last updated on 2018-02-28 22:39:20 +0100