web-dev-qa-db-fra.com

Comment utiliser jdk sans jre dans Java 11

Nous prévoyons de migrer notre projet Java 8 pour utiliser Java 11. Mais j'ai remarqué que Java 11 ne possède pas de dossier JRE. 

Dans Java 9 et Java 10, les structures de dossiers sont modifiées, à savoir Java\jdk1.x ou Java\jre1.x, où x est Java 9 ou 10.

Mais dans Java 11, je n’obtiens qu’un seul dossier, à savoir Java\jdk-11. Comment mon client utilisera-t-il mon application sans jre?

Ce que j’ai compris, c’est que Java 11 impose de modulariser notre application et qu’il faut utiliser jlink pour créer notre propre jre afin d’exécuter l’application dans le client.

Ma compréhension est-elle correcte?

32
Maha Lak

Pendant 20 ans, le kit JDK était livré avec un environnement JRE, qui n'était qu'un sous-ensemble de ses fonctionnalités et installé dans un répertoire différent de votre système.

En fait, il était livré avec deux JRE identiques, l'un installé dans le répertoire d'installation du JDK et l'autre à l'extérieur.

Cela m’a toujours étonné, car c’est un gaspillage total d’efforts de la part des responsables de la maintenance, et un gaspillage total d’espace disque sur l’ordinateur sur lequel vous l’installez, car JRE ne fait que dupliquer certaines choses que le JDK peut reproduire. faire déjà.

Enfin, avec Java 11, Oracle et l’équipe OpenJDK ont décidé de mettre fin à cette absurdité et de ne distribuer qu’une seule chose, le JDK . Ce JDK, une fois installé, est en réalité plus petit sur votre disque dur que l’ancien JRE Même l'argument un peu valable selon lequel vous souhaitez un JRE distinct pour les périphériques disposant d'un espace disque limité, argument qui n'expliquait jamais pourquoi 2 JRE seraient installés avec un seul JDK, mais qui justifiait le besoin d'un JRE, un environnement d’exécution simplifié pour le JDK.

Ergo, il n’est pas nécessaire de créer un JRE distinct, et il n’y en avait pas depuis longtemps, encore moins de l’avoir inclus et forcé dans l’installation du JDK.

Et non, vous n'avez pas besoin de créer votre propre JRE. Installez simplement OpenJDK sur les ordinateurs clients et assurez-vous d’ajouter $ Java_HOME/bin au chemin système, comme vous le faisiez avec les anciens JRE.

Et oh, supprimez l’arborescence de répertoires Windows de tous les fichiers Java * .exe que certaines versions de l’ancien programme d’installation JRE n’y placaient pas, ainsi que le chemin système contenant également des entrées étranges ajoutées par certains installateurs JRE.

40
jwenting

Consultez le site Web du projet AdoptOpenJDK pour télécharger les derniers JRE et JDK https://github.com/AdoptOpenJDK/openjdk-jdk11

J'ai utilisé leurs versions de nuit pour résoudre le problème de la disparition de JRE dans le package JDK https://adoptopenjdk.net/releases.html?variant=openjdk11#x64_linux

Décompressez simplement JRE dans le dossier JDK et ça va être ça.

 enter image description here

3
matson kepson

tl; dr

Comment mon client utilisera-t-il mon application sans jre?

➥ Associez une implémentation Java à votre application Java. 

En savoir plus sur:

Détails

Ce que j’ai compris, c’est que Java 11 impose de modulariser notre application.

Non, la modularisation n'est pas requise à proprement parler. La plupart des applications existantes peuvent s'exécuter telles quelles dans Java 11. Vous pouvez continuer à développer dans Java 11 sans modulariser votre code. Mais dans votre cas, pour un bureau graphique ou une application mobile, vous devez conditionner une machine virtuelle Java dans votre application. Modulariser et utiliser les outils jlink est probablement la meilleure façon de procéder. En revanche, une application côté serveur ou un serveur Microservices côté serveur n'a pas encore besoin de se modulariser, bien que ce soit probablement une bonne idée de le faire ultérieurement.

J'ai remarqué que Java 11 ne possède pas de dossier JRE.

Oracle ne souhaite plus que les utilisateurs finaux installent un JRE ou un JDK. Applets Java dans un navigateur et Java Web Start la distribution des applications est en cours de fermeture, ce qui permet à l'utilisateur final de ne pas avoir besoin d'un JRE. Les applications basées sur Java doivent intégrer leur propre implémentation Java. Les seuls à installer consciemment un JDK seront les développeurs et les administrateurs système côté serveur.

Important:

Voici un diagramme d’organigramme qui peut vous aider à rechercher et à prendre une décision parmi les différents fournisseurs proposant une implémentation Java 11.

 Flowchart diagram to aid in finding and choosing an implementation of Java 11 from various vendors.

2
Basil Bourque