En tant que développeur Java, vous souhaitez tester votre code avec différentes versions de Java. Ou vous vouliez simplement suivre les fonctionnalités d'une nouvelle version de Java. La configuration de différents environnements Java peut souvent être une tâche fastidieuse et décourageante. C'est là que les systèmes de gestion de versions sont utiles ! Aujourd'hui, nous allons discuter d'un tel gestionnaire de version appelé jEnv . jEnv est un outil en ligne de commande pour gérer plusieurs versions de Java sous Linux. C'est comme SDKMAN , mais uniquement pour Java. jEnv est un fork mis à jour de jenv , lui-même adapté de rbenv . jEnv est très utile pour développer des applications Java qui nécessitent une version Java exacte.
Utilisation de jEnv, un développeur ;
- peut installer et gérer plusieurs installations Java côte à côte,
- peut configurer l'installation de Java sur un répertoire global, un répertoire (spécifique à l'application) et même au niveau du shell (spécifique au shell),
- peut basculer entre différentes versions de Java facilement et rapidement,
- pas besoin de définir la variable d'environnement JAVA_HOME pour chaque version.
Installer Java
Veuillez noter que jEnv n'installera pas Java pour toi. Il ne gérera que les installations Java existantes. Vous devez installer Java à l'aide de votre gestionnaire de packages ou de tout autre moyen de votre choix. Je vais installer openjdk 13 et 14 sur mon système Ubuntu :
$ sudo apt install openjdk-13-jdk $ sudo apt install openjdk-14-jdk
Si vous avez déjà installé Java, ignorez simplement cette étape.
Installer jEnv sur Linux
Git clone le référentiel jEnv à l'aide de la commande :
$ git clone https://github.com/jenv/jenv.git ~/.jenv
La commande ci-dessus clonera le contenu de jEnv dans un répertoire local nommé .jenv .
Ensuite, ajoutez jEnv à votre $PATH :
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
Ensuite, initialisez jEnv :
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Enfin, mettez à jour les modifications que nous venons d'apporter dans ~/.bash_profile à l'aide de la commande.
$ source ~/.bash_profile
Si cela ne fonctionne pas pour une raison quelconque, utilisez simplement ~/.bashrc au lieu de ~/.bash_profile.
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(jenv init -)"' >> ~/.bashrc $ source ~/.bashrc
Si vous êtes sur Zsh shell, les commandes pour installer jEnv sont :
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc $ echo 'eval "$(jenv init -)"' >> ~/.zshrc
Vérifier l'installation de jEnv
Vérifions si jEnv est installé avec la commande :
$ jenv doctor
Exemple de résultat :
[OK] No JAVA_HOME set [ERROR] Java binary in path is not in the jenv shims. [ERROR] Please check your path, or try using /path/to/java/home is not a valid path to java installation. PATH : /home/ostechnix/.jenv/libexec:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin [OK] Jenv is correctly loaded
Comme vous pouvez le constater, la sortie indique que la variable JAVA_HOME n'est pas encore définie et que jenv est correctement chargé. Ne faites pas attention aux autres erreurs. Ils disparaîtront après l'ajout de Java dans la section suivante.
Définissons maintenant la variable d'environnement JAVA_HOME à l'aide de la commande :
$ jenv enable-plugin export
Vous devez redémarrer votre session shell actuelle pour activer le plug-in d'exportation d'écho du plug-in d'exportation jenv activé. Pour redémarrer la session shell, exécutez :
$ exec $SHELL -l
Maintenant, exécutez à nouveau la commande "jenv doctor" et voyez ce qu'elle renvoie !
$ jenv doctor
Exemple de résultat :
[OK] JAVA_HOME variable probably set by jenv PROMPT [ERROR] Java binary in path is not in the jenv shims. [ERROR] Please check your path, or try using /path/to/java/home is not a valid path to java installation. PATH : /home/ostechnix/.jenv/libexec:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/home/ostechnix/.jenv/shims:/home/ostechnix/.jenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin [OK] Jenv is correctly loaded
Fait! La variable JAVA_HOME sera automatiquement définie par jEnv en fonction de l'environnement Java actuellement actif.
Gérer plusieurs versions de Java avec jEnv sous Linux
L'exécution de jEnv sans aucune option affichera la section d'aide :
$ jenv
Exemple de résultat :
jenv 0.5.3-2-g78dbd7f Usage: jenv <command> [<args>] Some useful jenv commands are: commands List all available jenv commands local Set or show the local application-specific Java version global Set or show the global Java version shell Set or show the shell-specific Java version rehash Rehash jenv shims (run this after installing executables) version Show the current Java version and its origin versions List all Java versions available to jenv which Display the full path to an executable whence List all Java versions that contain the given executable add Add JDK into jenv. A alias name will be generated by parsing "java -version" See `jenv help <command>' for information on a specific command. For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md
Ajouter différents environnements Java
Nous devons maintenant indiquer à jenv où se trouvent nos environnements Java.
Tout d'abord, ajoutons l'environnement openjdk-13 à l'aide de la commande :
$ jenv add /usr/lib/jvm/java-13-openjdk-amd64/
Exemple de résultat :
openjdk64-13.0.3 added 13.0.3 added 13.0 added 13 added
Ensuite, ajoutez openjdk-14 à l'aide de la commande :
$ jenv add /usr/lib/jvm/java-14-openjdk-amd64/ openjdk64-14.0.1 added 14.0.1 added 14.0 added 14 added
Vérifiez maintenant toutes les versions Java disponibles pour jenv en utilisant la commande :
$ jenv versions
Exemple de résultat :
* system (set by /home/ostechnix/.jenv/version) 13 13.0 13.0.3 14 14.0 14.0.1 openjdk64-13.0.3 openjdk64-14.0.1
Comme vous pouvez le voir dans la sortie ci-dessus, deux environnements Java, à savoir openjdk 13 et openjdk 14, sont actuellement gérés. Peu importe les autres nombres dans la sortie. Ce ne sont que des alias faisant référence à la même version.
Définir l'environnement Java global
Comme je l'ai déjà dit, jenv peut vous permettre de configurer l'installation de Java sur une base globale ou par répertoire/projet, ou par shell et de basculer entre eux sans changer la version globale.
Vérifions la version actuelle de Java :
$ java --version openjdk 14.0.1 2020-04-14 OpenJDK Runtime Environment (build 14.0.1+7-Ubuntu-1ubuntu1) OpenJDK 64-Bit Server VM (build 14.0.1+7-Ubuntu-1ubuntu1, mixed mode, sharing)
Comme vous le voyez dans la sortie, la version globale actuelle a été définie sur openjdk-14.
Pour définir openjdk-13 comme version globale, exécutez :
$ jenv global openjdk64-13.0.3
Vérifiez maintenant la version Java :
$ java --version openjdk 13.0.3 2020-04-14 OpenJDK Runtime Environment (build 13.0.3+3-Ubuntu-1ubuntu2) OpenJDK 64-Bit Server VM (build 13.0.3+3-Ubuntu-1ubuntu2, mixed mode)
Vous pouvez également simplement utiliser les numéros d'alias au lieu de la version complète comme ci-dessous :
$ jenv global 13 $ jenv global 13.0 $ jenv global 13.0.3
Toutes ces trois commandes définiront openjdk-13 comme version globale.
Définir l'environnement Java local ou par répertoire
Parfois, vous souhaiterez peut-être définir l'environnement Java pour un projet spécifique, sans modifier la version globale.
Par exemple, les étapes suivantes définiront openjdk-14 comme version locale pour notre projet nommé "ostechnix-java", mais ne modifieront pas la version globale.
$ mkdir ostechnix-java $ cd ostechnix-java $ jenv local openjdk64-14.0.1
Maintenant, notre environnement local est openjdk-14, mais l'environnement Java global est openjdk-13. De même, vous pouvez définir plusieurs environnements Java différents pour chaque application. Allez simplement dans le répertoire du projet et définissez l'environnement Java souhaité de votre choix et commencez à créer ou à tester l'application. C'est aussi simple que ça !
Définir l'environnement Java spécifique au shell
Pour définir l'environnement Java pour la session shell en cours, exécutez :
$ jenv shell openjdk64-14.0.1
Openjdk-14 est la version Java utilisée dans ce shell particulier. Une fois que vous quittez la session shell en cours, la version Java précédente utilisée globalement entrera en vigueur.
Pas besoin de définir $JAVA_HOME !
Avez-vous remarqué que je n'ai jamais défini la variable $JAVA_HOME lors du passage à différentes versions de Java ? Non, même pas une fois ! Jenv s'en chargera et le configurera automatiquement pour vous en fonction de l'environnement Java dans lequel vous vous trouvez.
Vous pouvez afficher le paramètre actuel de la variable JAVA_HOME à l'aide de la commande :
$ echo $JAVA_HOME /home/ostechnix/.jenv/versions/openjdk64-13.0.3
Oubliez simplement comment définir la variable d'environnement JAVA_HOME et concentrez-vous sur votre développement.
Lire connexe :
- Pyenv – La gestion des versions Python simplifiée