OpenJDK-1.7.0.9

Introduction à OpenJDK et IcedTea

IcedTea fournit un harnais de construction pour le paquet OpenJDK, Oracle a ouvert le code de l'environnement de développement Java. Afin de fournir un environnement d'exécution complètement libre, similaire à la distribution fermée d'Oracle, Le harnais de construction IcedTea devient également libre, et sans doute des versions meilleures de JDK qui n'a pas été ouvert à ce jour. OpenJDK est utilisé pour développer des programmes Java et fournit un environnement d'exécution complet pour lancer des programmes Java.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-7.2.

[Note]

Note

Le greffon du navigateur et l'implémentation webstart ont été séparé en différent projet. Pour fournir une implémentation complète, vous aurez besoin d'installer plus tard IcedTea-Web-1.3.

OpenJDK est du code 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 tierces à utiliser des classes fournit par des programmes libres sans l'obligation que le programme tierce soit également libre. Comme avec la LGPL, toutes les modifications faite dans des parties d'un programme libre d'une application tierce,doit également être librement disponible.

[Note]

Note

L'environnement de construction IcedTea inclu une très complète, open source suite de tests appelée JTreg. JTreg est prévue pour tester le JDK fraichement construit pour une compatibilité raisonnable avec le JDK fermé d'Oracle. Cependant, pour qu'une implémentation indépendante revendique la compatibilité, incluant le projet sponsorisé par Oracle OpenJDK, elle doit passer une suite de tests fermée JCK/TCK. Pas de revendication de compatibilité, même une compatibilité partielle, peut être faite sans passer une suite de tests approuvées.

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. La version binaire fournit ici n'a pas été testé avec TCK. Toutes les versions qui seront construites en utilisant les instructions données, ne pourront pas revendiquer d'être compatible avec le JDK propriétaire, sans que l'utilisateur demande, et réussissent 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.

Source Information sur le paquet

Information sur les binaires sur le paquet

Téléchargements supplémentaires

Correctifs requis

Jar requis

Dépendances de OpenJDK

Dépendances d'exécution facultatives (requises pour une installation depuis les sources)

Certificate Authority Certificates, Cups-1.6.1, GTK+-3.6.1, giflib-4.1.6, PulseAudio-2.1, Xorg Libraries et NSPR-4.9.3.

Obligations supplémentaires (pour une construction depuis les sources, incluant les obligations facultatives)

apache-ant-1.8.4, cpio-2.11, UnZip-6.0, Wget-1.14, which-2.20, et Zip-3.0

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/openjdk

Installation de OpenJDK

Les instructions ci dessous installent ensemble les versions sources et binaires. Vous devez vous arrêter après l'installation de la version binaire ou continuez en installant la version source. Vous pouvez choisir de laisser l'une ou l'autre ou les deux.

Installation binaire de OpenJDK

Commencez par extraire l'archive binaire appropriée et allez dans le répertoire d'extraction. Installez le binaire OpenJDK avec les commandes ci dessous en tant qu'utilisateur root :

install -vdm755 /opt/OpenJDK-1.7.0.9-bin &&
mv -v * /opt/OpenJDK-1.7.0.9-bin &&
chown -R root:root /opt/OpenJDK-1.7.0.9-bin

Configurez l'installation d'OpenJDK avec ce qui suit

export CLASSPATH=.:/usr/share/java &&
export PATH="PATH:/opt/OpenJDK-1.7.0.9-bin/bin

La version binaire est maintenant installée. Si vous ne voulez pas compiler les sources, aller directement à la section de configuration.

Installation source de OpenJDK

[Note]

Note

La construction source de OpenJDK demande apache-ant-1.8.4. Vous devez le construire en premier pour satisfaire des dépendances circulaires, et revenir à cette section pour continuer la construction de OpenJDK.

Contrairement aux autres paquets dans BLFS, les sources de OpenJDK sont distribuées dans de multiples téléchargements. Depuis que le harnais de construction de IcedTea doit être utilisé pour construire OpenJDK, commencez par extraire le paquet IcedTea et allez dans le répertoire d'extraction.

La distribuion de IcedTea OpenJDK demande que js.jar (du paquet Rhino) soit en place pour fournir une implémentation java-script pour le JDK libre. Si vous n'avez pas installé le fichier js.jar, faite le avec les commandes suivantes en tant qu'utilisateur root :

unzip ../rhino1_7R3.zip &&
install -v -d -m755 /usr/share/java &&
install -v -m755 rhino1_7R3/*.jar /usr/share/java

Comme mentionné précédemment, OpenJDK est composé de plusieurs projets individuels de la version propriétaire de JDK qui ont été relicencié en une licence open-source. Si vous avez téléchargé précédemment pour les composants individuels, mettez tous les composants individuels dans l'arbre des sources avec les commandes suivantes

cp -v ../corba.tar.gz . &&
cp -v ../hotspot.tar.gz . &&
cp -v ../jaxp.tar.gz . &&
cp -v ../jaxws.tar.gz . &&
cp -v ../jdk.tar.gz . &&
cp -v ../langtools.tar.gz . &&
cp -v ../openjdk.tar.gz .

Appliquez un correctif pour générer un fichier cacerts valide en utilisant le système de certificats CA:

patch -Np1 -i ../icedtea-2.3.3-add_cacerts-1.patch

Appliquez un correctif pour remplacer les chemins corrigés par des plus appropriée pour BLFS:

patch -Np1 -i ../icedtea-2.3.3-fixed_paths-1.patch

Appliquez un correctif pour exclure des tests connus pour échouer de la suite de testse:

patch -Np1 -i ../icedtea-2.3.3-fix_tests-1.patch

Configurez et construisez le paquet avec les commandes suivantes

unset JAVA_HOME &&
./autogen.sh &&
./configure --with-jdk-home=/opt/OpenJDK-1.7.0.9-bin   \
--enable-nss      \
--enable-pulse-java &&
make
[Note]

Note

Si vous n'avez pas installé l'archive spécifiée précédemment, elle sera automatiquement téléchargée ici.

Pour tester le résultat, tapez : make jtregcheck. La version incluse dans jtreg est ancienne, et la suite de tests est également très dépendante du système hôte et de l'environnement qui la lance. Vous devez vous attendre à voir n'importe où entre 40 et 100 échecs dans jdk avec plus de 10 erreurs dans les tests eux-mêmes. La majorité des plus de 6000 tests doivent réussir. La raison pour la grande variété des résultats est dû à comment l'environnement doit être strict. Des architectures différentes, des versions différentes des bibliothèques dépendantes, un environnement X Window et un gestionnaire de fenêtres inattendus, le certificat utilisé pour générer le fichier cacerts, et même toutes les entrées de l'utilisateur, ou la gestion de l'énergie, ou les interruptions de l'économiseur d'écrans pendant les tests peuvent créer de nombreux échecs. Comme les tests cassés connus ont été enlevé, avec le correctif fix_tests, les échecs aux tests graphiques ne peuvent pas être prévues (sauf à les enlever tous). La meilleure façon pour un résultat complètement propre est de lancer la suite de tests dans un sur un écran différent (Xvfb). Et même encore, les I/O du disque peuvent créer des échecs.

Installez le paquet avec les commandes suivantes en tant qu'utilisateur root :

chmod 0644 openjdk.build/j2sdk-image/lib/sa-jdi.jar  &&
cp -R openjdk.build/j2sdk-image /opt/OpenJDK-1.7.0.9 &&
chown -R root:root /opt/OpenJDK-1.7.0.9

Explications des commandes

./autogen.sh : Cette commande force la reconstruction des fichiers auto-générés pour tenir compte des nouvelles options ajoutés dans configure.

--with-jdk-home : Ce paramètre fournit l'emplacement du JDK temporaire.

--enable-pulse-java : Ce paramètre autorise la construction des bibliothèques pulseaudio (utilisées pour fournir une implémentation complète qui est raisonnablement compatible avec le JDK propriétaire).

chmod -v 0644 ...sa-jdi.jar : Corrige les permissions dans un fichier généré pour que tous les utilisateurs puissent y accéder.

Configuration de OpenJDK

Information de configuration

Il y a maintenant deux SDK OpenJDK installés dans /opt. Vous devez décider lequel vous voulez utiliser par défaut. Par exemple, si vous décidez d'utiliser la version précompilée de OpenJDK, faite les commandes suivantes en tant qu'utilisateur root :

ln -v -nsf OpenJDK-1.7.0.9-bin /opt/jdk

L'information ci dessous suppose que votre système est initialisé en utilisant les instructions trouvées à « Les fichiers de démarrage du shell Bash ». Vous devez extraire l'information pertinente dessous et l'incorporer dans votre fichier de démarrage du système si votre système est initialisé différemment.

Ajoutez le fichier suivant de démarrage de openjdk.sh dans le répertoire /etc/profile.d avec les commandes suivantes en tant qu'utilisateur root :

cat > /etc/profile.d/openjdk.sh << "EOF"
# Début de /etc/profile.d/openjdk.sh

# Initialisation du répertoire JAVA_HOME
JAVA_HOME=/opt/jdk

# Adjustement de PATH
pathappend $JAVA_HOME/bin PATH

# Auto Java CLASSPATH
# Copie des fichiers jar, ou création des liens symboliques dans ce répertoir
AUTO_CLASSPATH_DIR=/usr/share/java
pathprepend . CLASSPATH
for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
    pathappend $dir CLASSPATH
done
for jar in `find ${AUTO_CLASSPATH_DIR} -name "*.jar" 2>/dev/null`; do
    pathappend $jar CLASSPATH
done

export JAVA_HOME CLASSPATH
unset AUTO_CLASSPATH_DIR dir jar

# Fin de /etc/profile.d/openjdk.sh
EOF

Finalement, ajoutez les pages de man dans la configuration de man_db. En tant qu'utilisateur root :

cat >> /etc/man_db.conf << "EOF" &&
MANDATORY_MANPATH     /opt/jdk/man
MANPATH_MAP           /opt/jdk/bin     /opt/jdk/man
MANDB_MAP             /opt/jdk/man     /var/cache/man/jdk
EOF
mandb -c /opt/OpenJDK/man

Contenu

Programmes installés: appletviewer, apt, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, java-rmi.cgi, jcmd, jconsole, jdb, jhat, jinfo, 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-1.7.0.9/lib/*, and /opt/OpenJDK-1.7.0.9/jre/lib/*
Répertoire installé: /opt/OpenJDK-1.7.0.9

Description courte

appletviewer

autorise de lancer des applets en dehors du navigateur web.

apt

est un outil de traitement des annotations.

extcheck

vérifie un fichier jar spécifié pour les conflits de titre et de version avec toutes les extensions installés 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 un langage de programmation Java, et les compiles en des fichiers de classe 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écéssaires 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 diagnostique à une machine virtuelle Java.

jconsole

est un outil graphique de la 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.

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éboguage distant.

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éboguage distant.

jps

liste les JVM instrumenté 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éboguage.

jstack

affiche la pile des traces JAVA, des treads Java pour pour un processus Java donné, un fichier core, ou un serveur de déboguage 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

converti les fichiers qui contiennent des caractères non-supporté 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 comptacteur gzip.

policytool

crée et gère les fichiers de politique graphiquement.

rmic

génère des fichiers de classes tampon et squelette 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 l'UID 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 artifactes portables JAX-WS utilisés dans les services web JAX-WS.

wsimport

génère des artifactes JAX-WS portables.

xjc

est un compilateur de liaison Java XML.

Last updated on : 2012-10-22 19:15:03 +020