Java SE 和 JDK 一样吗?

Gre*_*gor 0 java

为了这个单一的答案,我已经与互联网斗争了一段时间。这次旅行之后,其他一切似乎都恢复正常了。

当我问“什么是 Java SE”时,他们说“Java SE 是一组核心 Java 类……平台……开发桌面应用程序……包含核心库和 API……Java EE 是一个待实施的规范......Java EE 构建在 Java EE 之上”。有时他们会提到 javac 和 JVM,有时则不会。他们从不(几乎)提到 JDK。

当我问“什么是 JDK”时,他们说“JDK 是一组让我们可以在 Java 上构建应用程序的东西,包括 javac、JVM 等。” 并且从不(几乎)提及 Java SE。

当我问“Java SE 和 JDK 之间的区别”时,他们给了我那个页面,没有什么需要考虑的。“JDK 的 Java SE 产品名称”是什么意思?目前还不能清楚地理解。

我缺乏术语预测和经验?可能是的。我想如果我更有经验的话,我自己就能回答这个问题。

问题:

  1. “(Java SE)==(JDK)是否?” (请在需要时提供广泛的解释和术语澄清)。
  2. Java SE 是否像 Java EE 一样是一个规范集?
  3. 我可以在某处找到精确的定义吗?

抱歉写了这么大篇幅。这证明我真的很想结束这一切。

Bas*_*que 7

\xe2\x80\x9cJava SE\xe2\x80\x9d 是三件事:

\n\n

世界上任何人都可以自由编写实现 Java SE 规范的软件。过去,已有多家公司这样做过。

\n

然而,世界上任何人都不能随意使用Java的商标。要使用该商标,个人或公司必须与 Oracle 达成许可协议。据推测,这笔交易需要付款。

\n

长话短说,为了简洁而过于简单\xe2\x80\xa6 一些之前编写过自己的 Java SE 实现的公司决定联合起来,合并他们的代码库,并将整个内容作为开源发布。这些公司包括甲骨文、IBM 和苹果。由此诞生了OpenJDK项目(维基百科)。此后,其他公司和个人也加入了该项目。

\n

OpenJDK名称是Oracle拥有的商标。然而,Oracle 已发布许可,允许其他人无需付费即可使用该术语。

\n

OpenJDK项目发布了Java SE规范实现的源代码。该项目不发布构建的二进制文件或安装程序。

\n

一些供应商确实发布了用于实现 Java SE 规范的构建二进制文件或安装程序。几乎所有这些实现都很大程度上(如果不是完全)依赖于 OpenJDK 源代码。

\n

这些二进制文件/安装程序供应商包括(排名不分先后):

\n\n

\xe2\x80\xa6 等等。

\n

大多数构建的二进制或安装程序产品在其名称或描述中都使用OpenJDK ,这是 Oracle 允许的。其中一些产品可能会在 Oracle 明确许可的情况下使用术语JavaJava SE 。

\n

Java 技术还有其他版本:

\n
    \n
  • Java 卡(用于智能卡、徽章等)
  • \n
  • Java ME或 Micro Edition(适用于受限设备)
  • \n
  • Java EE或企业版(在 Java SE 规范的实现之上运行的广泛规范集合,旨在为面向企业的用户开发软件的开发人员)
  • \n
\n

前两个Java CardJava ME归 Oracle 所有。第三个是Java EE,由 Oracle 公司捐赠给 Eclipse 基金会,现在称为Jakarta EE。Jakarta EE 是一个规范集合,由不同的供应商发布实现。

\n

术语 \xe2\x80\x9cJDK\xe2\x80\x9d 指的是Java Development Kit。该套件包括 Java SE 规范的实现以及用于编写 Java 应用程序的工具。这些工具包括编译器。

\n

术语 \xe2\x80\x9cJRE\xe2\x80\x9d 是指Java 运行时环境。这是一个去掉了一些软件开发工具的JDK。

\n

术语 \xe2\x80\x9cJVM\xe2\x80\x9d 指的是Java 虚拟机。JVM 是一种软件,它使基于 Java 的应用程序能够在特定类型的主机和操作系统上运行时执行。Java 应用程序与平台无关,换句话说,不是 \xe2\x80\x9cnative\xe2\x80\x9d。因此,Java 应用程序需要特定的 JVM 才能知道如何在 Mac、PC 或大型机上运行。

\n

每个 JDK 和每个 JRE 都包含一个 JVM。

\n