it-swarm.com.ru

Как использовать JDK без JRE в Java 11

Мы планируем перевести наш проект Java 8 на использование Java 11. Но я заметил, что в Java 11 нет папки JRE. 

В Java 9 и Java 10 структура папок изменяется, т.е. Java\jdk1.x или Java\jre1.x, где x - это Java 9 или 10.

Но в Java 11 я получаю только одну папку, то есть Java\jdk-11. Как мой клиент будет использовать мое приложение без JRE?

Что я понял, так это то, что Java 11 обеспечивает модульность нашего приложения, и использование jlink необходимо для создания нашего собственного jre для запуска приложения в клиенте.

Правильно ли мое понимание?

32
Maha Lak

В течение 20 лет JDK поставлялся с JRE, который являлся лишь подмножеством его функциональных возможностей, установленным в другом каталоге вашей системы.

На самом деле, он поставляется с ДВУМИ одинаковыми JRE, один установленный внутри установочного каталога JDK, а другой снаружи.

Это всегда озадачивало меня, так как сопровождающие тратят на это полную отдачу, а также полную трату дискового пространства на компьютере, на котором вы его устанавливаете, поскольку JRE просто дублирует некоторые вещи, которые JDK может делай уже.

Наконец, с Java 11 Oracle и команда OpenJDK решили покончить с этой глупостью и просто распространить одну вещь, JDK . Этот JDK, когда он установлен, на самом деле меньше на вашем жестком диске, чем старый JRE, что раньше, удаляя даже несколько обоснованный аргумент, что вы хотели бы иметь отдельную JRE для устройств с ограниченным дисковым пространством, аргумент, который никогда не объяснял, почему 2 JRE будут устанавливаться с одним JDK, но был сделан, чтобы оправдать необходимость JRE как урезанная среда выполнения для JDK.

Поэтому нет необходимости в отдельном JRE, и он давно не существовал, не говоря уже о том, чтобы включать и принудительно устанавливать его как часть установки JDK.

И нет, вам не нужно создавать свою собственную JRE. Просто установите OpenJDK на клиентских компьютерах и убедитесь, что вы добавляете $ Java_HOME/bin в системный путь, так же, как вы делали это со старыми JRE.

И, о, удалите дерево каталогов Windows из любых файлов Java * .exe, которые обычно помещались там в некоторых версиях старого установщика JRE, а также системный путь, в который также были добавлены некоторые странные записи, добавленные некоторыми установщиками JRE.

40
jwenting

Посетите веб-сайт проекта AdoptOpenJDK, чтобы загрузить последнюю версию JRE и JDK https://github.com/AdoptOpenJDK/openjdk-jdk11

Я использовал их ночные сборки, чтобы обойти проблему отсутствия JRE в пакете JDK https://adoptopenjdk.net/releases.html?variant=openjdk11#x64_linux

Просто распакуйте JRE в папку JDK и все будет.

 enter image description here

3
matson kepson

тЛ; др

Как мой клиент будет использовать мое приложение без JRE?

Implementation Объедините реализацию Java в приложении на основе Java. 

Узнать о:

Подробности

Я понял, что Java 11 обеспечивает модульность нашего приложения.

Нет, строго говоря, модульность не требуется. Большинство существующих приложений могут работать как есть на Java 11. Вы можете продолжить разработку на Java 11 без модуляции кода. Но в вашем случае для настольного или мобильного приложения с графическим интерфейсом вам необходимо упаковать JVM в ваше приложение. Модуляризация и использование инструментов jlink, вероятно, лучший способ сделать это. В отличие от этого, серверное приложение на основе сервлетов или сервер Microservices еще не нуждаются в модульности, хотя, вероятно, это хорошая идея в конечном итоге.

Я заметил, что в Java 11 нет папки JRE.

Oracle больше не предполагает, что конечные пользователи будут устанавливать JRE или JDK. Java-апплеты в браузере и Java Web Start доставка приложений прекращается, и у конечного пользователя нет необходимости в JRE. Ожидается, что приложения на основе Java будут включать собственную реализацию Java. Единственными, кто сознательно устанавливает JDK, будут разработчики и системные администраторы на стороне сервера.

Важный:

Вот блок-схема, которая может помочь вам найти и принять решение среди различных поставщиков, предоставляющих реализацию Java 11.

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

2
Basil Bourque