――Cet article s'adresse aux personnes qui sont absolument accros à la "création d'un environnement Java" et qui sont toujours déroutées par des informations complexes. ――Depuis 2017, Java est devenu un monde en évolution rapide. Conscient de cela, nous avons compilé les informations que nous avons étudiées afin de pouvoir comprendre les «idées fondamentales» et les «tendances importantes».
―― Les versions de fonctionnalités sont fournies en mars et septembre chaque année, et les versions principales sont en cours de développement. Ex: Java9 => septembre 2017, Java10 => mars 2018, Java11 => septembre 2018, ...
Toutes les versions de fonctionnalités ne sont pas LTS (Long Term Support) ** d'Oracle JDK **. Dans Java9 ou version ultérieure, Java11 et Java17 sont des cibles LTS. Autre que cela, il est non-LTS.
Pour plus de détails, reportez-vous à la Feuille de route du support Oracle Java SE.
--Java 8 est dans la position de "la dernière version avant le changement de modèle de publication". Java 8 lui-même est également ouvert et est soumis à LTS dans Oracle JDK.
En le rendant open source, plusieurs fournisseurs peuvent créer et annoncer JDK. Autour de la source d'OpenJDK **, il existe plusieurs distributions de chaque entreprise comme Linux **. (Source: Comment choisir la meilleure distribution OpenJDK) --À partir de 2020, les principales distributions sont:
Oracle OpenJDK (by Oracle)
Red Hat OpenJDK (by Red Hat)
Azul Zulu (by Azul Systems)
SapMachine (by SAP)
Liberica JDK (by BellSoft)
Amazon Corretto (by Amazon)
AdoptOpenJDK (Community Based)
Les distributions OpenJDK de chaque société peuvent être publiées et prises en charge en réduisant les versions telles que "dernière uniquement" et "cible Oracle LTS uniquement". --Par exemple, depuis janvier 2020, Oracle Open JDK a publié le dernier 13 en tant que GA (General-Availability Release). D'autres versions peuvent être téléchargées, mais leur utilisation n'est pas recommandée.
Également en janvier 2020, Amazon Corretto a publié 8 et 11.
--Une série de tests appelés le kit de compatibilité technologique (TCK) sont fournis par la communauté OpenJDK (contrat avec Oracle) pour approuver la distribution. Les distributions qui réussissent TCK peuvent être appelées "compatibles Java SE"
――Il est réaliste de juger par l'état du support et l'écosystème entourant chaque distribution.
Cependant, il y a peu de différences notables à l'heure actuelle et il est difficile de choisir. Des fonctionnalités peuvent sortir à partir de maintenant.
Puisque la situation est celle décrite dans ~~ I, il n'y a pas de meilleur fixe, et il a tendance à devenir bientôt obsolète. ~~
=> SDKMAN! est la meilleure pratique actuelle. (Ajouté le 2020.1.10)
Ici, nous soulignons que "l'installation est terminée uniquement avec la ligne de commande" et "permet de basculer entre plusieurs versions", et les deux modèles de procédures de construction suivants sont illustrés:
--Modèle 1: SDKMAN! (Recommandé) --Modèle 2: Homebrew & jEnv
https://sdkman.io/
SDKMAN! Est le prédécesseur de GVM, l'outil de gestion multi-version de Groovy. Il gère plusieurs versions d'une grande variété d'outils, centrés sur le langage JVM et ses outils de construction.
Voir le fonctionnaire pour l'installation de SDKMAN! Après l'installation, l'installation de Java est terminée avec la commande suivante:
sdk install java
La distribution installée actuellement est la version 11 d'Adopt Open JDK à partir de janvier 2020.
Pour les autres distributions, vous pouvez librement vérifier et basculer avec les trois sous-commandes list
, ʻinstall et
default`. Utilisez l'identificateur dans la liste pour spécifier la version et la distribution.
sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 13.0.1.j9 | adpt | | 13.0.1.j9-adpt
| | 13.0.1.hs | adpt | | 13.0.1.hs-adpt
| | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt
| | 12.0.2.hs | adpt | | 12.0.2.hs-adpt
| | 11.0.5.j9 | adpt | | 11.0.5.j9-adpt
| >>> | 11.0.5.hs | adpt | installed | 11.0.5.hs-adpt
| | 8.0.232.j9 | adpt | | 8.0.232.j9-adpt
| | 8.0.232.hs | adpt | | 8.0.232.hs-adpt
Amazon | | 11.0.5 | amzn | | 11.0.5-amzn
| | 8.0.232 | amzn | | 8.0.232-amzn
| | 8.0.202 | amzn | | 8.0.202-amzn
Azul Zulu | | 13.0.1 | zulu | | 13.0.1-zulu
| | 12.0.2 | zulu | | 12.0.2-zulu
...(Omission)...
SAP | | 12.0.2 | sapmchn | | 12.0.2-sapmchn
| | 11.0.4 | sapmchn | | 11.0.4-sapmchn
================================================================================
Lors de l'installation du deuxième JDK et des suivants, vous serez invité à définir cette distribution par défaut.
sdk install java 13.0.1-open # Oracle OpenJDK 13
Downloading: java 13.0.1-open
...(Omission)...
Installing: java 13.0.1-open
Done installing!
Do you want java 13.0.1-open to be set as default? (Y/n): Y
Setting java 13.0.1-open as default.
Si vous le définissez sur la valeur par défaut, la version Java basculera à ce stade. Pas besoin de définir un chemin. Essayez de vérifier le démarrage de jshell.
jshell
|Bienvenue dans JShell--Version 13.0.1
|Pour un aperçu, tapez: /help intro
jshell>
jshell est un Java REPL ajouté à partir de Java 9. Vous le connaissez peut-être dans d'autres langues, mais il est utile pour une petite vérification de fonctionnement de l'API standard. Vous pouvez quitter avec / exit
, alors revenez en arrière et réessayez.
sdk default java 11.0.5.hs-adpt
Default java version set to 11.0.5.hs-adpt
jshell
|Bienvenue dans JShell--Version 11.0.5
|Pour un aperçu, tapez: /help intro
jshell>
J'ai pu confirmer que la version avait changé.
** Installation JDK avec Homebrew **
https://brew.sh/index_ja
a été ajouté à Formulas. Par conséquent, il peut être installé avec
brew install open jdk`.Vous remarquerez une mise en garde (avertissement) si l'installation réussit. Ce qui suit est le message lorsque je l'ai essayé avec Catalina + zsh.
==> Pouring openjdk-13.0.1+9.catalina.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
openjdk is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have openjdk first in your PATH run:
echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
C'est écrit à la légère, mais chaque paragraphe est important. Selon l'environnement, les détails du message et les actions à entreprendre peuvent différer.
For the system Java wrappers to find this JDK, symlink it with...
On ne sait pas à quoi se réfèrent les "enveloppeurs Java système", mais il est nécessaire de créer des liens symboliques pour pouvoir utiliser la commande java_home
décrite plus loin.
openjdk is keg-only, which means it was not symlinked into /usr/local,...
Cela signifie qu'il n'est pas lié symboliquement sous / usr / local
, ce qui signifie que taper java
dans le terminal à ce stade ne signifie pas que l'OpenJDK installé ici fonctionnera immédiatement.
If you need to have openjdk first in your PATH run:...
Pour que l'OpenJDK installé ici soit recherché en premier comme chemin, le chemin doit être ajouté au démarrage du shell.
Cependant, cette fois, c'est une politique de gérer plusieurs versions de JDK avec un autre outil, évitez donc d'écrire le chemin Java directement dans ~ / .zshrc
.
Dans cet esprit, créez simplement le lien symbolique recommandé par le premier message:
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
Cela devrait permettre aux commandes suivantes de fonctionner:
java --version
openjdk 13.0.1 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
/usr/libexec/java_home
/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
** Inscrivez-vous avec jEnv **
http://www.jenv.be/
Un outil qui facilite la gestion de plusieurs versions du JDK, comme pyenv. La procédure d'installation sera officiellement remise. Après avoir exécuté brew install
, vous devez passer le chemin.
Par exemple, avec pyEnv, vous pouvez installer Python avec des commandes telles que pyenv install 3.5.0
. Cependant, comme vous pouvez le voir à partir des opérations jusqu'à présent, jEnv lui-même n'a pas la fonction de télécharger le JDK. La commande jenv add
requiert" le chemin complet vers JAVA_HOME
du JDK téléchargé" comme argument. Ce chemin peut être référencé avec la commande java_home
mentionnée ci-dessus.
/usr/libexec/java_home
/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
Ensuite, vous pouvez utiliser ceci pour ajouter le JDK à jEnv:
jenv add `/usr/libexec/java_home`
openjdk64-13.0.1 added
13.0.1 added
13.0 added
** Plusieurs versions installées **
À partir de l'état ci-dessus, par exemple, si vous souhaitez installer en plus Oracle Open JDK 11, la procédure est la suivante:
# 1.Installez le JDK
brew install openjdk@11
# 2.Créer un lien symbolique sous JavaVirtualMachines
# (Copiez la commande qui apparaît à l'invite pendant l'installation de l'infusion)
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
# 3.Ajouter à la gestion jEnv
jenv add `/usr/libexec/java_home -v 11`
Vérifiez que jEnv peut gérer plusieurs versions et vérifiez le démarrage de jshell.
jenv versions
* system
11.0
11.0.5
13.0
13.0.1
openjdk64-11.0.5
openjdk64-13.0.1
Définissez la version sur 13.
jenv global 13.0
jenv versions
system
11.0
11.0.5
* 13.0
13.0.1
openjdk64-11.0.5
openjdk64-13.0.1
jshell
|Bienvenue dans JShell--Version 13.0.1
|Pour un aperçu, tapez: /help intro
jshell>
Puis changez de version et essayez la même chose.
jenv global 11.0
jenv versions
system
* 11.0
11.0.5
13.0
13.0.1
openjdk64-11.0.5
openjdk64-13.0.1
jshell
|Bienvenue dans JShell--Version 11.0.5
|Pour un aperçu, tapez: /help intro
J'ai pu confirmer que la version avait changé.
Si vous faites jusqu'à présent, vous pouvez dire qu'il s'agit d'un environnement de développement local qui peut gérer l'ajout de distributions et de versions dans une certaine mesure.
En raison du contexte décrit ci-dessus, les informations auxquelles les développeurs doivent se référer dépendent de la distribution sélectionnée.
Ce serait bien de trouver une page qui vous donne une vue transversale de la situation actuelle, mais pour l'instant c'est une bonne idée de se référer d'abord à la feuille de route officielle d'Oracle, qui dirige le développement de l'OpenJDK.
Feuille de route du support Oracle Java SE https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
Dans certains cas, des fournisseurs tels que Red Hat publient leurs cycles de vie et politiques de distribution.
OpenJDK Life Cycle and Support Policy https://access.redhat.com/articles/1299013
(Cet article est principalement constitué d'extraits et de résumés des articles suivants, donc si vous voulez en savoir plus en profondeur!)
À propos du nouveau modèle de version et de l'offre de licence de JDK https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
Project Jigsaw https://openjdk.java.net/projects/jigsaw/
Que choisir pour le futur JDK? Comment choisir (v1.2) https://www.slideshare.net/TakahiroYamada3/how-to-choose-jdk-20191101 (Ajouté le 09/03/2020. Merci @yamadamn)
Comment choisir la meilleure distribution OpenJDK https://www.slideshare.net/TakahiroYamada3/how-to-choose-the-best-openjdk-distribution-201905
Résumé à expliquer le plus facilement possible à ceux qui se trompent en "Java payé" https://togetter.com/li/1343743
OpenJDK - Wikipedia https://ja.wikipedia.org/wiki/OpenJDK
Oracle JDK vs. OpenJDK builds comparison https://devexperts.com/blog/oracle-jdk-vs-openjdk-builds-comparison/
Recommended Posts