Java SE Development Kit JDK17中文版是甲骨文Oracle公司推出的Java开发工具包,包含Java运行环境、Java开发工具和Java基础类库源代码,JAVA JDK以其简单的操作,实用、稳定、安全、高效的特点赢得了颇高的人气。有需要的小伙伴快来下载吧。
Java SE Development Kit 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=
9、新增 java.time.InstantSource
java.time.InstantSource引入了一个新界面。这个接口是一个抽象java.time.Clock,只关注当前时刻,不涉及时区。
10、javadoc工具
新的“新 API”页面和改进的“弃用”页面,JavaDoc 现在可以生成一个页面,总结最近 API 的变化。要包含的最新版本列表是使用--since命令行选项指定的。这些值用于查找@since要包含在新页面上的具有匹配标签的声明。该--since-label命令行选项分享了“新API”页面的标题文本使用。
Java SE Development Kit JDK17中文版使用说明
1、版本字符串格式
Java SE平台采用基于时间的发布模型,JDK每六个月发布一次。
从JDK 10及更高版本开始,版本字符串的格式反映了Java SE平台的基于时间的发布模型$FEATURE.$INTERIM.$UPDATE.$PATCH。
$FEATURE是每个功能版本增加的版本号。功能版本包含新功能以及Java SE平台规范指定的现有功能的更改。版本号每六个月递增一次。例如,2018年3月发行版的版本号为10,2018年9月发行版的版本号为11,依此类推。
$INTERIM是每个临时版本增加的版本号,其中包含错误修复和增强功能。临时版本不包含不兼容的更改,功能删除,也不包含对标准API的任何更改。由于六个月的发布模型不包含临时版本,因此临时版本的版本号始终为零(0)。但是,此版本号保留用于将来的临时版本(如果有)。
$UPDATE是更新版本增加的版本号,其中包括针对安全问题,回归和新功能中的错误的修复程序。版本号在$FEATURE发布后一个月递增,之后每三个月递增一次。例如,完整的版本号为10月更新版本是13 .0.1,完整的版本号为1月更新版本是13 .0.2,等等。
$PATCH 是紧急修补程序版本增加的版本号,用于修复关键问题。
版本字符串没有尾随零元素。例如,如果值$FEATURE是13,的值$INTERIM是0,的值$UPDATE是1,和的值$PATCH是0,则完整的版本号是13 .0.1。
2、开始使用JDK
使用Windows“ 开始”菜单中的Java Development Kit访问与参考文档相关的信息。
在JDK安装期间,Java菜单项将添加到Windows“ 开始”菜单中,以便于访问“参考文档”,这是在线文档网页。
在JDK安装和卸载过程中,会更新相应的开始菜单项,以便它们与系统上的最新JDK版本相关联。
注意:Windows 7和Windows 10有一个开始菜单; 但是,该菜单在Windows 8和Windows 8.1中不可用。Windows 8和Windows 8.1中的JDK和Java信息可在以下Start目录中找到:%ALLUSERSPROFILE%MicrosoftWindowsStart MenuPrograms。
3、在Windows上卸载JDK
要卸载JDK 13,请使用Microsoft Windows 控制面板中的“ 添加/删除程序”实用程序。
4、JDK安装故障排除
以下部分分享了在安装JDK时解决问题的提示(如果有)。
解压缩期间的系统错误:
如果看到错误消息:system error during decompression,则磁盘上可能没有足够的空间包含该TEMP目录。
程序无法在DOS模式下运行:
如果看到错误消息: This program cannot be run in DOS mode,则执行以下操作:
打开MS-DOS shell或命令提示符窗口。
右键单击标题栏。
选择属性。
选择“ 程序”选项卡。
单击高级。
确保未选中“ 防止基于MS-DOS的程序检测Windows”项。
选择确定。
再次选择确定。
退出MS-DOS shell。
重启你的电脑。
不属于系统代码页的字符:
如果安装目录不是系统区域设置的代码页的一部分,则可能会发生1722错误。要防止这种情况发生,请确保用户和系统区域设置完全相同,并且安装路径仅包含属于系统区域设置代码页的字符。可以在“ 区域选项”或“ 区域设置”控制面板中设置用户和系统 区域设置。
相关的错误号是4895647。
5、JDK 13发布的重大变化
以下是Java SE 13和JDK 13中的一些重要增强功能:
动态CDS归档扩展了应用程序类 - 数据共享(ApsCDS),允许在Java应用程序退出时动态归档类。请参阅JEP 350:动态CDS存档。
Java语言中添加了文本块,可以在需要时为开发人员分享对格式的控制。这是一种预览语言功能。请参阅JEP 355文本块(预览)和JEP 12:预览语言和VM功能。
的switch表达,预览的语言特性,一直延续到被用作任何声明或表达式,从而使这两种形式可以使用传统的标签(与告吹)或新标签(没有落空)。它与另一个新语句一起使用,用于从switch表达式中生成值。请参阅JEP 354:切换表达式(预览)和JEP 12:预览语言和VM功能。
java.net.Socket和 java.net.ServerSocketAPI 使用的实现被 更简单,更现代的实现取代,易于维护和调试。请参阅JEP 353:重新实现旧版套接字API。
支持Unicode 12.1。请参阅Unicode 12.1。
ZGC已得到增强,可将未使用的堆内存返回给操作系统,从而增强了应用程序的内存占用。请参阅JEP 351 ZGC Uncommit Unused Memory。
此外,还需要了解与安全相关的更新以及一些已删除的工具和组件。看到:
安全更新
删除了API,工具和组件
6、JDK
Java Development Kit(JDK)API特定于JDK,并不一定适用于Java SE Platform的所有实现。这些API位于名称以其开头的模块中jdk。
jdk.accessibility
定义Assistive Technologies实现者使用的JDK实用程序类。
jdk.attach
定义附加API。
jdk.charsets
分享charsets不在java.base(大多数是双字节和IBM字符集)。
jdk.compiler
定义 系统Java编译器 及其命令行等效项javac的实现。
jdk.crypto.cryptoki
分享SunPKCS11安全分享程序的实现。
jdk.crypto.ec
分享SunEC安全分享程序的实现。
jdk.dynalink
定义用于动态链接对象上的高级操作的API。
jdk.editpad
分享使用的编辑板服务的实现jdk.jshell。
jdk.hotspot.agent
定义HotSpot可维护性代理的实现。
jdk.httpserver
定义特定于JDK的HTTP服务器API。
jdk.jartool
定义用于操作Java Archive(JAR)文件的工具,包括jar和 jarsigner工具。
jdk.javadoc
定义 系统文档工具 及其命令行等效项javadoc的实现。
jdk.jcmd
定义用于诊断和排除JVM故障的工具,例如jcmd,jps, jstat工具。
jdk.jconsole
定义JMX图形工具jconsole,用于监视和管理正在运行的应用程序。
jdk.jdeps
定义用于分析Java库和程序中的依赖项的工具,包括jdeps, javap和 jdeprscan工具。
jdk.jdi
定义Java调试接口。
jdk.jdwp.agent
分享Java调试线协议(JDWP)代理的实现。
jdk.jfr
定义JDK Flight Recorder的API。
jdk.jlink
定义JLINK创建运行时图像,工具JMOD用于创建和操作JMOD文件的工具,以及jimage用于检查类和资源的JDK实现特定的容器文件的工具。
jdk.jshell
分享用于评估Java代码片段的jshell工具,并定义用于建模和执行片段的JDK特定API。
jdk.jsobject
定义JavaScript对象的API。
jdk.jstatd
定义用于启动jstat工具的守护程序的jstatd工具,以远程监视JVM统计信息。
jdk.localedata
分享美国区域设置以外的区域设置的区域设置数据。
jdk.management
为JVM定义特定于JDK的管理接口。
jdk.management.agent
定义JMX管理代理。
jdk.management.jfr
定义JDK Flight Recorder的管理界面。
jdk.naming.dns
分享DNS Java命名分享程序的实现。
jdk.naming.rmi
分享RMI Java命名分享程序的实现。
jdk.net
定义JDK特定的Networking API。
jdk.pack
定义用于将JAR文件转换为压缩pack200文件并将打包文件转换为JAR文件的工具,包括 pack200和 unpack200工具。
jdk.rmic
定义用于使用远程对象的Java远程方法协议(JRMP)生成存根和骨架的rmic编译器。
jdk.scripting.nashorn
为ECMAScript 5.1编写的程序分享Nashorn脚本引擎和运行时环境的实现。
jdk.sctp
为SCTP定义特定于JDK的API。
jdk.security.auth
分享javax.security.auth.* 接口和各种身份验证模块的实现。
jdk.security.jgss
定义GSS-API的JDK扩展和SASL GSSAPI机制的实现。
jdk.xml.dom
定义不属于Java SE API的W3C文档对象模型(DOM)API的子集。
jdk.zipfs
分享Zip文件系统分享程序的实现。
Java SE Development Kit JDK17中文版常见问题
如何卸载JAVA JDK
很多朋友可能有卸载JAVA JDK软件的需求,但是又怕卸载后下次安装不上。如何高效卸载JAVA JDK软件?知识兔小编会为大家带来详细的卸载方法。卸载后,如果还想安装,安装可以顺利进行!
知识兔需要打开电脑的控制面板,打开方法可以使用快捷键,先按下Win键+R键,然后在弹出的界面中输入control+enter,就可以打开控制面板,然后知识兔点击控制面板界面的程序和功能,就可以在程序中找到所有java选项,知识兔右键点击要卸载的选项,然后选择卸载即可。
如何测试本机中的JDK是否可以正常运行?
1、打开Windows的运行对话框(快捷键:Alt键左边的Win键+R键),输入cmd后回车。如下图所示。
2、在打开的命令窗口中输入 java -version,如果出现如下图所示的Java版本号等信息,则Java SE JDK安装成功。
红色箭头所指即表示当前安装的JDK版本为1.8,官方名称为Java SE JDK 8。
下载仅供下载体验和测试学习,不得商用和正当使用。
下载体验