【问题标题】:Java versioning and terminology, 1.6 vs 6.0 OpenJDK vs SunJava 版本控制和术语,1.6 vs 6.0 OpenJDK vs Sun
【发布时间】:2011-01-25 13:26:17
【问题描述】:

我在理解 Java 版本控制方面遇到问题。我看到了很多版本,比如 1.4.2、1.5 和 1.6,但我也偶然发现了 5.0 和 6.0。我不明白这个版本控制或进度。

我对 Java 还是很陌生,我读过一些关于 OpenJDK 与 Sun 的文章,我想我明白了。这些版本是 OpenJDK 和 Sun 之间的区别吗?比如OpenJDK最新的是1.6,Sun的是6.0?

对于 Java 新手来说,所有这些版本都非常令人困惑。

【问题讨论】:

  • 基本上 java 从 1.0 到 1.1,再到 1.2 等等,然后 Sun 决定将命名约定更改为 5、6 而不是 1.5、1.6,但它从未真正卡住,即使是报告的版本java -version 不遵循新约定。
  • Java 从“听起来很合理”变成了“我们为什么要这么做?” . “需要 1.8 版”这一事实导致谷歌跋涉以了解版本号,这在很大程度上说明了 Java。 20 年前我也被骗了,今天发现无论我多么努力,我都无法摆脱它,就像 Perl、Python、Bash、Typescript、Ruby、YAML、XML 和构成今天的 IT 是一个支离破碎、毫无意义的世界。

标签: java versioning terminology


【解决方案1】:

版本控制简直一团糟:

  • Java 1.0 和 1.1 正常
  • 然后是 Java 1.2,但您应该称它为“Java 2,JDK 1.2”
  • 这种情况一直持续到 1.4(还有像 1.4.2 这样的小版本)
  • 据说下一个版本是“Java 5.0”,但文件名和 URL 中仍然到处都是“1.5”。
  • 从 Java 6 开始,他们放弃了次要版本,并且大部分(但不完全,请参见 java -version 的输出)消除了旧版本控制方案的痕迹,但人们已经习惯了它并继续使用它通俗地说。
  • 从 Java 9 或 10 开始,1.X 符号也从 java -version 的输出中消失了(这导致一些依赖于解析它的代码中断),人们几乎不再使用它。我们现在有 Java 15、Java 16、Java 17 等。

还请注意,当被问到这个问题时,Sun JDK 和 OpenJDK 是独立的代码库(有很大的重叠),而 Sun JDK 是官方的参考实现。

从那以后的 10 多年里,Java 被卖给了 Oracle,OpenJDK 成为了官方的 Java 参考实现,Oracle 停止将 Oracle JDK 作为单独的代码库进行维护。相反,他们只是提供 OpenJDK 构建,并通过错误修复和安全补丁为他们提供商业长期支持。但您也可以从 AdoptOpenJDK(最近更名为 "Adoptium")免费获得构建版本,只是它们不再受支持。

【讨论】:

  • ya on snow leopard java -version 给了我“1.6.0_17”,这确实是造成我所有困惑的原因,因为我阅读了所有关于 6.0 的内容
  • 真是一团糟。感谢迈克尔和帕斯卡提供的信息。我正在学习用于 Android 开发的 Java,但它有这样的成长痛苦。
  • 次要版本也不清楚。有时你会看到 build x 或 update y。我猜构建 == 更新?
  • 那么来自 OpenJDK 的 JDK 17 是什么?
  • @IliaSidorenko 请注意,这个答案已经有 10 多年的历史了。我为当前情况添加了一个条目。
【解决方案2】:

这在Java SE Naming and Versions中有解释(咳嗽):

当前版本是 Java 平台, 标准版 6 (Java SE 6)。这 以前的版本是 Java 2 平台, 标准版 5.0 (J2SE 5.0)。

Sun Microsystems 简化了 平台名称在2006年更好 反映成熟度, 稳定性、可扩展性和安全性 内置于 Java 平台。太阳 从名称中删除“2”并 删除了“点号”(数字 期间之后)。任何更新 Java 平台将简单地记为 更新而不是添加“点 号”在平台的末尾 名字。

由于在内部非常受欢迎 Java 开发者社区, 开发套件已恢复到 “Java 2 SDK”中的名称“JDK”(或 “J2SDK”)。运行时环境有 从“J2RE”恢复为“JRE”。 (注意“JDK”代表“J2SE 开发工具包”在 5.0 版中。)

有关平台名称的更多信息 和版本号,见下文 页数:

并引用Java SE 6 Platform Name and Version Numbers

在此版本中,平台名称已从 J2SETM 更改为 JavaTM SE。正式名称为 JavaTM Platform, Standard Edition 6。

两个版本号(1.6.0 和 6)都用于标识 Java 平台的此版本。版本 6 是产品版本,而 1.6.0 是开发者版本。数字 6 用于反映 Java SE 不断发展的成熟度、稳定性、可扩展性和安全性。

还有J2SE Version 1.5.0 or 5.0?:

版本号“1.5.0”和“5.0”都用于标识 Java 2 平台标准版的这个版本。版本“5.0”是产品版本,而“1.5.0”是开发者版本。数字“5.0”用于更好地反映J2SE的成熟度、稳定性、可扩展性和安全性的水平。

数字“5.0”是通过去掉开头的“1”得到的。从“1.5.0”开始。您可能预期会看到 1.5.0,现在是 5.0(之前是 1.5,现在是 5)。

所以,总而言之,整个命名是一团糟,但这是finally over,当前的平台名称是JavaTM平台,标准版6(缩写。 JavaTM SE 6)。两个产品在平台下交付:JDKTM 6 和 JRETM 6。

OpenJDK 6 是 Java SE 6 平台的开源实现,它不同于 Sun 的 JDK。

【讨论】:

  • 我认为我们现在可以追溯地清楚明确地引用 Java 1、Java 2、Java 3、Java 4 和 Java 5,即 java.version 1.0.x/1.1.x、1.2 .x、1.3.x、1.4.x、1.5.0,分别。
  • 是的,他们在 J2SE 中删除了这个疯狂的 2,所以 这个 的疯狂终于结束了。
  • @Michael Borgwardt 由于 Solaris 比较混乱en.wikipedia.org/wiki/Solaris_%28operating_system%29,问题是 oracle 会引入什么 ;-)
  • 应该注意的是,与大多数(全部?)其他开源 JDK 实现不同,Red Hat、Fedora 等提供的 OpenJDK 版本已通过 Java TCK 认证它们为有效/正确的运行时。
【解决方案3】:
  • Java 1.5.x 与 Java 5.x 相同
  • Java 1.6.x 与 Java 6.x 相同

基本上把版本号的1.部分扔掉了。

【讨论】:

  • 所以openjdk和sun没有区别??至于版本控制?
  • 我很确定从来没有任何东西叫做 Java 4。向“完整”版本号的转变是从 5 开始的。
  • @brad,Glen 只是在回答版本号问题。 Openjdk 和 Sun 的 JVM 是两个独立的 JVM 实现。
  • 不同的jvm实现是否必须根据某些规范坚持特定版本?
  • 有一个区别:版本6是产品版本,而1.6.0是开发者版本。
【解决方案4】:

Both 1.6 and 6 are used 引用相同的版本(对于 1.5 和 5 类似)。

【讨论】:

  • 感谢该链接,我正在四处寻找,但找不到确切的位置!
【解决方案5】:

唯一的区别是单个数字通常与Java SE 5 和Java EE 6 结合使用。

Java 编译器使用 java -version 表示 1.5 和 1.6 版本,有时“次要版本”用作版本字符串,例如 SunOS 5.8 被称为 Solaris 8 作为产品名称.

【讨论】:

    【解决方案6】:

    Guide to java versions 是任何新人了解 Java 版本控制的最佳博客

    自 2019 年以来,Java 每 6 个月(即 3 月和 9 月)发布一次新版本。

    现在是 2021 年 10 月,Java 17 已经发布。这是下载OpenJDK的链接

    几个值得注意的点

    1. 你可以一直使用最新版本的java,它会执行以前版本写的代码
    2. 以前JRE和JDK分开分发,现在有只分发JDK的趋势
    3. 有两种发行版:OpenJDK(免费)和 OracleJDK(付费)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-22
      • 2013-10-03
      • 2010-09-20
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 2023-03-30
      相关资源
      最近更新 更多