首页 > 编程知识 正文

jdk最新版(jdk1)

时间:2023-05-04 09:45:53 阅读:100272 作者:1732

发布版本说明

根据发布计划,JDK 16这次发布的将是一个短期超版本。下一个长期支持版本(LTS版)将于今年9月发布(Java 17),LTS版将每三年发布一次,最后一个长期支持版本是9月18日发布的JDK 11。

JDK 16是Java SE平台版本16的开源参考实现,由JCP的JSR 390(Java社区进程)指定。

00-1010主要分为OpenJDK版本和Oracle版本,下载地址如下:

OpenJDK版本:https://jdk.java.net/16/Oracle版本:https://www . Oracle.com/Java/technologies/javase-JDK 16-downloads . html以上版本如果用于个人学习,差别不大。但是,如果用于商业目的,则需要谨慎对待相关授权。Oracle JDK是根据二进制代码许可协议获得许可的,而OpenJDK是根据GPL v2许可获得许可的。

关于Java的更多基础知识,请参考《Java核心编程》这本书,书中有非常详细的描述。

安装包下载

JDK 16为用户提供了17项主要增强/更改,包括新的Java语言改进、工具和内存管理,以及一些孵化和预览功能。有了这些新特性,Java将进一步提高开发人员的工作效率。

值得注意的变化是,经过一年的社区反馈和实际应用,JDK 14、模式匹配和记录中提供的预览功能终于在JDK 16落地。

此外,甲骨文还免费为Java SE订阅服务提供GraalVM企业版服务。GraalVM可以帮助提高应用程序性能并减少资源消耗,尤其是在微服务和云原生架构中。

00-1010这不是集合中的vector,而是一个新的初始迭代孵化器模块jdk .孵化器. Vector,用于表示运行时可靠编译到支持的CPU架构的最佳向量硬件指令的向量计算。

00-1010允许在JDK底部的C源代码中使用C 14的新语言功能,并提供了一个指南,说明哪些代码在HotSpot虚拟机代码中使用这些新功能。

00-1010将OpenJDK社区的源代码存储库从Mercurial迁移到Git。

00-1010托管GitHub上OpenJDK社区的Git存储库。

GitHub是世界上流行的托管Git代码的平台。在中国,托管代码推荐Gitee。

JDK 16 新特性说明

ZGC在JDK 11日首次被纳入,在JDK 15日正式转为阳性。

这个版本是为了让ZGC支持并发栈处理,解决最后一个主要瓶颈,把ZGC的线程栈处理从安全点移到并发阶段。它还提供了一种机制,通过这种机制,其他HotSpot子系统可以延迟处理线程堆栈。

1. 338: Vector API (孵化)

Unix域套接字通道,它将Unix域套接字通道支持的所有功能添加到java.nio.channels包中的套接字通道和服务器套接字通道API中。

U

NIX 域套接字主要用于同一主机上的进程间通信(IPC),大部分方面与 TCP/IP套接字类似,不同的是 UNIX 域套接字是通过文件系统路径名寻址,而不是通过 IP 地址和端口号。

7. 386: Alpine Linux Port

在 x64 和 AArch64 平台体系结构上,将 JDK 移植到 Alpine Linux 以及使用 musl 作为其主要 C 语言库的其他 Linux 发行版中。

8. 387: Elastic Metaspace

弹性的元空间,可以帮助 HotSpot 虚拟机,将元空间中未使用的 class 元数据内存更及时地返回给操作系统,以减少元空间的内存占用空间。

另外,还简化了元空间的代码,以降低维护成本。

9. 388: Windows/AArch64 Port

将 JDK 移植到 Windows/ AArch64 平台系列。

10. 389: Foreign Linker API (孵化)

引入了一个新的 API,该 API 提供了对本地 native 代码的静态类型访问支持。

11. 390: Warnings for Value-Based Classes

基于值的类的警告,将基础类型包装类指定为基于值的类,废除其构造函数以进行删除,从而提示新的弃用警告。并且提供了在任何基于值的类的实例上不正常进行同步的警告。

12. 392: Packaging Tool

提供了 jpackage 打包工具,可用于打包独立的 Java 应用程序。

jpackage 打包工具是在 JDK 14 中首次作为孵化工具引入的新特性,到了 JDK 15 它仍然还在孵化中,现在它终于转正了。

13. 393: Foreign-Memory Access API (三次孵化)

该 API 允许 Java 应用程序安全有效地访问 Java 堆之外的外部内存。

这个最早在 JDK 14 中成为孵化特性,JDK 15/ JDK 16 中继续二、三次孵化并对其 API 有了一些更新,这个可以在 JDK 17 中好好期待一下转正。

14. 394: Pattern Matching for instanceof

模式匹配 for instanceof,相当于是增强的 instanceof,在 JDK 14 中首次成为预览特性,在 JDK 16 中正式转正。

模式匹配的到来将使得 instanceof 变得更简洁、更安全,为什么这么说,请看下面的示例。

Java 14 之前用法:

if (obj instanceof String) { String s = (String) obj; // 使用s }

Java 14之后的用法:

if (obj instanceof String s) { // 使用s }

15. 395: Records

简单来说,Records 就是一种新的语法糖,目的还是为了简化代码,在 JDK 14 中首次成为预览特性,在 JDK 16 中正式转正。

Records 可以在一定程度上避免低级冗余的代码,比如:constructors, getters, equals(), hashCode(), toString() 方法等,相当于 Lombok 的 @Data 注解,但又不能完全替代。

下面来看一个示例:

旧写法:

class Point { private final int x; private final int y; Point(int x, int y) { this.x = x; this.y = y; } int x() { return x; } int y() { return y; } public boolean equals(Object o) { if (!(o instanceof Point)) return false; Point other = (Point) o; return other.x == x && other.y = y; } public int hashCode() { return Objects.hash(x, y); } public String toString() { return String.format("Point[x=%d, y=%d]", x, y); } }

新的Records写法:

record Point(int x, int y) { }

16. 396: Strongly Encapsulate JDK Internals by Default

JDK 内部默认强封装,JDK 16 开始对 JDK 内部大部分元素默认进行强封装,sun.misc.Unsafe 之类的关键内部 API 除外,从而限制对它们的访问。

此外,用户仍然可以选择自 JDK 9 以来的默认的宽松的强封装,这样可以帮助用户毫不费力地升级到未来的 Java 版本。

17. 397: Sealed Classes (二次预览)

封闭类(二次预览),可以是封闭类和或者封闭接口,用来增强 Java 编程语言,防止其他类或接口扩展或实现它们。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。