为了这个唯一的答案,我已经和互联网斗争了一段时间.这次旅行之后,其他的一切似乎都安然无恙了.

当我问"什么是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之间的区别"时,他们给了我that页,没有更多的东西可供考虑.这是什么意思:"用于JDK的Java SE产品名称"?现在还不能很清楚地理解.

我缺乏专业术语和经验吗?可能是的.如果我更有经验的话,我想我自己就能回答这个问题了.

这些问题包括:

  1. "是否(Java SE)==(JDK)?"(请在需要时提供广泛的解释和术语说明).
  2. Java SE是不是像Java EE一样是一个规范集?
  3. 我能在某个地方找到准确的定义吗?

很抱歉写了这么大的字.这证明了我真的很想结束这一切.

推荐答案

"Java SE"指的是三件事:

世界上任何人都可以自由编写实现Java SE规范的软件.在过go ,有几家公司这样做过.

然而,anybody in the world is not free to use the 100.要使用该商标,个人或公司必须在许可协议中与甲骨文达成协议.据推测,这笔交易需要付款.

长话短说,为了简洁明了,…过于简化一些以前编写了自己的Java SE实现的公司决定联合起来,合并他们的代码库,并将整个代码作为开源发布.这些公司包括甲骨文、IBM和苹果.于是诞生了OpenJDK项目(Wikipedia).从那时起,其他公司和个人也加入了这个项目.

甲骨文拥有的OpenJDK name is a trademark家.然而,甲骨文有published permission个允许其他人使用这个术语而不需要付费.

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

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

这些二进制文件/安装程序供应商包括(不按特定顺序):

…还有更多.

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

还有其他版本的Java技术:

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

前两家Java Card&;Java ME为甲骨文所有.第三个,Java EE,是甲骨文公司捐赠给Eclipse基金会的,如果它现在被称为Jakarta EE的话.Jakarta EE是一个规范集合,由不同的供应商发布实现.

术语"JDK"指的是Java Development Kit.该工具包包括Java SE规范的实现,以及编写Java应用程序的工具.这些工具包括一个编译器.

术语"JRE"指的是Java Runtime Environment个.这是一个JDK中缺少的一些软件开发工具.

术语"JVM"指的是Java Virtual Machine.JVM是一个软件,它使基于Java的应用程序能够在运行时在特定类型的主机和操作系统上执行.Java应用程序是平台无关的,换句话说,不是"原生的".因此,Java应用程序需要特定的JVM才能知道如何在Mac、PC或大型机上运行.

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

Java相关问答推荐

我可以从Java模块中排除maven资源文件夹吗?

为什么我的画布没有显示在PFA应用程序中?

Javascript更新alert 可扩展内容样式与CSS—按钮更多/更少

H2弹簧靴试验跌落台

无法处理批处理侦听器中的反序列化异常

在JavaFX项目中注册组合框的控件FX验证器时,模块系统出错

为什么Java Annotation接口覆盖对象类中的方法

将带有js文件的 bootstrap 程序导入maven项目时出错

无法使用Java&;TestContainers获取AWS SQS队列的属性

Spring Security不允许加载js

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

为什么Collectors.toList()不能保证易变性

Spring动态反序列化JSON可以是列表,也可以只是一个对象

我们可以在方法中声明接口吗?

多线程、并发和睡眠未按预期工作

java21预览未命名的符号用于try-with-resources

如何正确使用java.time类?

Cucumber中第二个网页的类对象未初始化

移动二维数组的行