依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 9|回复: 0

[工具] Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64 JDK17下载

[复制链接] 主动推送

2万

主题

2万

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
23536
发表于 3 小时前 | 显示全部楼层 |阅读模式
Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64  JDK17下载

Java 17 LTS 是 Java SE 平台的最新长期支持版本。 根据 Oracle 免费条款和条件许可,JDK 17 二进制文件可在生产中免费使用,并可免费重新分发。JDK 17 将根据这些条款接收更新,至少在 2024 年 9 月之前。JDK 是使用 Java 编程语言构建应用程序和组件的开发环境。JDK 包括用于开发和测试用 Java 编程语言编写并在 Java 平台上运行的程序的工具。本次提供的是Java SE Development Kit(JDK) 17 for Windows官方版本下载,欢迎需要此款工具的朋友前来下载使用。

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在垃圾收集期间用于处理实例的最佳线程数。

默认-XXarallelRedProcEnabled: true。在有多个线程可用于垃圾收集的机器上,明显改善了垃圾收集暂停的阶段,如果遇到垃圾收集暂停增加的情况,可以通过-XXarallelRedProcEnabled在命令行上指定到原始行为

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”页面的标题文本使用。

Java SE Development Kit 17安装教程

1、在本站下载并解压缩后,双击“jdk-17_windows-x64_bin.exe”,根据安装向导提示,选择“下一步”

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64 JDK17下载

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64  JDK17下载

2、默认安装在C盘,继续“下一步”

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64 JDK17下载

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64  JDK17下载

3、正在安装,稍等片刻即可,中途不要关闭电脑

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64 JDK17下载

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64  JDK17下载

4、好了,到这里Java SE Development Kit 17就安装完成啦

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64 JDK17下载

Java SE Development Kit(JDK) 17.0.17 官方正式版 Win64  JDK17下载

安装 JDK 17 和 JRE 8 时修复 Shim 情况

当您安装 JDK 17,然后安装 JRE 8,然后运行该 java -version命令时,1.8.0输出中显示的是17。这是因为 javapath位于用户环境路径中 JDK 17 位置之前。

这是 JRE 8 安装程序的一个错误。要解决此填充程序的情况,请卸载并重新安装 JDK 17。

JDK安装疑难解答

解压期间系统错误

如果您看到错误消息:system error during decompression,则包含该TEMP目录的磁盘上可能没有足够的空间。

程序无法在 DOS 模式下运行

如果您看到错误消息:This program cannot be run in DOS mode,请执行以下操作:

打开 MS-DOS 外壳程序或命令提示符窗口。

右键单击标题栏。

选择属性。

选择程序选项卡。

单击高级。

确保未选中防止基于 MS-DOS 的程序检测 Windows 项。

选择确定。

再次选择确定。

退出 MS-DOS 外壳。

重启你的电脑。

不属于系统代码页的字符

如果安装目录不是系统区域设置代码页的一部分,则可能会出现 1722 错误。为防止出现这种情况,请确保用户和系统区域设置相同,并且安装路径仅包含作为系统区域设置代码页一部分的字符。可以在区域选项或区域设置控制面板中设置用户和系统区域设置。

相关的错误编号是 4895647。

在 JDK 卸载失败后清理注册表

有时,尝试通过 Windows添加/删除程序卸载 JDK 会 在注册表中留下一些未完全删除的 Java 条目。这些遗留的注册表项可能会导致安装新版本 Java 时出现问题。以下是清理注册表项的方法:

程序安装和卸载疑难解答(推荐方法)

手动注册表编辑

程序安装和卸载疑难解答(推荐方法)

运行程序安装和卸载疑难解答来修复损坏的注册表项,这些注册表项会阻止程序完全卸载或阻止新的安装和更新。

手动编辑注册表(仅当 Fix It 实用程序不起作用时才使用此功能)

错误地编辑您的注册表可能会严重损坏您的系统。在更改注册表之前,您应该从您的计算机备份任何有价值的数据。

使用File->Export注册表编辑器的功能在删除之前保存注册表项。如果您删除了错误的注册表项,您可以使用该File->Import功能从保存的备份文件中恢复注册表。

要删除注册表项:

确定正确的注册表项。请参阅查找 JDK 注册表项和 UninstallString 值。

突出显示该键,右键单击并选择 Delete。

出现提示时单击是。

JDK 被卸载。

在 Windows 上卸载 JDK

要卸载 JDK 17,请使用Microsoft Windows控制面板中的添加/删除程序实用程序。

在静默模式下卸载 JDK

您可以使用命令行卸载 JDK。

使用以下命令以静默模式卸载JDK:

MsiExec.exe/X{<UninstallString>}

例如,要卸载 JDK 15,请运行以下命令:

MsiExec.exe /X{E04E5624-3CF1-5E84-A439-4D8FAAA05C79}

更新日志

Java™ SE 开发工具包 17,更新 17.0.16 (JDK 17.0.16)
7月 15, 2025

此更新版本的完整版本字符串是 17.0.16+12(其中“+”表示“生成”)。 版本号为 17.0.16。此 JDK 符合 Java SE 规范 17.1 版 (JSR 392 MR 1 2024-07-02)。

IANA TZ 数据 2025b
JDK 17.0.16 包含 IANA 时区数据 2025b,其中包含以下更改:

智利艾森地区的新区域,从 -04/-03 移至 -03。
有关详细信息,请参阅 JRE 软件中的时区数据版本。

安全基线

下表指定了 JDK 17.0.16 发布时 Java 运行时的安全基线:

Java 系列版本    安全基线(完整版本字符串)
17    17.0.16+12
11    11.0.28+12
8    1.8.0_461-b11

使 JDK 保持最新状态

Oracle 建议在每次关键补丁更新时更新 JDK。 为了确定某个版本是否是最新版本,“安全基线”页面可以 用于确定每个版本系列的最新版本。

包含安全漏洞修复的关键补丁更新会提前一年公布 关键补丁更新、安全警报和公告。 不建议在计划的下一个关键补丁更新之后使用此 JDK(版本 17.0.16) 2025 年 10 月 21 日。

Java 管理服务可供所有用户使用,可以帮助您在系统中查找易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订阅者和客户可以使用 Java 管理服务来更新 Java 运行时并执行进一步的安全审查,例如识别 Java 程序使用的潜在易受攻击的第三方库。现有 Java 管理服务用户单击此处登录您的仪表板。Java Management Service 文档提供了对所有人可用的功能列表,以及仅对客户可用的功能。了解有关使用 Java Management Service 监视和保护 Java 安装的更多信息。

删除的功能和选项

security-libs/java.security
➜ 在到期日期后删除了 Baltimore CyberTrust 根证书 (JDK-8303770)

以下过期的根证书已从密钥库中删除:cacerts

+ alias name "baltimorecybertrustca [jdk]"

  Distinguished Name: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE

security-libs/java.security
➜ 删除了两个 Camerfirma 根证书 (JDK-8350498)

以下已终止且不再使用的根证书已从密钥库中删除:cacerts

+ alias name "camerfirmachamberscommerceca [jdk]"

  Distinguished Name: CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU

+ alias name "camerfirmachambersignca [jdk]"
  Distinguished Name: CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU

其他说明

security-libs/java.security
➜ 添加了 4 个来自 Sectigo Limited 的新根证书 (JDK-8359170)

以下根证书已添加到 cacerts 信任库中:

+ Sectigo Limited

  + sectigocodesignroote46
    DN: CN=Sectigo Public Code Signing Root E46, O=Sectigo Limited, C=GB

+ Sectigo Limited
  + sectigocodesignrootr46
    DN: CN=Sectigo Public Code Signing Root R46, O=Sectigo Limited, C=GB

+ Sectigo Limited
  + sectigotlsroote46
    DN: CN=Sectigo Public Server Authentication Root E46, O=Sectigo Limited, C=GB

+ Sectigo Limited
  + sectigotlsrootr46
    DN: CN=Sectigo Public Server Authentication Root R46, O=Sectigo Limited, C=GB

安装/安装

➜ 使用 OL9 签名密钥对 oracle.com JDK RPM 包进行签名 (JDK-8351906(非公开))
oracle.com 个旨在直接下载到目标系统的 JDK RPM 包现在使用 OL9 签名密钥而不是 OL8 签名密钥进行签名。托管在 YUM 存储库上的 RPM 包仍使用目标存储库的相应密钥进行签名。

core-libs/javax.naming
➜ 更新 com.sun.jndi.ldap.object.trustSerialData 系统属性的默认值 (JDK-8290367)

在此版本中,默认情况下,LDAP 提供程序的 JDK 实现不再支持 Java 对象的反序列化:

系统属性的默认值已更新为 。com.sun.jndi.ldap.object.trustSerialDatafalse
从 LDAP 上下文对 Java 对象进行透明反序列化现在需要显式选择加入。依赖于 LDAP 属性重建 Java 对象或 RMI 存根的应用程序需要将系统属性设置为 。com.sun.jndi.ldap.object.trustSerialDatatrue

security-libs/jdk.security
➜ 如果删除了条目,Jarsigner 应打印警告 (JDK-8309841)

如果从已签名的 JAR 文件中删除了某个条目,则没有机制可以检测该条目是否已使用 API 被删除,因为该方法返回的就好像该条目从未存在过一样。通过此更改,该命令会分析签名文件,如果某些部分没有匹配的文件条目,它会打印出以下警告:“此 JAR 包含不存在的文件的签名条目”。用户可以通过向命令添加选项来进一步查找这些条目的名称。JarFilegetJarEntrynulljarsigner -verify-verbose

错误修复

此版本还包含针对 Oracle 关键补丁更新中描述的安全漏洞的修复。

➜ 17.0.16 中修复的问题:

#    JBS公司    元件    总结
1    JDK-8348597    客户端库/2d    将 HarfBuzz 更新到 10.4.0
2    JDK-8348596    客户端库/2d    将 FreeType 更新到 2.13.3
3    JDK-8348600    客户端库/java.awt    将 PipeWire 更新到 1.3.81
4    JDK-8348598    客户端库/java.awt    将 Libpng 更新至 1.6.47
5    JDK-8280468    客户端库/java.awt    Linux 上的 getConfigColormap、getConfigVisualId、XVisualIDFromVisual 崩溃
6    JDK-8286447    客户端库/java.awt    [Linux]如果未安装 headful AWT 库,则 AWT 应以无头模式启动
7    JDK-8280991    客户端库/java.awt    [XWayland]setDisplayMode 调用后没有 displayChanged 事件
8    JDK-8286204    客户端库/javax.accessibility    [辅助功能,macOS,旁白]当用户在 macOS 上首次迭代到 10 时,VoiceOver 会将微调器值 10 读取为 1
9    JDK-8345728    客户端库/javax.accessibility    [辅助功能,macOS,屏幕放大镜]:JCheckbox 未选中状态不放大,但适用于选中状态
10    JDK-8348936    客户端库/javax.accessibility    [辅助功能,macOS,旁白]VoiceOver 不会宣布在 macOS 上使用“空格”键切换复选框时取消选中
11    JDK-8266435    客户端库/javax.imageio    WBMPImageReader.read() 不应截断输入流
12    JDK-6928542    客户端库/javax.swing    RTF 中的汉字不被解码
13    JDK-8224267    客户端库/javax.swing    带有 5000+ 换行符的 JOptionPane 消息字符串产生 StackOverflowError
14    JDK-8318915    核心库/java.math    增强 BigDecimal.toPlainString() 中的检查
15    JDK-8344589    核心库/java.util:i18n    将 IANA 语言子标记注册表更新至版本 2024-11-19
16    JDK-8356096    核心库/java.util:i18n    ISO 4217 修正案 179 更新
17    JDK-8299858    core-svc/java.lang.management    [指标]交换内存限制过大时报告错误
18    JDK-8297173    core-svc/java.lang.management    usageTicks 和 totalTicks 应该是易失性的,以确保不同的线程获得最新的 tick
19    JDK-8345296    热点/编译器    AArch64:不允许 prctl 时,虚拟机与 SIGILL 崩溃
20    JDK-8357105    热点/编译器    C2:编译失败,并显示“assert(false) failed: opty program during loop optimization detected empty program”
21    JDK-8339148    热点/运行时    将 os::Linux::active_processor_count() 公开
22    JDK-8300645    热点/运行时    处理GET_CONTAINER_INFO宏日志记录中的 julong 值
23    JDK-8300658    热点/运行时    memory_and_swap_limit() 在 swapAccount=0 的系统上报告错误的值
24    JDK-8311546    security-libs/java.security    证书名称约束未正确验证前导句点



链接: https://pan.baidu.com/s/1uPQ_iEkunHpGoZ7kUY4lPw
提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:16 Bytes  售价:1金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员6折;永久VIP4折】
安全检测,请放心下载





相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-12-21 03:57

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表