JDK,JRE,Java:版本混乱!

时间:2011-01-14 22:20:57

标签: java openjdk gcj

虽然我还不是真正的Java开发人员,但我觉得我现在应该知道这一点,但我仍然很困惑。我的问题有两个部分:

  1. 所谓的(如我所见)“Sun JDK”,OpenJDK和GCJ 之间有什么区别?

  2. 在不同的时间,我已经看到了下面的每一个被抛出,使得理解哪些版本号实际适用于什么令人困惑。有人可以帮我解决这个问题吗?

    • Java 6
    • Java 1.6
    • JDK 6
    • JDK 1.6
    • JRE 1.6
    • JVM 11.0
  3. 注意:我确实理解JDK(Java Development Kit)和Java Runtime Environment之间的区别。虽然我知道JVM是什么/做什么,但我并不完全清楚JRE和JVM之间的区别。

5 个答案:

答案 0 :(得分:10)

  1. Sun JDK由Sun制作,OpenJDK是一个竞争的开源实现。 GCJ是GNU java编译器。
  2. Java 6 = Java 1.6和JDK 6 = JDK 1.6
  3. 详情项目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而不是另一个JDK有什么优点? 如果重新分发Sun JDK,则可能会出现许可问题。我个人更加信任Sun JDK,因为它的稳定性。 OpenJDK不是Sun项目吗?是的,不是。这是一个社区项目。

答案 1 :(得分:8)

Java 6和Java 1.6是相同的。最初Java被命名为Java 1.X,但随着时间的推移,Sun营销人员发现,如果他们放弃“1”,它将更好地表明所做的重大改进。部分。第一个版本是Java 1.5,它以Java 5的形式销售。

JRE 6是Java 6的消费者发行版。可以从http://java.com轻松下载。

JDK 6是Java 6的开发人员发行版。它包含像编译器这样的工具,支持比默认JRE更多的文化。需要从http://javasoft.com下载。

JVM 11.0是Oracle JRE / JDK中的Java“解释器”的版本(其他供应商使用不同的数字)。这类似于说Windows Vista实际上是Windows 6.0.6001。

答案 2 :(得分:3)

Sun多年来have made some changes to the naming conventions用于编程语言。最初你有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只是解释字节码并在主机上执行它的程序。

答案 3 :(得分:3)

  1. 它们基本上是描述Java虚拟机应如何工作的同一组标准的不同实现。
  2. Java版本以正常的方式从1.0发展到1.4,当时一些来自市场营销的聪明人想出了调用下一个版本“Java 5”而不是1.5的想法,但当然这只会引起混淆,这会导致6(1.6)系列可能会持续一段时间。我不知道JVM 11.0可能是什么。 (你确定它不是1.1.0吗?我知道这是一个很长的镜头,但谁知道。)
  3. JVM和JRE之间的区别。严格地说,JVM只是解释Java字节码的机器,而JRE还包含所有标准类库,资源文件,dll s(so s)等等。

答案 4 :(得分:1)

请注意,GCJ不是经过认证的JVM。它是Java项目的GNU类路径,它在GNU许可下具有部分Java兼容性。除非您确定它符合您的需求并且您有理由不能使用其他完整的Java实现,否则您应该避开它。