Подтвердить что ты не робот

JDK, JRE, Java: версия Confusion!

Хотя я пока не настоящий Java-разработчик, мне кажется, что я должен это знать до сих пор, но я все еще очень смущен. Мой вопрос состоит из двух частей:

  • В чем разница между так называемым (как я его видел) "Sun JDK", OpenJDK и GCJ?

  • В разное время я видел, как каждый из них был брошен, что очень затрудняет понимание того, какие номера версий действительно применимы к чему. Может кто-нибудь, пожалуйста, помогите мне разобраться с этим?

    • Java 6
    • Java 1.6
    • JDK 6
    • JDK 1.6
    • JRE 1.6
    • JVM 11.0

Примечание. Я понимаю разницу между JDK (Java Development Kit) и Java Runtime Environment. Однако я не совсем понимаю разницу между JRE и JVM, хотя я знаю, что делает JVM.

4b9b3361

Ответ 1

  • Sun JDK создан Sun, OpenJDK - это конкурирующая реализация с открытым исходным кодом. GCJ - это компилятор GNU java.
  • Java 6 = Java 1.6 и JDK 6 = JDK 1.6

Подробности 1 http://en.wikipedia.org/wiki/OpenJDK https://stackoverflow.com/questions/1977238/why-should-i-use-the-sun-jdk-over-the-openjdk-or-vice-versa

http://en.wikipedia.org/wiki/GNU_Compiler_for_Java

Как GCJ относится к Sun JDK/OpenJDK? Я не знаю прямого отношения. GCJ - отдельный проект. Каковы достоинства использования одного JDK над другим? Проблемы лицензирования могут возникать, если вы перераспределяете Sun JDK. Лично я больше доверяю Sun JDK из-за его стабильности. Разве OpenJDK не проект Sun? Да и нет. Это проект сообщества.

Ответ 2

Java 6 и Java 1.6 одинаковы. Первоначально Java была названа Java 1.X, но со временем Sun Marketing обнаружил, что это лучше сигнализирует о значительных улучшениях, если они сбросили "1.", часть. Первая версия для этого была Java 1.5, которая была продана как Java 5.

JRE 6 - это потребительское распространение Java 6. Его легко загрузить из http://java.com.

JDK 6 - это дистрибутив разработчика Java 6. Он содержит инструменты, такие как компилятор, и поддерживает больше культур, чем стандартная JRE. Его нужно загрузить из http://javasoft.com.

JVM 11.0 является версией Java-интерпретатора внутри Oracle JRE/JDK (другие производители используют разные номера). Это похоже на то, что Windows Vista действительно является Windows 6.0.6001.

Ответ 3

  • В основном это разные реализации одного и того же набора стандартов, описывающих работу виртуальной машины Java.
  • Версии Java развивались обычным образом с 1.0 до 1.4, когда какой-то умный парень из маркетинга придумал идею назвать следующую версию "Java 5" вместо 1.5, но, конечно, это только вызвало путаницу, которая переносилась на 6 (1.6) и, вероятно, продолжится в течение некоторого времени. Я не знаю, что такое JVM 11.0. (Вы уверены, что это не 1.1.0? Я знаю, что это длинный выстрел, но кто знает.)

И разница между JVM и JRE. Строго говоря, JVM - это просто машина, которая интерпретирует байт-код Java, в то время как JRE также содержит все стандартные библиотеки классов, файлы ресурсов, dll (so s) и т.д.

Ответ 4

Солнце в течение лет внесло некоторые изменения в соглашения об именах для своего языка программирования. Первоначально у вас был jdk1.1 и т.д. В jdk1.2 они решили изменить это на Java 2. Итак, вы увидите несколько более старых книг о Java 2.

Тогда по какой-то загадочной причине он вернулся к jdk1.3, затем jdk1.4. Когда был выпущен jdk1.5, они приложили все усилия, чтобы снова изменить имена. Итак, у нас была Java 5. Поскольку они решили придерживаться этого, у вас есть следующее:

   jdk1.5 = Java 5
   jdk1.6 = Java 6
   jdk1.7 = Java 7

и (возможно) и так далее.

Так надеемся, что это объяснит эту часть. В вашем вопросе Java6 == Java 1.6 == JDK 6 == JDK 1.6.

Что касается JVM против JRE. JRE содержит JVM, а также библиотеки классов и любые другие инструменты, необходимые для запуска вашей Java-программы. JVM - это просто программа, которая интерпретирует ваш байт-код и выполняет его на главной машине.

Ответ 5

Остерегайтесь, GCJ не сертифицированная JVM. Это проект GNU Classpath для Java, который имеет частичную совместимость с Java по лицензии GNU. Вы должны избавиться от него, если вы не уверены, что это соответствует вашим потребностям, и у вас есть причина, по которой вы не можете использовать другую полную реализацию Java.