JDK,JRE,Java:版本混乱!

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

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

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

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

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

  1. Sun JDK由Sun制作,OpenJDK是一个竞争性的开源实现。 GCJ是GNU java编译器。
  2. 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-反之亦然

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

GCJ如何与Sun JDK / OpenJDK相关? 我没有直接的关系。 GCJ是一个单独的项目。 使用一个JDK而不是另一个JDK有什么优点? 如果重新分发Sun JDK,则可能会出现许可问题。 我个人更加信任Sun JDK,因为它的稳定性。 OpenJDK不是Sun项目吗? 是的,不是。 这是一个社区项目。

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。

  1. 它们基本上是描述Java虚拟机应如何工作的同一组标准的不同实现。
  2. Java版本以正常的方式从1.0发展到1.4,当时一些来自市场营销的聪明人提出了调用下一个版本“Java 5”而不是1.5的想法,但当然这只会导致混乱,这会导致6( 1.6)系列并可能会持续一段时间。 我不知道JVM 11.0可能是什么。 (你确定它不是1.1.0吗?我知道这是一个很长的镜头,但谁知道。)

以及JVM和JRE之间的区别。 严格地说,JVM只是解释Java字节码的机器,而JRE也包含所有标准类库,资源文件, dllso )等等。

Sun多年来对其编程语言的命名约定进行了一些更改 。 最初你有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只是解释字节码并在主机上执行的程序。

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