目录

java不同的版本间有什么区别

java不同的版本间的区别主要在新增功能上。但Java向后兼容,这意味着,除了少数例外,Java 5或Java 8的程序可以在Java 8-13虚拟机上运行。当然,反过来则不成立。若程序用到Java 13一些特性,Java 8 JVM不具备这些功能,显然无法工作。

一、java不同的版本间的区别

java不同的版本间的区别主要在新增功能上。但Java向后兼容,这意味着,除了少数例外,Java 5或Java 8的程序可以在Java 8-13虚拟机上运行。当然,反过来则不成立。若程序用到Java 13一些特性,Java 8 JVM不具备这些功能,显然无法工作。

这意味着两点:

  • 不会只是“学习”某个特定版本的Java,比如Java 12。
  • 相反,之前掌握的Java 8功能都为您打下了良好的基础。这是非常好的基础。
  • 接下来,可以从本文这样的指南中学习使用Java 9-13新增功能。

Java各个版本都有哪些新功能?

一起了解Java 8-13新特性。

按照经验:Java版本越早发行周期越长(比如3到5年,一直到Java 8),这意味着每个发行版包含更多新功能。

6个月的发布周期意味着每个版本包含的新功能要少得多,因此可以快速掌握Java 9-13的新功能。

JRE和JDK有什么区别?

目前为止,一直讨论的是“Java”。Java到底是什么?

首先需要区分JRE和JDK。

过去,如果运行Java程序,只下载JRE就可以了。JRE包含Java虚拟机(JVM)和“java”命令行工具。

如果开发Java程序,需要下载一个JDK。JDK除了包含JRE中的所有内容,还提供了javac编译器及一些工具,比如javadoc(Java文档生成器)和jdb(Java Debugger)等。

为什么要用“过去”这种说法?

直到Java 8,尽管JDK有一个独立的JRE文件夹,Oracle网站还是把JRE和JDK作为单独文件提供下载。到Java 9这种区别没有了,只有JDK下载。与此同时,JDK的目录结构也变了,不再出现独立的JRE文件夹。

虽然某些发行版(参见Java发行版章节)仍然可以单独下载JRE,只提供JDK似乎已经成为一种趋势。从现在开始,Java与JDK可以替换使用。

如何安装Java?

先不考虑Java-Docker镜像、.msi安装包或者平台特定的软件包。归根到底Java只是一个.zip文件,仅此而已。

在计算机上安装Java只需要解压缩jdk-{5-13}.zip文件,甚至都不需要管理员权限。

Java发行版

有各种网站提供Java下载,但是不清楚“提供的内容以及采用怎样的许可”。本节会对此进行讨论。

OpenJDK项目

就源代码而言,只有一套Java源代码,存在OpenJDK项目中。

但只是源代码,不是发布版本(.zip文件中针对特定操作系统编译好的Java命令)。理论上,您可以从源代码构建一个版本然后发布,把它叫做MarcoJDK好了。但是这个发行版缺少认证,不能对外号称与Java SE兼容。

这就是为什么一些供应商会自己构建、进行认证(参见TCK)然后发布。

尽管供应商不能从String类中删除方法,但是可以添加商标或者他们认为有用的其他实用程序(比如CLI)。除此之外,所有Java发行版的源代码都是一样的。

OpenJDK Build(Oracle提供)与OracleJDK Build

Oracle是Java供应商之一,这样产生了两种不同的Java发行版,开始可能会觉得非常混乱。

  1. OpenJDK Build(Oracle提供)。这些Build是免费且没有商标的。但是Oracle不会对之前的老版本发布更新,举个例子,在Java 14推出后不会立即发布Java 13更新。
  2. 从2019年更改许可证开始,OracleJDK变成了带商标的商业版。开发期间可以免费使用,但如果在生产环境中使用就需要向Oracle付费。付费后能够享受长期支持,包括新版本升级,如果JVM出现问题可以享受电话支持。

Java 8之前,OpenJDK和OracleJDK的源代码实际上不一样,可以说OracleJDK“更好”。时至今日,两个版本几乎相同,只有细小差别。

归结起来,付费的Java商业版为您提供的就是电话支持。

AdoptOpenJDK

2017年,一群Java用户组(JUG)成员、开发者和供应商(包括亚马逊、微软、Pivotal、Redhat等)建立了一个社区称作AdoptOpenJDK。

他们提供免费、稳固的OpenJDK build,可用性与更新周期更长。甚至还有两个不同的Java虚拟机可供选择:HotSpot和OpenJ9。

如果安装Java,强烈推荐

Azul Zulu、Amazon Corretto、SAPMachine。

在OpenJDK Wikipedia网站上可以找OpenJDK build完整的列表。其中包括Azul Zulu、Amazon Corretto以及SapMachine其他版本。为了便于比较,这个列表按照不同的支持选项与维护策略进行了分类。

2019年开始,除非有非常特殊的要求,否则请从https://adop较好enjdk.net获取jdk.zip (.tar.gz/.msi/.pkg)或者从操作系统供应商提供的软件中选择。

延伸阅读:

二、JVM 将聚焦在哪些方面

内存管理依然是非常大的挑战。 未来会有更厉害的垃圾回收器来支持更大的堆空间

多线程和协程。 未来会加大对多核的利用,以及对轻量级线程的支持;

性能。 增加整个 JVM 的执行效率,这通常是多个模块协作的结果;

对象管理和追踪。 复杂的对象,有着复杂的生命周期。加上难以预料的内存申请方式,需要更精准的管理优化;

可预测性以及易用性。 更少的优化参数,更高的性能;

更多 JVM 监控工具。 提供对 JVM 全方面的监控,跟踪对象,在线优化;

多语言支持。 支持除了 Java 语言之外的其他开发语言,能够运行在 JVM 上。

以上就是关于java不同的版本间有什么区别的内容希望对大家有帮助。