java версии и как с ними не запутаться

761
KansaiRobot

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

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

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

На домашней странице Java это говорит:

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

Ну, я сделал это, и у меня есть Version 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?

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

0

2 ответа на вопрос

0
harrymc

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

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, поэтому она может не иметь улучшений производительности, обнаруженных в платной версии Oracle Oracle.

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

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

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

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

enter image description here

Благодарю. Я использую Mac. Интересно, как найти JDK и JRE там KansaiRobot 5 лет назад 0
Спасибо! (Кстати, я никогда не отрицал ни одного ответа, это не в моем характере :) KansaiRobot 5 лет назад 0
Спасибо. Первая часть моего ответа все еще полезна, и я оставлю вторую часть для пользователей Windows. harrymc 5 лет назад 0
@kansai Надеюсь, что если кто-то напишет неправильный ответ, вы поможете остальным узнать об этом, проголосовав за него. Голосование вверх и вниз является важной частью того, как мы помогаем друг другу находить полезные ответы. Спасибо за помощь. Twisty Impersonator 5 лет назад 0
@TwistyImpersonator: неправильный ответ для одного автора может быть правильным для другого. Я не придерживаюсь ответов на голосование. Если кто-то попытался придумать ответ и опубликовать его, он не должен быть оштрафован за свои усилия, а скорее поощрен к продолжению. harrymc 5 лет назад 0
Я не предлагаю одно отрицательное голосование за ответы, которые им * не нравятся. * Я имею в виду отрицательное голосование за ответы, которые ** неправильны. ** Мы обязаны этим отзывом пользователям, которые в меньшей степени способны отличить правильные ответы от собственных. Twisty Impersonator 5 лет назад 0
0
Mark

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

Есть я думаю 4 разные вещи.

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

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

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

  4. JRE (среда выполнения Java) в 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_version_history, чтобы узнать о сроках и поддержке.

Чтобы найти 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

Похожие вопросы