应用简介
Java SE Development Kit是一款由甲骨文公司推出的Java开发工具包。它伴随着数千个性能、稳定性和安全性更新,包含Java的应用程序,并探索三种孵化功能,即Vector API(JEP 338)、Foreign Linker API(JEP 389)和Foreign-Memory Access API(JEP 389),使其大幅度提升用户工作效率。
【功能特性】
Vector API (Incubator)
处于孵化阶段的 Vector API,其中 JDK 将配备一个孵化器模块jdk.incubator.vector,用于表达可在支持的 CPU 架构上编译为最佳矢量硬件指令的矢量计算,以实现优于等效标量计算的性能。
Enable C++14 Language Features
启用 C++14 语言特性,支持在 JDK C++ 源代码中使用 C++14 语言特性。
Migrate from Mercurial to Git
OpenJDK 源代码库从 Mercurial 迁移到 Git。
Migrate to GitHub
OpenJDK 源代码库迁移到 GitHub,此变化是基于 OpenJDK 源代码库从 Mercurial 迁移到 Git。
ZGC: Concurrent Thread-Stack Processing
将 ZGC 线程堆栈处理从安全点移动到并发阶段。此计划的目标包括从 ZGC 安全点中删除线程堆栈处理。
Unix-Domain Socket Channels
为java.nio.channels包中的 socket channel 和 server-socket channel API 添加 Unix-domain (AF_UNIX) 支持。
Alpine Linux Port
针对 x64 以及 AArch64 架构,将 JDK 移植到 Alpine Linux 以及其他使用 musl 作为主要 C 语言库的 Linux 发行版上。
Elastic Metaspace
弹性元空间 (Elastic Metaspace) 能力,它可以将未使用的 HotSpot VM 类元数据(元空间)内存更迅速地返回给操作系统,从而减少元空间的占用空间并简化元空间代码,以及降低维护成本。
Windows/AArch64 Port
将 JDK 移植到 Windows/AArch64 平台。
Foreign Linker API (Incubator)
处于孵化阶段的 Foreign Linker API(外部链接器 API),该 API 用于对本地代码进行静态类型访问。
Warnings for Value-Based Classes
对基于值的类 (Value-Based Classes) 进行警告。在 Java 平台中对于任何基于值的类实例进行同步的错误尝试,会予以警告。
Packaging Tool
提供用于打包独立 Java 应用程序的 jpackage 工具。
Foreign-Memory Access API (Third Incubator)
处于孵化器第三阶段的 Foreign-Memory Access API,该 API 允许 Java 应用程序安全有效地访问 Java 堆之外的外部内存。
Pattern Matching for instanceof
为 instanceof 操作符提供模式匹配。模式匹配使程序中的通用逻辑(即从对象中有条件地提取组件)得以更简洁、更安全地表达。
Records
Records 提供了一种紧凑的语法来声明类,以帮助开发者写出更简洁的代码,这些类是浅层不可变数据(shallowly immutable data)的透明拥有者。该特性主要用在特定领域的类,这些类主要用于保存数据,不提供领域行为。
Strongly Encapsulate JDK Internals by Default
除了sun.misc.Unsafe等关键的内部 API 外,默认对 JDK 内部进行强封装,用户也可以选择自 JDK 9 以来默认的宽松强封装。
Sealed Classes (Second Preview)
Sealed class & interface(密封类和接口)可以限制哪些类和接口可以继承或实现它们。
【更新内容】
语言增强功能首次在JDK 14中引入,在JDK 16中完成
JEP 394:instanceof的模式匹配–通过为instanceof运算符进行模式匹配来增强Java编程语言。
JEP 395:记录–通过记录增强Java编程语言,记录是充当不变数据透明载体的类。记录可以被视为名义元组。
提高开发人员生产力的新工具
JEP 392:打包工具–提供jpackage工具,用于打包自包含的Java应用程序。
改进的内存管理以提高性能
JEP 387:弹性元空间–更快地将未使用的HotSpot类元数据(即,元空间)内存返回给操作系统,减少元空间的占用空间,并简化元空间代码,以降低维护成本。
JEP 376:ZGC:并行线程堆栈处理–将ZGC线程堆栈处理从安全点移至并发阶段。这项工作消除了允许并发堆栈处理的最后一个显着瓶颈。
改进的网络以提高开发人员的生产力和灵活性
JEP 380:UNIX域套接字通道–将对主要UNIX平台和Windows通用的UNIX域套接字的所有功能的支持添加到java.nio.channels包中的套接字通道和服务器套接字通道API。UNIX域套接字用于同一主机上的进程间通信(IPC)。它们在大多数方面与TCP / IP套接字类似,不同之处在于它们是通过文件系统路径名而不是Internet协议(IP)地址和端口号来寻址的。
解决未来不兼容的代码
JEP 396:默认情况下强烈封装JDK内部–在JDK 9中,我们强烈封装了新的内部API元素,从而限制了对它们的访问。但是,作为迁移的辅助手段,JDK 9故意选择在运行时不强烈封装JDK 8中存在的软件包的内容。JDK16默认情况下封装了JDK的大多数内部元素(关键内部API除外),从而加强了此约束。例如sun.misc.Unsafe。最终用户仍然可以选择自JDK 9以来默认使用的宽松的强封装。这将鼓励开发人员从使用内部元素迁移到使用标准API,以便他们和他们的用户都可以毫不费力地升级到将来的Java版本。
JEP 390:基于值的类的警告–将原始包装器类指定为基于值的类,并弃用其构造函数以进行删除,从而提示新的弃用警告。提供有关在Java平台中不正确尝试在任何基于值的类的实例上进行同步的警告。
孵化和预览功能
JEP 338:矢量API(孵化器) –提供孵化器模块jdk.incubator.vector的初始迭代,以表达可在运行时可靠地编译为支持的CPU架构上的最佳矢量硬件指令的矢量计算。
JEP 389:外部链接程序API(孵化器) –引入了API,该API提供了对本地代码的静态类型的纯Java访问。
JEP 393:外部存储器访问API(第三孵化器) –引入了API,以允许Java程序安全有效地访问Java堆之外的外部存储器。
JEP 397:密封类(第二预览) –通过密封类和接口增强了Java编程语言。密封的类和接口限制可以扩展或实现它们的其他类或接口。
OpenJDK贡献者的改进
JEP 347:启用C ++ 14语言功能(在JDK源代码中) –允许在JDK C ++源代码中使用C ++ 14语言功能,并提供有关在HotSpot代码中可以使用哪些功能的特定指南。
JEP 357:从Mercurial迁移到Git –将OpenJDK社区的源代码存储库从Mercurial(hg)迁移到Git。
JEP 369:迁移到GitHub –在GitHub上托管OpenJDK社区的Git存储库。
新端口在更多平台上提供对Java的支持
JEP 386:Alpine Linux端口–在x64和AArch64体系结构上,将JDK移植到Alpine Linux以及使用musl作为其主要C库的其他Linux发行版。
JEP 388:Windows / Aarch64端口–将JDK移植到Windows / AArch64。
不断使Java变得更好
基于不断的创新,Java仍然是最成功的开发平台之一,可以满足现代应用程序开发人员不断发展的需求。为了使Oracle Java SE订阅对客户更具价值,Oracle添加了GraalVM Enterprise作为应享权利。GraalVM可以帮助提高应用程序的性能并减少资源消耗,尤其是在微服务和云原生架构中。通过利用Oracle Java SE订阅来管理Java资产的组织不仅受益于Oracle的最新增强功能和对Java专家的直接访问,而且与其他方法相比可节省大量成本。
“没有每隔三到四年就对Java的新事物产生兴趣,这种节奏使我成为充满激情的开发人员,老师和培训师,这很活跃,”巴黎索邦大学北部的JoséPaumard助理教授和巴黎Java用户联合组织者说。 Group。“我迫切希望使用Records来提高数据处理代码的性能和可读性,并且能够将其用作预览功能之后,现在可以在此最新版本中使用它。”
开发人员可以了解有关Java 16的更多信息,并在3月23日,25日和30日的Oracle Developer Live:Java创新上获得动手经验。
【JRE和JDK的区别】
如果在学习或从事Java开发、编译java程序,那么安装JDK
如果仅需运行java程序,只需要Java运行库,那么安装JRE
Java Development Kit(简称JDK)= Java开发套件,Java开发工具包,面向Java语言开发者。
Java Runtime Environment(简称JRE)= Java运行库,Java运行环境,面向Java程序用户们。
JDK:Java核心,含Java运行环境(JRE)、编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和Java工具类库(如tools.jar)源代码等java语言编译所需的工具包。
JRE:Java语言开发的程序运行所需要的运行环境,包括JVM标准实现(java.exe等)及 Java核心类库(rt.jar等),它不包含开发工具(编译器、调试器等)