Java-версии и как не запутаться с ними
Я знаю, что есть JRE и JVM. Я также программировал на Java, так что не начинающий. Однако в последнее время я очень запутался и был бы признателен за текущий ответ на мой вопрос.
Какая версия JRE и JVM у меня есть, а какая последняя?
Теперь перед тем, как сказать мне "гугл это", я уже гуглил это. Поэтому мое замешательство.
На домашней странице 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?
Может кто-то объяснить это мне?
2 ответа
Мне кажется, что на ваши вопросы ответили в той же статье в Википедии:
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-разрядная версия):
Вы путаете некоторые термины и находитесь на Mac, где Oracle также перепутал некоторые из них.
Есть я думаю 4 разные вещи.
JVM (виртуальная машина Java) присутствует во всех выпусках Java и является исполняемым файлом, который запускает скомпилированные файлы классов Java. Он не может быть загружен напрямую, но является частью 3 других элементов. java -version показывает версию, которую вы используете.
JDK (Java Development Kit) Это установка, которая вам нужна, если вы пишете программы. Включает в себя компилятор и другие инструменты. Для macOS с версиями Oracle это единственная загрузка, которая предоставляет среду, запускаемую из / usr / bin / java
JRE(среда выполнения Java). В версиях Java для Windows, Linux и Apple это обеспечивает минимальный выбор файлов, необходимых для запуска Java-программы из командной строки. Похоже, он не существует как часть релиза Oracle macOs, однако это среда выполнения Java(TM) SE, представленная в версии Java.
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