Путаница версий Java

#java #deployment

#java #развертывание

Вопрос:

Я хочу установить Java на несколько разных серверов для запуска сторонней службы на tomcat. Я не разработчик Java, и я немного запутался, когда начал искать установщик.

Я проверил разные версии Java и даты их долгосрочной поддержки. Кажется, что Java 11 JDK — LTS, поэтому я решил использовать его. Но когда я пытался найти версию среды выполнения (JRE?), Поскольку это версия, которую я должен установить на сервер (?) Я нашел только Java JRE 8.X.X, и это меня смутило.

Нет более высокой основной версии JRE? Как это работает, если вы используете JDK 11 или даже 14-15 в качестве разработчика, а затем используете Java 8 JRE на своих развернутых серверах?

Может быть, JDK содержит внутри себя версию Java 8 JRE? Или вам действительно нужно установить версию JDK на серверах вместо этого?

Комментарии:

1. JRE — это среда выполнения для виртуальной машины Java. JDK — это набор для разработки приложений Java. Большинство JAR-файлов JDK присутствуют в JRE, поэтому нет необходимости устанавливать JDK на серверы. Вы должны просто отправить все свои зависимости (кроме тех, которые присутствуют в JRE) вместе с вашим приложением и поместить их в classpath вашего приложения

2. однако могут быть исключения (например, если вы используете серверные страницы Java, т. Е. JSP, тогда среда выполнения должна будет скомпилировать их в байт-код, но в JRE нет компилятора, это часть JDK)

3. @mangusta итак, если я правильно понимаю, последняя версия Java JRE, которая является 1.8.x.x, должна быть в порядке в обязательных случаях, и если кто-то разработал приложение с последней версией JDK, необходимые «компоненты», вероятно, также будут включены в последнюю версию JRE? Чтобы меня не смущал разрыв в версиях между JDK и JRE (?)

4. @chrylis-осторожно оптимистично — Значит, если я хочу последнюю версию Java на своих серверах / / машинах, я должен просто установить версию JDK? Из того, что я видел, Java JDK 11 является самым высоким с долгосрочной поддержкой, поэтому я его установлю?

5. Java JDK 11 — это то, с чем сейчас работает большинство бизнес-проектов, которые я вижу.

Ответ №1:

JRE является подмножеством JDK. Он содержит все необходимое для запуска приложений Java, но не поддерживает разработку. Итак, если вам нужен JRE, JDK также хорош, хотя он содержит много вещей, которые вам не понадобятся.

Обычно для выполнения Java-приложения вам нужен JRE с той же версией или выше, чем JDK, используемый для разработки. Но разработчик может посоветовать компилятору сгенерировать код для более низкой версии. Если он это сделает, он не сможет использовать возможности более высоких версий. Например, компилятор JDK 1.8 может создавать код для JRE 1.6. Вам следует обратиться к руководству, чтобы узнать, какие старые версии поддерживаются компилятором конкретной версии.

Комментарии:

1. Возможно ли, что из JDK 11 и в дальнейшем нет подмножества JRE, которое я могу установить? Так что теперь мне действительно нужно установить JDK на серверах, а не JRE (который больше не существует как автономный)?

2. Как разработчик, я обычно не устанавливаю полный JDK. Например, на сайте Adopt DK есть только полный JDK. Возможно, есть вариант для минимальной установки при установке. В противном случае вы можете использовать полный JDK,

Ответ №2:

После некоторого исследования,

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

На стороне примечания есть открытая версия JDK 11, но она предупреждает вас об устаревших обновлениях безопасности.

Итак, в основном в моем случае достаточно придерживаться обновленной версии Java JRE 8 на ближайшее будущее.