解释Java SE、JDK、JRE和JVM之间的区别

x33g5p2x  于2020-12-26 发布在 Java  
字(2.4k)|赞(0)|评价(0)|浏览(1362)

在使用Java进行开发时,一开始可能会被Java SE、JDK、JRE和JVM等类似的词汇所迷惑。 在这里,我们解释一下这些术语之间的区别以及何时使用。 我也会解释一下Java的付费版本。

什么是Java SE?

Java SE是Java Platform, Standard Edition的缩写,它是Java中使用的API的集合。API是Application Programming Interface的缩写,在这里,你可以把它看作是对如何调用Java函数和数据的定义。

Java中提供的API有很多,但Java SE是最基本的API的集合,比如java.lang.String类。

Java SE会定期升级。Java SE会定期升级,版本号是用来识别它是哪个版本的Java SE。 例如,Java SE 8、Java SE 13等。

Java SE与Java EE或Java ME的区别

Java SE是基本的Java API的集合,在很多情况下,比如开发桌面应用时,单独使用Java SE就足够了,但在更大规模的开发时,比如企业系统,则要结合使用Java EE。Java EE是Java Platform,Enterprise Edition的缩写,它包含了开发大型系统时必须的API。

Java EE的定位是Java SE的扩展,所以如果要使用Java EE,需要和Java SE一起使用。

2017年,Java EE从甲骨文转移到Eclipse基金会。 未来将从Java EE改名为Jakarta EE。

还有Java ME,它是一个API的集合,用于开发在家用电器和移动设备等嵌入式设备上运行的应用程序。Java ME是Java Platform, Micro Edition的缩写。

Java SE、Java EE(Jakarta EE)、Java ME是根据用途来使用的。

什么是JVM?

JVM是Java虚拟机的缩写,它是在Windows和Mac OS上运行用Java创建的应用程序所需要的应用程序。它也被称为Java虚拟机。

例如,在用C语言创建程序的情况下,编译后的字节码会以不同的可执行文件的形式输出,以便在每个操作系统上执行。 创建的可执行文件可以独立执行。

另一方面,当用Java创建的程序被编译后,会输出一个叫做中间代码的Java类文件。无论在哪个操作系统上编译,Java类文件都是一样的。Java类文件本身不能被执行,而是在你要运行的操作系统上安装的JVM上执行。之所以Java类文件在所有操作系统上都是通用的,并且在每个操作系统上都能正常工作,是因为每个操作系统的JVM都会将Java类文件转换为在目标操作系统上工作的文件并执行。

Java程序如何在JVM中执行

这样一来,你就可以在JVM运行的任何操作系统上运行相同的Java创建的应用程序。 但是,为了运行Java应用程序,必须事先在要运行它的PC上安装JVM。

什么是JRE?

JRE是Java Runtime Environment的缩写,它是一组可以运行的Java程序。它被称为Java Runtime环境或Java Runtime。JRE包括JVM和相应的API,如前所述。

用Java创建的应用程序是在JVM上执行的,但实际上你可以通过在每个操作系统上安装JRE来构建执行Java应用程序的环境。根据相应的Java SE版本,JRE被赋予一个版本号。 例如,JRE 8或JRE 13。

过去只需自行安装JRE即可,但从2019年12月起,JRE不再自行分发,必须安装后面所述的JDK。

什么是JDK?

JDK是Java Development Kit的缩写,它是一套用于开发和运行Java程序的程序。它也被称为Java开发环境。 除了前面介绍的JRE外,JDK还包括了编译和调试用Java编写的程序等程序,通过安装JDK,可以使用Java创建应用程序,并执行所创建的应用程序。 JDK可以用来创建和运行Java应用程序。

JDK是根据它所支持的Java SE版本来分配版本号的。 例如,JDK 8或JDK 13。

JDK 9之后如何选择和支付JDK?

2017年9月,甲骨文宣布了JDK的新版本模型和许可证产品(参见:JDK的新版本模型和许可证产品)。

甲骨文也在2019年4月改变了许可证,Oracle JDK现在需要一个付费的许可证协议,但个人使用和开发目的除外(参见:Oracle Java许可证变更--仅用于个人开发、测试和演示目的的免费使用)。

因此,如果你想将Oracle JDK用于商业目的,你需要签署某种付费合同。

但是,如果你想将JDK用于商业目的,并不意味着你必须为它付费。 目前,包括Oracle、SAP、红帽和Google在内的多家公司和个人都在进行Java开发,作为OpenJDK项目。 每个公司都提供基于OpenJDK源代码的二进制文件。

甲骨文还提供了基于OpenJDK的Oracle JDK,同时提供了可以商业化免费使用的OpenJDK二进制文件。 以前只有在Oracle JDK中才有的功能,现在逐渐转移到OpenJDK中,所以在功能上已经没有任何区别。

需要注意的是,支持期。 例如,甲骨文公司提供的OpenJDK二进制文件每6个月更新一次,但只有在新的OpenJDK二进制文件发布之前,才会提供支持,所以你需要每6个月更新到最新版本的OpenJDK才能继续获得支持。 相比之下,Oracle JDK只支持到新的OpenJDK二进制版本发布为止。 另一方面,Oracle JDK每三年就会有一个长期支持(LTS)版本,让你可以获得同一版本JDK的长期(付费)支持。

至于使用哪个JDK,如果是Oracle提供的,如果需要长期支持,可以使用Oracle JDK,如果不需要长期支持,想免费用于商业用途,可以使用Oracle OpenJDK。 另外,如前所述,OpenJDK二进制文件不仅由甲骨文公司提供,还由红帽、亚马逊等公司提供。

以上是对Java SE、Java EE、Java ME、JDK、JRE和JVM的区别的解释。

相关文章