当前位置:首页 > 每日看点 > 正文内容

JDK/Ja17可能带来什么新特性?

卡卷网10个月前 (01-09)每日看点161

我是大明哥,一个专注<>「死磕Ja」的硬核程序员。


Ja17,发布于2021年9月,是一个长期支持(LTS)版本。

<>JEP356**:**<>增强型伪随机数生成器

在Ja17之前,Ja的伪随机数生成主要依赖于ja.util.Random类及其子类,如ThreadLocalRandomSeceRandom。这些类虽然功能强大,但在某些特定应用场景中存在局限性,如需要特定类型的随机数生成器(例如具有更长周期的生成器),或需要更细粒度的控制和更广泛的算法选择。

Ja17引入增强的伪随机数生成器其目的是在Ja标准库中引入更多种类的随机数生成器,并提供一种更为一且易于使用的方式来访问和使用这些生成器。它的主要内容包括:

    <>新的接口和实现:引入新的接口RandomGenerator,以及多个实现此接口的类,每个类代表一种不同类型的随机数生成器。<>更广泛的算法选择:提供了多种基于不同算法的随机数生成器,如LCG(线性同余生成器)、Xoroshiro、Xoshiro等,每种算法都有其特点和适用场景。<>更好的性能和质量:新的生成器在性能和生成数质量方面进行了优化,以满足更加复杂和高效的应用需求。
更多阅读:Ja17新特性—增强的伪随机数生成器

<>JEP382**:**<>新的macOS渲染管线

在Ja17之前,Ja在macOS平台上的图形渲染主要依赖于OpenGL。随着Apple宣布逐步废弃OpenGL支持,并推荐使用更现代的MetalAPI,Ja需要适应这一变化,以确保其在macOS平台上的图形性能和兼容性。

该特性是引入一个新的渲染管道,使用Apple的MetalAPI替代OpenGL。目前默认情况下,这是禁用的,因此渲染仍然使用OpenGLAPI;要启用metal,应用程序应通过设置属性指定其使用:

-Dsun.ja2d.metal=true

JEP391**:**macOS/AArch64端口

由于早期的Ja版本并不支持在ARM架构的M1上运行,这就需要Ja在macOS上支持ARM64架构(即AArch64),从而确保Ja应用程序和开发者能够在这个新平台上继续运行和开发。

Ja17引入该特性,去主要目标是在macOS上为ARM64架构(AArch64)提供支持,解决以下问题:

    <>兼容性:确保Ja可以在Apple的M1芯片上顺利运行。<>性能:优化Ja在ARM64架构上的性能,使其充分利用M1芯片的高效能。

<>JEP398**:**<>移除AppletAPI

AppletAPI是Ja最早期的组成部分之一,它允许在浏览器中运行Ja程序。随着时间的推移,网络技术发展,特别是HTML5和JaScript的崛起,使得Applet的重要性大大降低。同时,Applets通常需要浏览器插件来运行,这导致了安全性问题和兼容性问题。且随着主流浏览器逐渐放弃对Ja插件的支持,Applet的实用性进一步下降。

Ja17将AppletAPI标记为弃用,并在未来的Ja版本中移除它。

JEP406:模式匹配的Swith表达式(预览)

在Ja16中,JEP394扩展了instanceof运算符,可以采用类型模式并执行模式匹配。虽然可以不需要强制转换了,但是仍然需要大量的if...else。而Switch表达式虽然简化了if...else,但是它无法像instanceof一样不需要强制转换。为了解决这个痛点,Ja17引入模式匹配的Switch表达式特性,目前该特性为预览特性。

该特性扩展了switch表达式和语句,允许它们使用模式匹配,这就意味着我们可以在switch的case标签中使用模式,如类型模式,使得代码更加灵活和表达性更强。而且也无需进行显式的类型转换了。例如,可以使用caseIntegeri这样的语法来匹配并自动转换类型。

更多阅读:Ja17新特性—模式匹配的Swith表达式

JEP407:删除RMI激活

RMI(远程方法调用)激活是JaRMI框架的一部分,它允许远程激活对象。它在Ja15中被标记为弃用,Ja17删除RMI激活。

<>JEP409:密封类(正式特性)

为了Ja的继承,Ja15引入密封类作为预览特性。密封类允许类设计者明确控制哪些类或接口可以实现或扩展它们,从而提供更精确的多态性控制。同时,Ja16第二次作为预览特性,最终在Ja17中成为正式特性。

Ja版本更新类型JEP更新内容Ja15预览特性JEP360引入了密封类作为预览特性。Ja16第二次预览JEP397Ja17正式特性JEP409成为正式特性。更多阅读:Ja15新特性—密封类和接口

<>JEP410:移除实验性的AOT和JIT编译

Ja9引入了实验性的Ahead-of-Time(AOT)编译器和一个实验性的Just-In-Time(JIT)编译器,即Graal编译器。这些特性最初被引入是为了探索和评估在Ja虚拟机中提供不同类型编译器的可能性。经过一段时间的实验和社区反馈,发现这些实验性编译器的成本较高,而且在实际应用中的使用率并不高。

故而,Ja17将JaotcAOT编译器和基于Graal编译器的实验性JIT编译器移除。这样可以简化JDK的代码库,降低成本。

JEP411**:**废弃安全器

安全器是Ja平台的一部分,用于提供对Ja应用的安全。它在早期Ja版本中是重要的安全特性,用于控制Applets和类型的应用的权限。但是,随着Ja平台的发展和安全模型的演进,安全器的重要性逐渐降低,现代应用通常通过作级别的安全措施和应用架构设计来实现安全。

Ja17将安全器标记为弃用,并在将来的版本中移除。

<>JEP412:外部函数与内存API(第二次孵化)

传上,Ja使用JaNativeIntece(JNI)来与本地代码互作。虽然功能强大,但JNI使用复杂且易出错,且性能开销较大。

Ja17引入一套新的API,使得Ja程序能够安全、高效地调用外部函数(如C语言函数)和作外部内存。API包括:

    引入了外部函数接口,允许Ja程序调用C语言等外部语言编写的函数。引入了外部内存接口,允许Ja程序安全地访问和作本地内存。
Ja版本更新类型JEP更新内容Ja14孵化器JEP370引入了外部内存访问APIJa15第二孵化器JEP383优化外部内存访问APIJa16孵化器JEP389引入了外部链接器APIJa16第三孵化器JEP393继续优化Ja17孵化器JEP412引入了外部函数和内存API

<>JEP414:向量API(第二次孵化)

向量API是在Ja16中作为孵化器引入的,主要是解决Ja在进行高性能数值计算时的性能。VectorAPI通过提供一套标准的API,使得Ja程序能够以一种高效、简洁且跨平台一致的方式进行向量计算。

Ja17基于此前版本的反馈和经验进行了改进,第二次孵化。

Ja版本更新类型JEP更新内容Ja16第一次孵化JEP338提供一个平台无关的方式来表达向量计算,能够充分利用现代处理器上的向量硬件指令。Ja17第二次孵化JEP414对API进行了改进,增加了性能优化和新的功能。

大明哥花了两个月时间终于写完了Ja8~Ja21所有的重要特性,整个系列共63篇文章,11w+字。欢迎各位查阅:

Ja8+新特性知识体系-死磕Ja

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/7832.html

分享给朋友:

相关文章

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

每天5点就下班了,闲着也是闲着,有哪些副业可以推荐?

今天整理了36个搞钱APP可以先接触学习看看,然后选定一个感兴趣的方向去精进要知道机会不是一下子来临的,而一定是你前期做了很多准备每天进步一点点,就像滚雪球一样希望所以女生,能够在2024年提升自己,立下一个新的搞钱Flag吧实用APP安利...

短剧推广怎么做,24年还能赚钱吗?

短剧推广怎么做,24年还能赚钱吗?

首先声明:短剧授权是免费的!短剧授权是免费的!短剧授权是免费的!其次我们再聊聊,短剧推广到底赚不赚钱?多的就不说了,随便上个图片,给大家过过瘾!然后,我们进入主题:0粉丝账号,新手,应该如何申请短剧推广!一、短剧推广变现方式首先,我们先要分...

为什么我们一直在给B站充大会员但B站却一直处于亏损状态?

我讲一下离谱的真相吧,欢迎喷我。很多人都觉得B站在赶走人才,赶走优秀的长视频创作者,也觉得知乎在这么做,是没错的。确实在这么做。而原因很简单。只有影响力很大的KOL才有商业价值。(KOL是指“关键意见领袖”)而你说你是人才?对不起,人才不赚...

WordPress建站同时面向B端和C端,有什么好的解决方案?

这个很容易实现呀,只不过需要自己开发,整体用权限管理就可以实现了,B端和C端是不同用户权限,C端能看到的菜单入口和B端不一样就行了。技术层面实现没问题的,只不过就是看你们的技术能力和投入了 ,这样的需求应该没有现成的开源插件。只能找人定制开...

网易云音乐上看到过最触动的热评是什么?

网易云音乐上看到过最触动的热评是什么?

1.“昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾,正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。”希望你永远不会听懂这句话,永远都不要懂。——网易云热评《关键词》2.小时候跟着父亲去城里卖西瓜,害怕同学会看到我,就...

荣耀magic 7 首发的应该都收到货了,感觉怎么样?

8号入手magic7,跟mate40pro比。优点:1、电池真耐用,充电块,华为电池也是新换的但是明显荣耀耐用;2、系统明显快多了,mate40pro下半年开始卡的不行,实在受不了了。3、声音、震动效果提升明显,指纹反应灵敏很多。 缺点:1...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。