Java SE 6、JRE 1.6和JDK 1.6有何不同?

208

我看到许多不同的Java术语。我需要安装JDK 1.6。我的理解是Java 6 == Java 1.6。但是,当我安装Java SE 6时,我得到的JVM版本为11.0!谁能解决这个疯狂的问题?

我看到很多不同的Java术语。 我需要安装JDK 1.6。 我原以为Java 6 == Java 1.6。 然而,当我安装Java SE 6时,我得到了一个报告版本为11.0的JVM! 谁能解决这个混乱的问题?


19
这里有一张不错的Java概念图(带有可点击的链接),可以帮助理解。 - informatik01
6个回答

203
  • JDK - Java开发工具包
  • JRE - Java运行环境
  • Java SE - Java标准版

SE定义了一组功能和能力;还有更复杂的版本(企业版-EE)和更简单的版本(微型版-ME-适用于移动环境)。

JDK包括编译器和其他工具,用于开发Java应用程序;JRE没有。 因此,如果要运行其他人提供的Java应用程序,则需要JRE;如果要开发Java应用程序,则需要JDK。

编辑:如Chris Marasti-Georg在评论中指出的那样,您可以在Sun的 Java 网站上找到大量信息,特别是来自 Java SE 部分(第2个选项,Java SE Development Kit (JDK) 6 Update 10)。


编辑于2011-04-06:世界在转变,Java现在由Oracle管理,后者收购了Sun。预计今年晚些时候,sun.com域名将消失。新页面(基于重定向)是Oracle Tech Network的这个Java页面。(另请参见java.com。)


编辑于2013-01-11:时间在继续流逝(尽管除2012-12-21外),现在JRE 6即将结束支持。Oracle表示,Java 6将在2013年2月后不再公开更新。Oracle

在Java的特定版本中,这个答案仍然有效。JDK是Java开发工具包,JRE是Java运行时环境,Java SE是标准版等。但是6(1.6)版本正在变得陈旧。

编辑于2015-04-29: 经过另外几次公转,Java SE 7的支持终止时间也到来了。2015年4月,Oracle确认不再向Java SE 7提供公共更新。Java SE 8的公共更新的临时结束日期是2017年3月,但该日期可能会变化(往后而非往前)。


2
那么,如果我需要JDK 1.6,我应该安装什么?安装Java SE 6会给我一个报告版本为11.0的JVM! - Joe Schneider
1
你需要前往Oracle官网下载JDK 1.6或6版本,无论官网如何标注。 - Chris Marasti-Georg
1
@Pacerier:那在2008年10月是真的吗?此外,JDK的主要组件不是Java编译器吗? - Jonathan Leffler
2
"SE 定义了一组能力和功能"。这个说法比较模糊。您能详细说明一下吗?我知道 JDK 包含编译器和可能标准库也是。如果是这样,SE 包含什么?是什么类型的能力和功能?我的意思是,如果我想使用 lambda,那么我必须安装适当的 JDK 来编译我的代码,对吗?而 SE 在其中没有任何作用? - Nawaz
1
@Nawaz:在不让回答变得太宽泛的情况下,这种信息的包含量是有严格限制的。这类问题可以在Oracle和Java网站上找到答案。例如,您应该查看哪里可以获取有关Java的技术信息。它有比较和对比JRE和JDK以及JRE和JSE的部分。我相信JVM也随着JDK一起提供,而不仅仅是JRE;如果您是开发人员,则需要JDK,但作为用户,JRE就足够了。Lambda支持取决于Java的版本(9 vs 8 vs 7 vs 6...)。 - Jonathan Leffler
显示剩余8条评论

123

这可能对某些人有所帮助:

我正在为开发在我的系统上安装最新的Java,目前是Java SE 7。现在,让我们深入探讨一下您所说的“疯狂”...

所有这些都是相同的(当开发人员谈论用于开发的Java时):

  • Java SE 7
  • Java SE v1.7.0
  • Java SE Development Kit 7

从Java v1.5开始:

  • v5 = v1.5。
  • v6 = v1.6。
  • v7 = v1.7。

我们可以假设未来版本也将保持这种命名方式。

接下来,对于开发人员,请下载JDK,而不是JRE。

JDK将包含JRE。如果你需要JDK和JRE,请获取JDK。两者都将从单个JDK安装中安装,如下所示。

正如上面有人提到的:

  • JDK = Java开发工具包(开发人员需要此项工具包,如果您在编写Java代码,则属于此类别)
  • JRE = Java运行时环境(用户需要此项工具包,今天每个计算机用户都需要它)
  • Java SE = Java标准版

以下是我遵循的逐步链接(一个步骤导致下一个步骤,这全部都是单个下载)来下载Java开发所需的JDK:

  1. 访问“Java SE Downloads”:http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. 点击“JDK下载”,访问“Java SE Development Kit 7 Downloads”:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html(请注意,从步骤#1的链接将带您转到另一个链接,因为JDK 1.7更新了,有了更高版本)
  3. 接受协议:)
  4. 单击“Java SE Development Kit 7(Windows x64)”:http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-windows-x64.exe(适用于我的64位Windows 7系统)
  5. 您现在正在下载(希望是最新的)适用于您系统的JDK! :)

请记住,上述链接仅供参考,以向您展示下载JDK所需的逐步方法。

并使用默认设置安装到:

  • “C:\ Program Files \ Java \ jdk1.7.0 \”(JDK)
  • “C:\ Program Files \ Java \ jre7 \”(JRE)<--- 为什么它要求新的安装文件夹?这是JRE!

请记住,JDK包含JRE,如果您知道它们是什么,这是有意义的。再次参见上文。

安装完成后,请双击“C:\ Program Files \ Java”以查看这两个文件夹。现在您知道它们是什么以及它们为什么存在了。


10
这个回答需要提升一下 :) - fchen
最近我不得不安装一个jre来运行另一个安装程序,然后又不得不安装32位版本才能让另一个安装程序正常工作。最终我使用的版本是glassfish 4,但似乎仍然没有提供javax.persistence。后来发现我需要maven,你需要解压缩并设置一些环境变量。真是一团糟! - JonnyRaa
在我看来,Java SE和Java SDK似乎是同一个软件包。 - galmok

61
当你输入 "java -version" 命令时,会看到三个版本号 - Java 版本(在我的电脑上是 "1.6.0_07"),Java SE 运行时环境版本 ("build 1.6.0_07-b06") 和 HotSpot 版本(在我的电脑上是 "build 10.0-b23, mixed mode"")。我怀疑你所看到的 "11.0" 是 HotSpot 版本。
更新:HotSpot 是内置于 Java 虚拟机中的即时编译器,(或曾经是,现在似乎被用来表示整个 VM)。只有上帝知道为什么 Sun 要给它单独的版本号。

9
JVM 1.6和JVM 11.0有什么区别?Hotspot是什么? - Joe Schneider
谢谢,那是一个混淆了 - 有两个不同的版本号。 - Joe Schneider
2
实际上,HotSpot不是JIT。JIT意味着编译在执行之前进行。HotSpot首先使用解释来执行和分析代码,然后再编译/优化程序的选定部分。 - John Nilsson

28
  • Java是一个平台。它由两个产品组成 - 软件开发工具包和运行时环境。

  • 当Java首次发布时,它显然只称为Java。如果你是一个开发人员,你也知道版本号,最初是常规的“1.0”,后来变成了“1.1”。平台中的两个产品也被赋予了名称:

    • JDK - “Java开发工具包”
    • JRE - “Java运行时环境”
  • 显然,版本1.2中的更改如此重大,以至于他们开始将平台称为Java 2

    • 默认情况下,“分发版”平台被赋予了代号“标准”,以与其兄弟姐妹形成对比。所以你有三个平台:

      • “Java 2标准版(J2SE)”
      • “Java 2企业版(J2EE)”
      • “Java 2移动版(J2ME)”
    • JDK正式更名为“Java 2软件开发工具包”。

  • 当版本1.5发布时,管理层决定需要“重新品牌化”该产品。因此,Java平台有两个版本 - 产品版本“5”和开发者版本“1.5”(是的,“1.”要省略)。但是,名称中保留了“2”。因此,现在正式称之为“Java 2平台标准版5.0(J2SE 5.0)”

    • 开发团队并没有接受JDK的名称更改。但是他们没有撤销更改,而是决定从个别产品名称中删除“2”,现在它们被称为"J2SE Development Kit 5.0 (JDK 5.0)""J2SE Runtime Environment 5.0 (JRE 5.0)"
    • 当1.6版本推出时,有人意识到在名称中使用两个数字很奇怪。所以他们决定完全去掉"2"(以及".0"后缀),于是我们得到了包含"Java SE Development Kit 6 (JDK 6)""Java SE Runtime Environment 6 (JRE 6)""Java Platform, Standard Edition 6 (Java SE 6)"

    • 1.7版本没有做任何愚蠢的事情。如果我猜的话,下一个重大变化将是取消“SE”,这样循环就完成了,JDK再次被称为“Java Development Kit”。

    注释

    • 为简单起见,省略了商标符号。因此假设存在Java™、JDK™和JRE™。

    • SO似乎无法呈现嵌套列表。

    参考文献

    结语

    只需从 javac -versionjava -version 中打印的版本中去掉"1.",就可以继续使用。


  • 7
    哇塞,我以为只有微软才会让疯狂的无家可归者起产品名字。 - Stabledog
    4
    太疯狂了。我每次都必须明确地查找它们,才能理解这些东西。 - Preet Sangha

    6

    随着Java 5的发布,产品版本与开发版版本有了区别,具体描述请参见此处

    1.5.0版本还是5.0版本?

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

    "Version 5.0"用于平台和产品名称

    版本5.0在平台和产品名称中使用,如下表所示:

    全称 缩写
    平台名称 Java™ 2 Platform Standard Edition 5.0 J2SE™ 5.0
    发布在该平台下的产品 J2SE™ Development Kit 5.0 JDK™ 5.0
    J2SE™ Runtime Environment 5.0 JRE 5.0

    开发人员使用的“版本1.5.0”

    J2SE在一些只对开发人员可见或者版本号被程序解析的地方也保留了版本号1.5.0(或1.5)。正如前面所提到的,1.5.0指的是完全相同的平台和以5.0编号的产品。版本号1.5.0和1.5用于以下场合:

    • java -version(返回 java 版本号 "1.5.0" 等信息)
    • java -fullversion(返回 java 完整版本号 "1.5.0-b64")
    • javac -source 1.5(javac -source 5 也可以使用)
    • java.version 系统属性
    • java.vm.version 系统属性
    • @since 1.5 标签值
    • jdk1.5.0 安装目录
    • jre1.5.0 安装目录
    • http://java.sun.com/j2se/1.5.0 网站(http://java.sun.com/j2se/5.0 也可以使用)

    5
    Java SE Runtime是针对终端用户的,所以您需要Java JRE版本。Java的第一个版本是1,然后是1.1 - 1.2 - 1.3 - 1.4 - 1.5 - 1.6等。每个版本通常都以版本号命名,因此JRE 6表示Java JRE 1.6。无论如何,还有更新版本,例如1.6更新45,它被称为Java JRE 6u45。
    据我所知,他们更喜欢使用数字6而不是1.6来更好地反映成熟度、稳定性、可扩展性、安全性等方面的水平。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接