Java平台,标准版 Oracle JDK 9中的新功能(下)
mhr18 2024-09-17 23:15 17 浏览 0 评论
JDK 9 中核心库的新功能
JEP 102:进程API更新
改进用于控制和管理操作系统进程的API。
所述ProcessHandle类提供的过程的本机过程ID,自变量,命令,开始时间,累积CPU时间,用户,父进程,和后代。该类还可以监视进程的活动并销毁进程。使用ProcessHandle.onExit方法,CompletableFuture类的异步机制可以在进程退出时执行一个操作。
请参阅的Java平台,标准版Java的核心库开发指南中进程API,java.lang.Process和java.lang.ProcessHandle。
JEP 193:变量操作
定义一个标准的方法来调用对象字段和数组元素上的java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物。
定义一组标准的外围操作,由VarHandle静态方法组成,可以对内存排序进行细粒度的控制。这是sun.misc.Unsafe的替代方法,它提供了一组非标准的外围操作。
定义标准可达性外围操作,以确保引用的对象保持强力的可访问性。
JEP 254:紧凑型字符串
对字符串采用更节省空间的内部表示。以前,String类在char数组中存储字符,每个字符使用两个字节(16位)。String类的新内部表示是一个字节数组加上一个编码标志字段。
这完全是一种实现变更,而不改变现有的公共接口。
请参阅Java Platform,Standard Edition Tools ReferenceCompactStrings中的java命令选项。
JEP 264:平台日志API和服务
定义平台类可用于记录消息的最小记录API,以及消息者的服务接口。库或应用程序可以提供此服务的实现,将平台日志消息路由到其选择的日志记录框架。如果没有提供实现,则使用基于java.util.logging API 的默认实现。
JEP 266:更多并发更新
添加在JDK 8中引入的未来并发更新到JEP 155:并发更新,包括可互操作的发布 - 订阅框架和对CompletableFuture API的增强。
JEP 268:XML目录
添加标准XML目录API,该API支持结构化信息标准(OASIS)XML目录1.1版标准的组织。API定义了目录和目录解析器抽象,可以用作内部或外部解析器,JAXP处理器可以接受解析器。
使用内部目录API的现有库或应用程序将需要迁移到新的API以利用新功能。
见XML目录API的Java平台,标准版Java的核心库开发人员指南。
JEP 269:集合的便利工厂方法
使用少量元素创建集合和映射的实例更容易。对于List,Set和Map接口,新的静态工厂方法使得创建这些集合的不可变实例变得更为简单。
例如:
Set<String> alphabet = Set.of(“a”,“b”,“c”);
请参阅在Java平台“标准版Java核心库开发人员指南”中创建不可变的列表,集合和映射。有关API文档,请参阅不可变静态工厂方法,不可变Map静态工厂方法和不可变列表静态工厂方法。
JEP 274:增强方法句柄
增强java.lang.invoke包的MethodHandle,MethodHandles和MethodHandles.Lookup类,以简化常见的用例并实现更好的编译器优化。
补充包括:
? 在java.lang.invoke包中的MethodHandles类中,为循环和try / finally块提供新的MethodHandle组合器。
? 使用新的MethodHandle组合器来增强MethodHandle和MethodHandles类的参数处理。
? 在MethodHandles.Lookup类中实现接口方法和可选的超类构造函数的新的查找方式。
JEP 277:增强Deprecated
修改@Deprecated注释,以提供有关规范中API的状态和预期配置的更好信息。增加了两个新元素:
? @Deprecated(forRemoval = true)表示将在Java SE平台的将来版本中删除该API。
? @Deprecated(since =“version”)包含Java SE版本字符串,用于指示何时不推荐使用API元素,这些字符串在Java SE 9及更高版本中已被弃用。
例如:@Deprecated(since =“9”,forRemoval = true)
@Deprecated注解在核心平台中已更新。
您可以使用新工具jdeprscan来扫描类库(JAR文件),以使用已弃用的JDK API元素。
请参阅在Java平台,标准版Java的核心库开发人员指南中增强弃用。
请参阅在Java平台,标准版工具参考中jdperscan。
JEP 285:自旋等待提示
定义一个API,使Java代码能够提示自旋循环正在执行。自旋循环重复检查条件是否为真,例如可以获取锁定,之后可以安全地执行一些计算,然后释放锁定。这个API纯粹是一个提示,并且没有语义行为的要求。请看Thread.onSpinWait的方法。
JEP 290:过滤进入的序列化数据
允许对对象序列化数据的传入流进行过滤,以提高安全性和鲁棒性。对象序列化客户端可以更容易地验证其输入,并且导出的远程方法调用(RMI)对象也可以更容易地验证调用参数。
序列化客户端实现在ObjectInputStream上设置的过滤器接口。对于RMI,通过RemoteServerRef导出对象,该RemoteServerRef将MarshalInputStream上的过滤器设置为在未调用时验证调用参数。
JEP 259:Stack-Walking API
提供了一个Stack-Walking API,允许轻松过滤和延迟地访问堆栈跟踪中的信息。
该API支持两个短步,停止在与给定条件匹配的框架上,以及遍历整个堆栈的漫步。在符合给定标准的帧上停止,如果调用者只对堆栈中的顶部帧感兴趣,则避免检查所有帧的成本。当堆栈步行器配置为这样时,API可以访问Class对象。请参阅java.lang.Stackwalker类。
JEP 255:合并所选Xerces 2.11.0更新到JAXP
更新JDK以支持2.11.0版本的Xerces解析器。公共JAXP API没有变化。
更改在Xerces 2.11.0的以下类别中:数据类型,DOM L3序列化程序,XPointer,目录解析器和XML模式验证(包括错误修复,但不是XML模式1.1开发代码)。
Nashorn在JDK 9中的新功能
这些是JDK 9中的Nashorn增强功能。
JEP 236:Nashorn的解析器API
使应用程序,特别是IDE和服务器端框架能够解析和分析ECMAScript代码。
使用Parser类中的方法从字符串,URL或文件解析ECMAScript代码。这些方法返回一个CompilationUnitTree的实例,它表示ECMAScript代码作为抽象语法树。
包jdk.nashorn.api.tree包含Nashorn解析器API。
JEP 292:在Nashorn中实现所选的ECMAScript 6功能
实现了第六版ECMA-262(也称为ECMAScript 6)或简称ES6 引入的许多新功能。
实施的功能包括:
? 模板字符串
l? et,const和块范围
? 迭代器和for..of循环
? Map,Set,WeakMap和WeakSet
? 符号
? 二进制和八进制文本
JDK 9 中客户端技术的新功能
这些是JDK 9中的客户端技术增强功能。
JEP 251:多分辨率图像
使一组具有不同分辨率的图像被封装到单个多分辨率图像中。这对应用程序来说适用于在运行时分辨率可能会从大约96dpi到300dpi变化的显示设备。
接口java.awt.image.MultiResolutionImage将一组具有不同分辨率的图像封装到单个多分辨率图像中,使应用程序能够轻松地操作和显示具有分辨率变体的图像。
JEP 253:准备用于模块化的JavaFX UI控件和CSS API
为JavaFX UI控件和CSS功能提供公共API,以前只能通过内部软件包提供,但由于模块化而无法访问。
新包javafx.scene.control.skin由一组类提供每个UI控件的皮肤(或外观)的默认实现。
新类CssParser是一个返回一个Stylesheet对象的CSS解析器,它可以更好地控制应用程序的CSS样式。它是CSS API(javafx.css包)的一部分。CSS API包括新的支持类,包括解析器使用的一组标准转换器; 参阅javafx.css.converter包
JEP 256:BeanInfo注释
@beaninfo使用注释类型JavaBean,BeanProperty和SwingContainer替换Javadoc标记。
这些注释类型在运行时在BeanInfo生成期间设置相应的特征属性。因此,您可以更容易地直接在Bean类中指定这些属性,而不是为每个Bean类创建一个单独的BeanInfo类。它还可以删除自动生成的类,这使得更容易模块化客户端库。
JEP 262:TIFF图像I / O
将标签图像文件格式(TIFF)作为标准读取和写入添加到javax.imageio包中。新包javax.imageio.plugins.tiff提供了简化TIFF元数据可选操作的类。
JEP 263:Windows和Linux上的HiDPI Graphics
在Windows和Linux上自动缩放和调整AWT和Swing组件,以实现高位数/英寸(HiDPI)显示。
JDK已经在OS X上支持HiDPI“视网膜显示”。
在此版本之前,在Windows和Linux上,Java应用程序基于像素进行了大小和渲染,即使在可以具有传统显示器的二至三倍像素密度的HiDPI显示器上也是如此。这导致GUI组件和窗口太小,无法读取或使用。
JEP 272:平台特定的桌面功能
向类java.awt.Desktop添加其他方法,使您能够与桌面交互,包括以下内容:
? 显示自定义关于和首选项窗口。
? 处理打开或打印文件列表的请求。
? 处理打开URL的请求。
? 打开本机帮助查看器应用程序。
? 设置默认菜单栏。
? 启用或禁用应用程序突然终止。
这些新方法替代了包含在OS X软件包com.apple.eawt中的内部API的功能,它们在JDK 9中默认不可访问。请注意,软件包com.apple.eio不再可访问。
JEP 283:在Linux上启用GTK 3
启用Java图形应用程序,无论是基于JavaFX,Swing还是抽象窗口工具包(AWT),都可以在Linux或Solaris上使用GTK +版本2或版本3。
默认情况下,Linux或Solaris上的JDK使用GTK + 2(如果可用)如果没有,它使用GTK + 3。
要使用特定版本的GTK +,请设置系统属性jdk.gtk.version。此系统属性的值可能为2,2.2或3.您必须在应用程序加载GTK +之前设置此属性,并且不得与较早由另一个工具包加载的GTK +版本冲突。
JDK 9 中的国际化新进展
这些是JDK 9中的国际化增强。
JEP 267:Unicode 8.0
支持Unicode 8.0。JDK 8支持的Unicode 6.2。
Unicode的6.3,7.0和8.0标准相结合引入10555个字符,29个脚本,和42个块,所有这些在JDK 9都被支持。
JEP 252:默认情况下启用CLDR区域设置数据
使用首先在JDK 8中添加的,公共区域设置数据存储库(CLDR),基于XML的区域设置数据,作为JDK 9中的默认语言环境数据。在以前的版本中,默认值为JRE。
要启用与JDK 8兼容的行为,请将系统属性java.locale.providers的值在CLDR之前设置为COMPAT
请参阅在Java平台,标准版国际指南中CLDR语言环境数据通过默认启用。
JEP 226:UTF-8属性文件
以UTF-8编码加载属性文件。在以前的版本中,加载属性资源束时使用了ISO-8859-1编码。UTF-8是一种非常方便的表示非拉丁字符的方法。
大多数现有的属性文件不应受到影响。
请参阅在Java平台,标准版国际指南中UTF-8属性文件。
文档辅助功能
? 有关Oracle对可访问性的承诺的信息,请访问Oracle辅助功能计划网站:http://www.oracle.com/pls/topic/lookup?ctx=acc& id=docacc。
? 访问Oracle支持
相关推荐
- MySQL数据库中,数据量越来越大,有什么具体的优化方案么?
-
个人的观点,这种大表的优化,不一定上来就要分库分表,因为表一旦被拆分,开发、运维的复杂度会直线上升,而大多数公司和开发人员是欠缺这种能力的。所以MySQL中几百万甚至小几千万的表,先考虑做单表的优化。...
- Redis的Bitmap(位图):签到打卡、用户在线状态,用它一目了然
-
你是不是每天打开APP,第一时间就是去“签到打卡”?或者在社交软件里,看到你的朋友头像旁边亮着“在线”的绿灯?这些看似简单的功能背后,都隐藏着一个有趣而高效的数据结构。如果让你来设计一个签到系统:用户...
- 想知道有多少人看了你的文章?Redis HyperLogLog几KB就搞定!
-
作为一名内容创作者,你每天最期待的,除了文章阅读量蹭蹭上涨,是不是还特别想知道,到底有多少个“独立用户”阅读了你的文章?这个数字,我们通常称为“UV”(UniqueVisitors),它比总阅读量更...
- Redis的“HyperLogLog”:统计网站日活用户,省内存又高效的神器
-
你可能从未听过这个拗口的名字——“HyperLogLog”,它听起来就像是某个高深莫测的数学公式。但请相信我,理解它的核心思想并不难,而且一旦你掌握了它,你会发现它在处理大数据统计问题时,简直就是“救...
- 阿里云国际站:为什么我的云服务器运行缓慢?
-
本文由【云老大】TG@yunlaoda360撰写一、网络性能瓶颈带宽不足现象:上传/下载速度慢,远程连接卡顿。排查:通过阿里云控制台查看网络流量峰值是否接近带宽上限34。解决:升级带宽(如从1M提...
- Java 近期新闻:Jakarta EE 11和Spring AI更新、WildFly 36.0 Beta、Infinispan
-
作者|MichaelRedlich译者|明知山策划|丁晓昀OpenJDKJEP503(移除32位x86移植版本)已从“ProposedtoTarget”状态进入到“T...
- 腾讯云国际站:怎样设置自动伸缩应对流量高峰?
-
云计算平台服务以阿里云为例:开通服务与创建伸缩组:登录阿里云控制台,找到弹性伸缩服务并开通。创建伸缩组时,选择地域与可用区,定义伸缩组内最小/最大实例数,绑定已有VPC虚拟交换机。实例模板需...
- 【案例分享】如何利用京东云建设高可用业务架构
-
本文以2022年一个实际项目为基础,来演示在京东云上构建高可用业务的整个过程。公有云及私有云客户可通过使用京东云的弹性IAAS、PAAS服务,创建高可用、高弹性、高可扩展、高安全的云上业务环境,提升业...
- Spring Security在前后端分离项目中的使用
-
1文章导读SpringSecurity是Spring家族中的一个安全管理框架,可以和SpringBoot项目很方便的集成。SpringSecurity框架的两大核心功能:认证和授权认证:...
- Redis与Java集成的最佳实践
-
Redis与Java集成的最佳实践在当今互联网飞速发展的时代,缓存技术的重要性毋庸置疑。Redis作为一款高性能的分布式缓存数据库,与Java语言的结合更是如虎添翼。今天,我们就来聊聊Redis与Ja...
- Redis在Java项目中的应用与数据持久化
-
Redis在Java项目中的应用与数据持久化Redis简介:为什么我们需要它?在Java项目中,Redis就像一位不知疲倦的快跑选手,总能在关键时刻挺身而出。作为一个内存数据库,它在处理高并发请求时表...
- Redis 集群最大节点个数是多少?
-
Redis集群最大节点个数取决于Redis的哈希槽数量,因为每个节点可以负责多个哈希槽。在Redis3.0之前,Redis集群最多支持16384个哈希槽,因此最大节点数为16384个。但是在Redi...
- Java开发岗面试宝典:分布式相关问答详解
-
今天千锋广州Java小编就给大家分享一些就业面试宝典之分布式相关问题,一起来看看吧!1.Redis和Memcache的区别?1、存储方式Memecache把数据全部存在内存之中,断电后会挂掉,数据不...
- 当Redis内存不足时,除了加内存,还有哪些曲线救国的办法?
-
作为“速度之王”的Redis,其高性能的秘密武器之一就是将数据存储在内存中。然而,内存资源是有限且昂贵的。当你的Redis实例开始告警“内存不足”,或者写入请求被阻塞时,最直接的解决方案似乎就是“加内...
- 商品详情页那么多信息,Redis的“哈希”如何优雅存储?
-
你每天网购时,无论是打开淘宝、京东还是拼多多,看到的商品详情页都琳琅满目:商品名称、价格、库存、图片、描述、评价数量、销量。这些信息加起来,多的惊人。那么问题来了:这些海量的商品信息,程序是去哪里取出...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- MySQL数据库中,数据量越来越大,有什么具体的优化方案么?
- Redis的Bitmap(位图):签到打卡、用户在线状态,用它一目了然
- 想知道有多少人看了你的文章?Redis HyperLogLog几KB就搞定!
- Redis的“HyperLogLog”:统计网站日活用户,省内存又高效的神器
- 阿里云国际站:为什么我的云服务器运行缓慢?
- Java 近期新闻:Jakarta EE 11和Spring AI更新、WildFly 36.0 Beta、Infinispan
- 腾讯云国际站:怎样设置自动伸缩应对流量高峰?
- 【案例分享】如何利用京东云建设高可用业务架构
- Spring Security在前后端分离项目中的使用
- Redis与Java集成的最佳实践
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)