详情介绍
Java 17 LTS 是 Java SE 平台的最新长期支持版本。 根据 Oracle 免费条款和条件许可,JDK 17 二进制文件可在生产中免费使用,并可免费重新分发。JDK 17 将根据这些条款接收更新,至少在 2024 年 9 月之前。Java 17 的下一个长期支持版本现已推出。Oracle 继续以六个月的定期节奏在 Java 平台上进行创新,使 Java 保持活力并与世界各地的企业和开发人员息息相关。
Java SE Development Kit(JDK) 17 for Windows :点击下载
Java 是世界上最多产的编程语言和开发平台。JDK 是使用 Java 编程语言构建应用程序和组件的开发环境。JDK 包括用于开发和测试用 Java 编程语言编写并在 Java 平台上运行的程序的工具。本次提供的是Java SE Development Kit(JDK) 17 for Linux官方版本下载,欢迎需要此款工具的朋友前来下载使用。
JDK17新特性详解
预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。
最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。
1、switch新增模式(预览版)
使用 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有特定的操作,以便可以简洁安全地表达复杂的面向数据的查询。基于JDK16 instanceof模式匹配(最终版)优化升级switch使用方法,先回忆下JDK16模式匹配(最终版)
if (obj instanceof String s) {
// 直接使用 s拼接字符串
s += "heihei";
} else if (obj instanceof Integer i){
// 直接使用i进行整型逻辑运算
i += 1;
}
switch可直接用instanceof模式匹配选择(需要提前考虑null判断)
Object o;
switch (o) {
case null -> System.out.println("首先判断对象是否为空,走空指针逻辑等后续逻辑");
case String s -> System.out.println("判断是否为字符串,s:" + s);
case record p -> System.out.println("判断是否为Record类型: " + p.toString());
case int[] arr -> System.out.println("判断是否为数组,展示int数组的长度" + ia.length);
case Integer i -> System.out.println("判断是否为Intger对象,i:" + i);
case Student s -> System.out.println("判断是否为具体学生对象,student:" + s.toString());
case UserCommonService -> System.out.println("判断是否为普通用户实现类,然后走普通用户逻辑");
case UserVipService -> System.out.println("判断是否为vip用户实现类,然后走vip用户逻辑");
default -> System.out.println("Something else");
}
2、Realed class密封类(最终版)
密封类和接口限制哪些其他类或接口可以扩展或实现它们。
public sealed interface Shape{
final class Planet implements Shape {}
final class Star implements Shape {}
final class Comet implements Shape {}
}
public abstract sealed class Test{
final class A extends Test {}
final class B extends Test {}
final class C extends Test {}
}
3、随机数增强
为伪随机数生成器 (PRNG) 提供新的接口类型和实现,包括可跳转的 PRNG 和额外的一类可拆分 PRNG 算法 (LXM)。
4、浮点运算更加严格
简化数字敏感库开发,包括java.lang.Math和java.lang.StrictMath(对开发无实际意义)
5、Parallel GC 默认启用
Parallel GC 默认启用自适应并行处理,并行GC确定java.lang.ref.Reference在垃圾收集期间用于处理实例的最佳线程数。
默认-XX:ParallelRedProcEnabled: true。在有多个线程可用于垃圾收集的机器上,明显改善了垃圾收集暂停的阶段,如果遇到垃圾收集暂停增加的情况,可以通过-XX:ParallelRedProcEnabled在命令行上指定到原始行为
6、增强TreeMap
增强JDK-8176894(TreeMap 没有对 putIfAbsent()、computeIfAbsent()、computeIfPresent()、compute() 方法的专门实现。默认实现经常导致两次树遍历,这会损害性能)
7、弃用Socket实现工厂机制
弃用并最终删除用于为java.net 包中的套接字类型静态配置系统范围工厂 的 API 点
具体如下:
* 方法:
static void ServerSocket.setSocketFactory (SocketImplFactory fac)
static void Socket.setSocketImplFactory (SocketImplFactory fac)
static void DatagramSocket.setDatagramSocketImplFactory (DatagramSocketImplFactory fac)
* Types
java. net SocketImplFactory
java.net DatagramSocketImplFactory
也可以弃用java.net SocketImplFactory 和 DatagramSocketImplFactory 类型 ,因为它们的唯一用途与上述工厂有关 设置方法。
8、统一日志支持异步日志刷新
为了避免在使用统一日志的线程中出现不希望的延迟,用户现在可以请求统一日志系统以异步模式运行。通过传递命令行选项来完成的-Xlog:async。在异步日志模式下,日志站点将所有日志消息排入缓冲区。独立线程负责将它们刷新到相应的输出。中间缓冲区是有界的。缓冲区耗尽时,将丢弃排队消息。可以使用命令行选项控制中间缓冲区的大小-XX:AsyncLogBufferSize=<bytes>。
9、新增 java.time.InstantSource
java.time.InstantSource引入了一个新界面。这个接口是一个抽象java.time.Clock,只关注当前时刻,不涉及时区。
10、javadoc工具
新的“新 API”页面和改进的“弃用”页面,JavaDoc 现在可以生成一个页面,总结最近 API 的变化。要包含的最新版本列表是使用--since命令行选项指定的。这些值用于查找@since要包含在新页面上的具有匹配标签的声明。该--since-label命令行选项提供了“新API”页面的标题文本使用。
在 Linux 平台上安装 JDK 的一般注意事项
根访问权限
本主题介绍有关在 Linux 平台上安装 JDK 17 的一般信息。
安装 JDK 会自动创建一个名为. jdk–17.interim.update.patch
笔记:如果您将 JDK 安装在特定位置,例如/usr/jdk,则您必须使用 root 凭据登录以获得必要的权限。如果您没有 root 访问权限,则在您的主目录或您具有写入权限的子目录中安装 JDK。
覆盖文件
如果将软件安装在包含名为 的子目录的目录中,则新软件会覆盖该目录中的同名文件。如果旧目录包含您要保留的文件,请确保重命名旧目录。 jdk–17.interim.update.patch
系统偏好设置
默认情况下,安装脚本会配置系统,以便在适用的情况下在 JDK 安装目录中创建系统首选项的后备存储。如果 JDK 安装在网络安装驱动器上,则可以导出系统首选项以与其他机器上的 Java 运行时环境共享。
Linux平台的JDK安装说明符号
JDK 安装说明包含代表功能、临时和更新版本信息的版本符号。
例如,如果您要安装 JDK 17 Interim 0、Update 0 和 Patch 0,则以下字符串表示捆绑包的名称:
Linux x64 系统: jdk-17.interim.update.patch_linux-x64_bin.tar.gz
该字符串变为:
jdk-17_linux-x64_bin.tar.gz
Linux aarch64(64位ARM)系统: jdk-17.interim.update.patch_linux-aarch64_bin.tar.gz
该字符串变为:
jdk-17_linux-aarch64_bin.tar.gz
笔记:如果一个组件的后缀是 0,它将被排除在外。
更多详细安装注意事项,请参考官方文档:https://docs.oracle.com/en/java/javase/17/install/installation-jdk-linux-platforms.html
JDK 17 发行说明
更多详情:https://www.oracle.com/java/technologies/javase/17-relnote-issues.html
新功能
本节介绍了 Java SE 17 和 JDK 17 中的一些增强功能。在某些情况下,这些描述提供了指向有关问题或更改的其他详细信息的链接。此处描述的 API 随 Oracle JDK 一起提供。它包括 Java SE 17 平台的完整实现和额外的 Java API,以支持开发、调试和监控 Java 应用程序。关于 Java SE 17 和 JDK 17 中重要增强和新特性的另一个信息来源是Java SE 17 (JSR 392)平台规范,其中记录了 Java SE 16 和 Java SE 17 之间对规范所做的更改。该文档包括对这些新特性和增强功能的描述,这些新特性和增强功能也是对规范的更改。这些描述还确定了您在迁移到 JDK 17 时可能遇到的潜在兼容性问题。
删除的功能和选项
本节介绍在 Java SE 17 和 JDK 17 中删除的 API、功能和选项。此处描述的 API 是随 Oracle JDK 提供的 API。它包括 Java SE 17 平台的完整实现和额外的 Java API,以支持开发、调试和监控 Java 应用程序。Java SE 17 和 JDK 17 中重要增强和新特性的另一个信息来源是 Java SE 17 (JSR 392)平台规范,它记录了 Java SE 16 和 Java SE 17 之间对规范所做的更改。该文档包括标识此处未描述的已删除 API 和功能。下面的描述可能还会指出您在迁移到 JDK 17 时可能遇到的潜在兼容性问题。
已弃用的功能和选项
有关 Java SE 17 和 JDK 17 中弃用的 API、特性和选项的其他信息来源包括:
将 已过时的API页面识别所有已弃用的API包括在Java SE 17弃用。
该爪哇SE 17(JSR 392)规范文档改变到Java SE 16和Java SE 17,其包括已弃用的API的识别和特征不再赘述之间所订的规格。
JEP 277:Enhanced Deprecation提供了弃用政策的详细说明。您应该了解本文档中描述的更新政策。
更新日志
Java SE 17.0.10 - 捆绑补丁版本 (BPR) - 错误修复和更新
以下各节总结了所有 Java SE 17.0.10 BPR 发行版中所做的更改。BPR 版本按日期顺序在下面列出,最新的 BPR 在前。请注意,以前的 BPR 中的错误修复也包含在当前的 BPR 中。
Java SE 17.0.10.0.1 中的更改
Bug 修复
1月 16, 2024
此版本中包含先前 BPR 的修复。
Java™ SE 开发工具包 17,更新 17.0.10 (JDK 17.0.10)
1月 16, 2024
此更新版本的完整版本字符串为 17.0.10+11(其中“+”表示“内部版本”)。版本号为 17.0.10。
IANA TZ 数据 2023c
有关更多信息,请参阅 JRE 软件中的时区数据版本。
安全基线
下表指定了发布 JDK 17.0.10 时 Java 运行时的安全基线:
Java 系列版本 安全基线(完整版字符串)
17 17.0.10+11
11 11.0.22+9
8 编号:8U401-B10
使 JDK 保持最新状态
Oracle 建议在每次关键补丁更新时更新 JDK。 为了确定某个版本是否为最新版本,“安全基线”页可以 用于确定每个发行系列的最新版本。
包含安全漏洞修复的关键补丁更新将提前一年公布 重要补丁更新、安全警报和公告。 建议不要在计划的下一个关键补丁更新之后使用此 JDK(版本 17.0.10) 2024年4月16日。
管理大量桌面的 JRE 更新/安装的客户应考虑的 Java SE 订阅产品 使用 Java 管理服务 (JMS)。
新功能security-libs/javax.xml.crypto
➜ 用于切换 XML 签名安全验证模式的新系统属性 (JDK-8301260)
添加了一个名为的新系统属性。它可用于启用或禁用 XML 签名安全验证模式。系统属性应设置为“true”以启用,或设置为“false”以禁用。系统属性的任何其他值都被视为“false”。如果设置了系统属性,它将取代属性值。org.jcp.xml.dsig.secureValidationXMLCryptoContext
默认情况下,安全验证模式处于启用状态。禁用安全验证模式的风险由您自行承担。
已知问题热点/编译器
➜ 由于消除有限范围检查而导致的潜在性能回归 (JDK-8314468 (not public))
当 C1 编译器是 VM 唯一可用的编译器时,它会应用循环预测来从循环体中删除数组访问范围检查。由于存在缺陷,此优化被禁用,可能导致性能下降。
这仅影响客户端 VM 或使用非默认命令行标志或 .-XX:+NeverActAsServerClassMachine-XX:TieredStopAtLevel=[1,2,3]
其他说明安全库/java.security
➜ 增加系统属性的默认值 jdk.jar.maxSignatureFileSize (JDK-8312489)
system 属性 允许应用程序控制签名 JAR 中签名文件的最大大小。其默认值已从 8000000 字节 (8 MB) 增加到 16000000 字节 (16 MB)。jdk.jar.maxSignatureFileSize
安全库/java.security
➜ 添加了 DigiCert, Inc. 的 4 个根证书。 (JDK-8318759)
以下根证书已添加到 cacerts 信任库中:
+ DigiCert, Inc.
+ digicertcseccrootg5
DN: CN=CN=DigiCert CS ECC P384 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicertcsrsarootg5
DN: CN=DigiCert CS RSA4096 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicerttlseccrootg5
DN: DigiCert TLS ECC P384 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicerttlsrsarootg5
DN: DigiCert TLS RSA4096 Root G5, O="DigiCert, Inc.", C=US
安全库/java.security
➜ 添加了 eMudhra Technologies Limited (JDK-8319187) 的三个根证书)
以下根证书已添加到 cacerts 信任库中:
+ eMudhra Technologies Limited
+ emsignrootcag1
DN: CN=emSign Root CA - G1, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
+ eMudhra Technologies Limited
+ emsigneccrootcag3
DN: CN=emSign ECC Root CA - G3, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
+ eMudhra Technologies Limited
+ emsignrootcag2
DN: CN=emSign Root CA - G2, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
安全库/java.security
➜ 添加了 Telia 根 CA v2 证书 (JDK-8317373)
以下根证书已添加到 cacerts 信任库中:
+ Telia Root CA v2
+ teliarootcav2
DN: CN=Telia Root CA v2, O=Telia Finland Oyj, C=FI
安全库/java.security
➜ 添加了来自 Let's Encrypt 的 ISRG 根 X2 CA 证书 (JDK-8317374)
以下根证书已添加到 cacerts 信任库中:
+ Let's Encrypt
+ letsencryptisrgx2
DN: CN=ISRG Root X2, O=Internet Security Research Group, C=US
安全库/javax.net.ssl
➜ 为所有密钥类型调用 X509KeyManager.chooseClientAlias 一次 (JDK-8262186)
JDK中的(D)TLS实现现在在握手期间仅调用一次以进行客户端身份验证,即使请求了多种算法也是如此。X509KeyManager.chooseClientAlias()
Bug 修复此版本还包含针对 Oracle 关键补丁更新中描述的安全漏洞的修复。
➜ 17.0.10 中修复的问题:
# 工 务 局。 元件 总结
1 JDK-8238436 客户端库/java.awt java/awt/Frame/FrameLocationTest/FrameLocationTest.java 失败
2 JDK-8294427 客户端库/javax.swing 复选框和单选按钮在高 DPI 环境中的 Windows 上存在呈现问题
3 JDK-8282444 核心库/java.lang.module 模块查找器错误地采用默认文件系统路径分隔符
4 JDK-8293659 核心库/java.lang:class_loading 改进了 UnsatisfiedLinkError 错误消息以包含 dlopen 错误详细信息
5 JDK-8299015 核心库/java.net 确保 HttpResponse.BodySubscribers.ofFile 写入所有字节
6 JDK-8274562 核心库/java.nio (FS)使用 OverlayFS 时,UserDefinedFileAttributeView 无法正确确定是否受支持
7 JDK-8273162 核心库/java.util AbstractSplittableWithBrineGenerator 不会创建随机盐
8 JDK-8301637 核心库/java.util.concurrent ThreadLocalRandom.current().doubles().parallel() 争用
9 JDK-8314263 核心库/java.util.logging 触发 Logger finder 递归和 StackOverflowError 的签名 jar
10 JDK-8303440 核心库/java.util:i18n “ZonedDateTime.parse”可能不接受“UTC+XX”区域 ID
11 JDK-8313657 核心库/javax.naming com.sun.jndi.ldap.Connection.cleanup 不会关闭 SocketTimeoutErrors 上的连接
12 JDK-8314063 核心库/javax.naming 当 LDAP 连接的握手失败时,Connection::createSocket 中的套接字未关闭
13 JDK-8299658 热点/编译器 C1 编译在 LinearScan::resolve_exception_edge 中崩溃
14 JDK-8301489 热点/编译器 C1:ShortLoopOptimizer 可能会在指令输入之前解除指令
15 JDK-8313626 热点/编译器 C2 崩溃导致意外异常控制流
16 JDK-8313402 热点/编译器 C1:不正确的 LoadIndexed 值编号
17 JDK-8312909 热点/编译器 C1 不应通过接口调用与非子类型接收器进行内联
18 JDK-8303279 热点/编译器 C2:如果 IGVN 拆分时 SubTypeCheckNode::sub() 崩溃
19 JDK-8304954 热点/编译器 使用大页面时,SegmentedCodeCache 失败
20 JDK-8316178 热点/编译器 改进 CodeBlob 的诊断标头
21 JDK-8315377 热点/编译器 C2:assert(u->find_out_with(Op_AddP) == nullptr) 失败:超过 2 个链接的 AddP 节点?
22 JDK-8316514 热点/编译器 更好的 VtableStub 诊断标头
23 JDK-8314024 热点/编译器 PhaseIdealLoop::build_loop_late_post_work 中的 SIGSEGV,由于直接支配器信息错误
24 JDK-8313262 热点/编译器 C2:下沉节点可能会导致所需的铸造被丢弃
25 JDK-8312440 热点/编译器 assert(cast != nullptr) failed:必须已添加强制转换以固定节点
26 JDK-8313756 热点/编译器 [BACKOUT] 8308682:增强 AES 性能
27 JDK-8313760 热点/编译器 [重做]增强 AES 性能
28 JDK-8308103 热点/编译器 自 JDK 17 以来,C2 编译时间大幅增加(高达 ~30 倍)
29 JDK-8309119 热点/编译器 [17U/11U]重做 JDK-8297951:C2:为循环谓词中的所有 If 节点创建框架谓词
30 JDK-8307683 热点/编译器 循环预测不应通过否定其条件来提升带有陷阱的 Trap 范围检查
31 JDK-8275333 热点/GC “Too many recored phases?”中的打印计数断言
32 JDK-8316906 热点/GC 阐明 TLABWasteTargetPercent 标志
33 JDK-8270894 热点/运行时 在 ObjectSynchronizer::read_stable_mark() 中使用获取语义
34 JDK-8305994 热点/运行时 保证最终异步监视器通货紧缩
35 JDK-8309228 hotspot/runtime Clarify EXPERIMENTAL flags comment in hotspot/share/runtime/globals.hpp
36 JDK-8306825 hotspot/runtime Monitor deflation might be accidentally disabled by zero intervals
37 JDK-8279545 hotspot/runtime Buffer overrun in reverse_words of sharedRuntime_x86_64.cpp:3517
38 JDK-8283326 hotspot/runtime Implement SafeFetch statically
39 JDK-8314679 热点/SVC代理 SA 在刚刚从其他 JVM 分离后无法正确连接到 JVM
40 JDK-8320597 安全库/java.security RSA 签名验证在未正确编码参数的签名数据上失败
41 JDK-8302017 安全库/java.security 仅当 BadPaddingException 将被抛出时才分配它
42 JDK-8311592 安全库/javax.crypto ECKeySizeParameterSpec 导致第三方提供程序出现过多异常
43 JDK-8313742 安全库/javax.crypto ZipFile.getManifestName 在 Spring Boot 的 jar 验证期间失败
44 JDK-8291154 工具/javac 创建一个非静态嵌套类,而不封闭类抛出 VerifyError
45 JDK-8301247 工具/jpackage JPackage app-image exe 在 JDK 17+ 中启动多个 exe
46 JDK-8313792 工具/JShell 在 src/jdk.internal.le/share/legal/jline.md 中验证第 4 方信息
下载地址
人气软件
EXT界面图形工具Ext Designer 特别版
myeclipse2016破解工具 v1.0 破解补丁(附安装教程)
Zend Studio 10.1.0与10.0.1 破解文件与注册码打包
Python Tutor(代码可视化软件) v1.3.5.16 免费版
php编写工具 PHP Expert Editor v4.2 中文特别版
jetbrains pycharm professional(python开发工具) v4.0.5 特别版
Eclipse Neon v4.6.0 64位 官方安装免费版(附汉化包)
WebStorm 2017.3.3 正式版 官方安装版(附汉化包) JavaScript开发
myeclipse 2017 ci 3 破解工具 破解补丁CI激活码 免费版
TopStyle v4.0.0.68 英文绿色特别版 CSS编写工具带预览功能
相关文章
- Java配置 JDK开发环境搭建及环境变量配置详细图文教程
这篇文章主要介绍了Java配置 JDK开发环境搭建及环境变量配置详细图文教程,需要的朋友可以参考下...
- windows下jdk安装图解(覆盖安装报错)
这篇文章主要介绍了windows下jdk安装图解,覆盖安装报错,第一次安装和第二次安装区别,需要的朋友可以参考下...
- 把MyEclipse的默认jdk版本修改为本地JDK的方法介绍
最近,有不少网友问小编如何更改MyEclipse默认的JDK版本为自己安装的JDK?今天小编就给大家详细介绍一下把MyEclipse的默认jdk版本修改为本地JDK的方法,希望对大家有所帮助...
- JDK1.9怎么安装配置?Java SE 9(JDK9)详细安装教程+环境变量配置方法
JDK1.9是JDK是整个Java的核心,包括了Java运行环境,一堆Java工具和Java基础的类库。新版本增添了特性和性能提升,下面小编就整理了Java SE Development Kit 9.0安装详细步...
- mac安装jdk及环境变量配置文件
这篇文章主要介绍了mac安装jdk及环境变量配置文件的详细操作过程,喜欢的收藏一下吧。...
- Java jdk环境变量配置方法
这篇文章主要介绍了Java jdk环境变量配置方法的相关资料,需要的朋友可以参考下...
下载声明
☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的Java SE Development Kit(JDK) 17.0.11 官方正式版 Linux64资源来源互联网,版权归该下载资源的合法拥有者所有。