Версии Java и как в них не запутаться

Версии Java и как в них не запутаться

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

Какая версия JRE и JVM у меня установлена ​​и какая из них последняя?

Теперь, прежде чем мне захотелось сказать "погугли это", я уже погуглил это. Отсюда и мое замешательство.

вдомашняя страница Javaтам написано:

На вкладке «Общие» в панели управления Java версия доступна через раздел «О программе». Появляется диалоговое окно (после нажатия «О программе»), показывающее версию Java.

Ну, я так и сделал, и у меня версия 8 Update71.

на этой домашней странице также говорится:

JRE и JDK являются отдельными и могут сосуществовать в вашей системе. На Mac может быть установлена ​​только одна JRE. В системе может быть установлено несколько JDK, столько, сколько вы захотите.

Ладно, я это уже знаю. Поэтому я делаю то, что они говорят, чтобы получить версию из терминала, и я получаю

java -version
java version "1.8.0_71"
Java(TM) SE Runtime Environment (build 1.8.0_71-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

Ладно, похоже, то же самое. Теперь возникает вопрос:

Какая у меня версия? Я имею в виду, что версия 8 — это версия JRE? или это версия JVM? На домашней странице, хотя они и различают их (как в цитате), инструкция по получению версии —одинаковый!

Чтобы еще больше усложнить ситуацию, я перехожу квикипедияи там написано, что текущие поддерживаемые версии Java 8 и Java 11. Почему две? и что случилось с 9 и 10? И еще, это JRE или JVM?

Может кто-то объяснить это мне?

решение1

Мне кажется, что ответы на ваши вопросы есть в той же статье Википедии:

В настоящее время поддерживаются Java 8 и Java 11.долгосрочная поддержка(LTS) версия, а Java 10 — предыдущая поддерживаемая версия быстрого выпуска. Поддержка Java 10 закончилась в тот же день, что и поддержка Java 11, в сентябре 2018 года. Java 7 больше не поддерживается публично, Java 9 перестала получать обновления. поскольку Java 9 была краткосрочной версией быстрого выпуска, которая была заменена Java 10, а «конец публичных обновлений» для Java 8 запланирован на январь 2019 года для коммерческого использования и не ранее декабря 2020 года для некоммерческого использования. Для Java 11 долгосрочная поддержка не будет предоставляться Oracle; вместо этого ожидается, что более широкое сообщество OpenJDK, как AdoptOpenJDK, выполнит эту работу.

Так что версии 9 и 10 просуществовали недолго. Думаю, это были временные меры, которые были приняты в ответ на серьезные ошибки безопасности.

Версия 8 — последняя версия, которую Oracle все еще поддерживает и которая разделена на JDK и JRE. Похоже, что версия 11 отказалась от этого разделения и имеет только унифицированную версию JDK на основе OpenJDK, поэтому она может не иметь улучшений производительности, которые есть в платной версии Java от Oracle.

Чтобы узнать, какие версии Linux у вас установлены, я полагаю, вы можете сделать запрос к установленным пакетам.

В Windows эту информацию можно найти в реестре для 32- и 64-разрядных версий по адресу:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

Эту информацию вы также можете найти вПанель управления > Java (32-бит)или Панель управления > Java (64-разрядная версия):

введите описание изображения здесь

решение2

Вы путаете некоторые термины, и вы работаете на Mac, где Oracle также перепутал некоторые из них.

Я думаю, есть 4 разных вещи.

  1. JVM (Java Virtual Machine) есть во всех выпусках Java и является исполняемым файлом, который запускает скомпилированные файлы классов Java. Он не загружается напрямую, но является частью других 3 пунктов. java -version показывает используемую вами версию.

  2. JDK (Java development kit) Это установка, которая вам нужна, если вы пишете программы. Она включает компилятор и другие инструменты. Для macOS с выпусками Oracle это единственная загрузка, которая предоставляет среду, запускаемую с помощью /usr/bin/java

  3. JRE (Java Runtime Environment). В версиях Java для Windows, Linux и Apple это обеспечивает минимальный набор файлов, необходимых для запуска программы Java из командной строки. Похоже, что он не существует как часть версии Oracle macOs, однако это Java(TM) SE Runtime Environment, показанная версией Java.

  4. JRE (Java Runtime Environment) на macOS. От Oracle это среда, которая запускает апплеты Java в вашем браузере. Это JRE, которую вы можете иметь только одну на своем Mac. Это также та, которую видит и обновляет панель управления Java в Системных настройках.

Итак, на macOS из командной строки вы устанавливаете JDK, который включает JRE, а тот включает JVM, и у вас может быть много версий этих версий. Также есть отдельная JRE (не то же самое, что командная строка), которая запускает апплеты в вашем браузере и находится в панели управления Java, и у вас может быть только одна из них.

Что касается номеров версий и т. д. Насколько я понимаю, после версии 8 они изменили нумерацию версий. Википедия говорит

В сентябре 2017 года Марк Рейнхольд, главный архитектор платформы Java, предложил изменить график релизов на «один выпуск функций каждые шесть месяцев» вместо текущего двухлетнего графика[1][2], и позднее это предложение вступило в силу.

Таким образом, 9,10 были заменены на 11, а 12 должен выйти в марте 2019 года - см.https://en.wikipedia.org/wiki/История_версий_Javaчто касается сроков и степени поддержки.

Чтобы найти JVM, которые можно использовать из командной строки, выполните:/usr/libexec/java_home -V

я получил

/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Matching Java Virtual Machines (6):
11.0.1, x86_64: "OpenJDK 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
10.0.1, x86_64: "Java SE 10.0.1"    /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_171, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
1.8.0_92, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.8.0_77, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home

Чтобы установить и выбрать JDK, см.https://stackoverflow.com/questions/52524112/how-do-i-install-java-11-on-mac-osx-allowing-version-switching

Связанный контент