Comment passer d'Oracle Java 8 à Adopt Open JDK 9

introduction

En raison des changements dans le cycle de publication d'Oracle et des changements dans le format de support de licence, je pense que la communauté Java est occupée avec le support ces jours-ci. Le support payant est difficile en termes de coût, et il existe de nombreux cas où le cycle de publication est aussi court que six mois, il semble donc qu'Adopt OpenJDK soit l'un des principaux candidats en option. J'ai essayé de l'explorer et de l'introduire, je vais donc le résumer ici.

** Supplément. Au début, j'avais l'intention de changer l'article en AdoptOpenJDK 11. J'écrivais cet article lors de la mise à niveau de la version de l'application, mais en chemin, j'ai découvert que la bibliothèque principale ne prend pas en charge Java 9 ou une version ultérieure. Je vais l'essayer à une autre occasion pour compléter l'article, mais d'ici là, je ne peux écrire que sur AdoptOpenJDK Java9. ** **

Information préalable

from Java:Oracle Java 8 to java:AdoptOpenJDK9 OS:Windows 64bit、Linux(CentOS)64bit

Télécharger

Télécharger depuis AdoptOpenJDK. La dernière page de publication ne peut être créée que pour une seule plate-forme, je pense donc qu'il est préférable de la sélectionner individuellement dans la page d'archive ci-dessous. https://adoptopenjdk.net/archive.html 2018-11-09_18h52_55.png

  1. Choisissez une version Cette fois, nous passerons de Java 8 à 9, donc nous obtiendrons chacun des 8 et 9 (bien que ce soit la même version, vérifiez Oracle Java 8 → AdoptOpenJDK9).
  2. Choisissez une JVM (sélection de machine virtuelle Java) Sélectionnez l'implémentation JVM que vous souhaitez utiliser. Je pense que ce sera un critère pour utiliser Hotspot si vous utilisez ce qu'on appelle Oracle Java, et OpenJ9 si vous utilisez IBM Java. Je ne trouve pas beaucoup de ces informations crédibles, et bien que ce soit une histoire sensationnelle, j'ai l'impression que changer la JVM est effrayant. Bien que ce soit un blog personnel, il y avait une personne qui mesurait le benchmark, alors je vais simplement le présenter. En regardant cela, Hotspot était avantageux en termes de vitesse du processeur, et OpenJ9 était avantageux en termes d'économie de mémoire. https://royvanrijn.com/blog/2018/05/openj9-jvm-shootout/ https://royvanrijn.com/blog/2018/05/openj9-hotsport-specjvm2008/ Cependant, comme indiqué dans le lien, si vous faites un bon jugement, vous ne devez pas prendre ce résultat et le mesurer vous-même dans l'environnement cible.

Installation

Comment installer

Il n'est pas fourni avec un programme d'installation comme Oracle java. La méthode d'installation officielle est brièvement expliquée ci-dessous, mais elle est un peu subtile (sans utiliser JAVA_HOME), je vais donc la changer un peu. https://adoptopenjdk.net/installation.html?variant=openjdk8&jvmVariant=hotspot

  1. Télécharger Comme mentionné ci-dessus.
  2. (Facultatif) Somme de contrôle Étant donné que la taille du fichier est assez grande, si vous craignez une corruption, vérifiez la valeur de la somme de contrôle.
  3. Extension des archives Tout d'abord, décompressez-le en fonction de l'environnement dans lequel vous utilisez .zip ou .tar.gz. Placez-les n'importe où. ex) Windows:「C:/Program Files/Java/jdk8u192-b12」 Linux:「/user/java/jdk8u192-b12」
  4. Passer par PATH Je ne veux pas trop jouer avec PATH, alors passons en revue une variable d'environnement appelée JAVA_HOME (je pense que c'est habituel). Vous pouvez minimiser l'impact en enregistrant uniquement JAVA_HOME dans le PATH et en réécrivant uniquement JAVA_HOME lors du changement de version java. Et comme je ne veux pas trop jouer avec les variables d'environnement, la destination pointée par JAVA_HOME est aussi le répertoire des liens symboliques (il semble qu'il y en ait beaucoup de derniers et de defalt). CHEMIN =% JAVA_HOME% \ bin; (Omis) JAVA_HOME="C:\Program Files\Java\latest" image.png Dans l'installation suivante, la procédure ici consiste à changer uniquement le sens du lien symbolique. Si quelque chose ne fonctionne pas, vous pouvez inverser cette direction.
  5. Vérification de la version Tapez java -version. Dans cette version, vous devriez voir le mot AdoptOpenJdk. image.png

Java8 D'abord à partir de Java 8. En principe, le Java d'origine est 8, il devrait donc fonctionner sans problème.

Bien qu'il soit limité à l'environnement UNIX, il est facile d'oublier de modifier la valeur de paramétrage de securerandom.source, alors notez-le ici. Le paramètre initial pour la génération de nombres aléatoires est "/ dev / random", mais il n'a pas besoin d'être aussi strict, et le délai dû à l'épuisement des nombres aléatoires est plus problématique, j'ai donc changé le paramètre en "/ dev / urandom". Je pense qu'il existe de nombreux environnements. Dans un tel environnement, il est nécessaire de ne pas oublier de modifier les paramètres après avoir installé le JDK Adopt Open ainsi que les paramètres existants. N'oubliez pas de modifier les paramètres pour ** chaque version **. Pour plus d'informations sur la modification des paramètres, cliquez ici: http://otndnld.oracle.co.jp/document/products/E13153_01/wlcp/wlss40/configwlss/jvmrand.html

Java9 Onimon pose un certain nombre de problèmes dus aux changements de configuration à l'aide de la fonction de module "Project Jigsaw". Pour référence, j'ai un peu trébuché. Le [Guide de migration Java 9] publié par Oracle (https://docs.oracle.com/javase/jp/9/migrate/toc.htm#JSMIG-GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6) est une lecture incontournable.

--Gradle ne fonctionne pas

Les anciens Gradles donnent l'erreur "Impossible de déterminer la version Java à partir de". https://qiita.com/Kaoru_Yamamoto/items/dcb3815795d6e752cff3

Certaines API internes de Java qui n'étaient pas censées être utilisées de l'extérieur pourraient être utilisées jusqu'à Java 8, mais elles sont désormais limitées. Les limites signifient qu'elles ne sont plus disponibles ou que vous recevez un avertissement WARN. [Contre-mesure ①] (Support fondamental) Réécrivez la source vers une API alternative. [Contre-mesure ②] (Support temporaire) Ajout de l'option de démarrage Java "--add-exports (API correspondante)". [Contre-mesure ③] (Support temporaire) Ajouter l'option de démarrage Java "--add-opens (API correspondante)". Ceci est une option si vous utilisez l'API avec réflexion.

Le soutien provisoire est une mesure transitoire et peut ne pas être disponible dans les versions futures, il est donc nécessaire de prendre des mesures fondamentales dès que possible.

https://blog.codefx.org/java/java-9-migration-guide/#Illegal-Access-To-Internal-APIs

Recommended Posts

Comment passer d'Oracle Java 8 à Adopt Open JDK 9
[Java] Comment passer de jdk ouvert à jdk oracle
Comment obtenir JDK etc. depuis Oracle avec CLI
Comment passer Oracle Java Silver
Comment passer du HTML à Haml
[Talend] Passer d'Oracle JDK à Open JDK
Java: Comment envoyer des valeurs du servlet au servlet
Comment télécharger Oracle JDK 8 rpm avec curl
Comment obtenir une classe depuis Element en Java
Comment installer Oracle JDK 1.8 dans Ubuntu 18.04 LTS?
Changements de Java 8 à Java 11
Somme de Java_1 à 100
De Java à Ruby !!
[Android Studio] Comment changer TextView en n'importe quelle police [Java]
Comment passer d'Eclipse Java à un fichier SQL
Comment écrire Scala du point de vue de Java
Comment utiliser Oracle JDK 9 EA avec Travis CI
[Java] Comment extraire le nom du fichier du chemin
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
[Débutant] Comment utiliser la conception Modifier les paramètres depuis l'introduction
Comment abaisser la version java
Migration de Cobol vers JAVA
[Java] Comment utiliser Map
Comment désinstaller Java 8 (Mac)
Java - Comment créer JTable
Comment utiliser java Facultatif
Nouvelles fonctionnalités de Java7 à Java8
Comment réduire les images Java
Comment rédiger un commentaire java
Connectez-vous de Java à PostgreSQL
[Java] Comment utiliser removeAll ()
Comment utiliser Java Map
Comment définir des constantes Java
Comment utiliser les variables Java
Comment convertir la base Java
[Java] Comment implémenter le multithreading
Passer de SQLite3 à PostgreSQL
Comment installer JDK8-10 (Mac)
De Java inefficace à Java efficace
Comment initialiser un tableau Java
Comment stocker des chaînes de ArrayList à String en Java (personnel)
Comment écrire et noter lors de la migration de VB vers JAVA
Comment changer dynamiquement les JDK lors de la construction de Java avec Gradle
Comment étudier Java Silver SE 8
Comment utiliser HttpClient de Java (Get)
Étudier Java # 6 (Comment écrire des blocs)
Comment créer un conteneur Java
Comment désassembler un fichier de classe Java
Comment utiliser HttpClient de Java (Post)
Installation de Java Open JDK 8 sur CentOS 7
Comment apprendre JAVA en 7 jours
Android: Comment gérer "Impossible de déterminer la version Java à partir de '10 .0.1 '"
Comment changer kube-proxy en mode ipvs.