当前位置: 首页 > 后端技术 > Java

重的!JDK17发布,Oracle宣布将正式从JDK17中免费,

时间:2023-04-01 22:54:02 Java

上一版:JDK16正式发布,一次性发布17个新特性……我接受不了!JDK17正式发布+免费!JDK16刚刚发布半年(2021/03/16),JDK17如期而至(2021/09/14)。?我记得JDK15的发布也是在同一天,很巧。.iPhone13虽然发布了,但真的不是13香。实在是没什么创新和亮点。一如既往苹果式的牙膏在13上挤到精华,这次想说JDK17更香!!iPhone13降价多少??JDK17直接免费!!!Oracle宣布从JDK17开始,所有后续的JDK都将免费提供!!!是的,你没看错,甲骨文这一次是有良心的,而且有大动作。Java17+可以免费使用,包括商业用途。更详细的条款可以阅读:https://www.oracle.com/downlo..查看最新的OracleJava支持路线图:可以看到,JDK17是继JDK11之后的第二个长期支持版本2018年,一直支持到2029年9月。好家伙,支持时间长达8年。不必拘泥于JDK8,JDK17+也可以成为新的选择。.接下来的第三个长期支持版本是JDK21,也就是2023年9月。这次长期支持版本发布计划有所改变。不再是原来的3年发布,而是2年发布!此外,非长期支持版本仍然每六个月发布一次。下一个非长期支持版本计划在2022/03发布,但注意不要在生产中使用。JDK17新特性列表ID特性描述1306:RestoreAlways-StrictFloating-PointSemanticsRestorealwaysexecutestrictmodefloating-pointdefinition2356:EnhancedPseudo-RandomNumberGeneratorsEnhancedpseudo-randomnumbergenerator3382:NewmacOSRenderingPipelinenewmacOSRenderingPipeline4391:macOS/AArch64PortmacOSAArch64Port5398:DeprecatetheAppletAPIforRemovalDeprecatedAppletAPI6403:StronglyEncapsulateJDKInternalsJDKinternalstrongencapsulation7406:PatternMatchingforswitch(Preview)支持模式匹配开关8407:RemoveRMIActivationRemoveRMIActivation9409:SealedClassesSealedClass10410:RemovetheExperimentalAOTandJITCompilerRemovetheexperimentalAOTandJITCompiler11411:DeprecatetheSecurityManagerforRemovalDeprecatetheSecurityManager12412:ForeignFunction&MemoryAPI(Incubator)外部函数和内存API(incubating)13414:VectorAPI(SecondIncubator)vectorAPI(secondaryincubation)14415:Context-SpecificDeserializationFilterscontext-specific反序列化过滤器JDK17这个版本提供了14个增强此外,它在性能上也得到了很多改进,稳定性和安全性,以及一些孵化和预览功能。通过这些新变化,Java将进一步提高开发人员的生产力。JDK17新特性详细介绍下面是JDK17中14个新特性的详细介绍,分为5类进行介绍!1.Languageenhancement409:SealedClasses,该特性首先在JDK15中成为预览特性,在JDK16中成为第二次预览特性,最后在JDK17中正式成为常规特性。Sealedclasses可用于增强Java编程语言,通过防止其他类或接口扩展或实现它们。看下面的例子:publicabstractsealedclassStudentpermitsZhangSan,LiSi,ZhaoLiu{...}classStudent被sealed修饰,说明是密封类,只允许指定三个子类继承。厉害了,有了这个特性,就意味着以后想继承就继承不了,想实现就实现,要获得权限。如果你成为常客,栈长会再写一篇详细的,关注公众号:Java技术栈,公众号会第一时间推送。2.预览孵化特性406:PatternMatchingforswitch(Preview)支持switch的模式匹配(inpreview)。大家都知道instanceof模式匹配的概念吧?如果不确定,可以阅读这篇文章:Java14中的模式匹配,一个很棒的新特性!这次JDK17支持switch语句的模式匹配,什么鬼?看看下面的例子!旧代码写法:staticStringformatter(Objecto){Stringformatted="unknown";if(oinstanceofIntegeri){formatted=String.format("int%d",i);}elseif(oinstanceofLongl){formatted=String.format("long%d",l);}elseif(oinstanceofDoubled){formatted=String.format("double%f",d);}elseif(oinstanceofStrings){formatted=String.format("String%s",s);}returnformatted;}新的模式匹配方法:staticStringformatterPatternSwitch(Objecto){returnswitch(o){caseIntegeri->String.format("int%d",i);caseLongl->字符串。格式(“长%d”,l);caseDoubled->字符串。格式(“双%f”,d);case字符串s->字符串。格式(“字符串%s”,s);默认->o.toString();};}太棒了,在switch上直接支持Object类型,相当于同时支持多种类型,使用模式匹配获取具体类型,大大简化了语法量。这个功能还是很实用的,期待转正,栈长会再写一篇详细的,关注公众号:Java技术栈,公众号推送412:ForeignFunction&MemoryAPI(孵化器)External函数和内存API(孵化器)改进JDK14和JDK15引入了可以通过有效调用外部函数(即JVM外部代码)和安全访问外部内存(JVM外部内存)来调用本地库和处理本地数据的API。环境之外的代码和数据。414:VectorAPI(SecondIncubator)VectorAPI(secondaryincubator)VectorAPI这是一个新的初始迭代孵化器模块,模块包:jdk.incubator.vector,用于表示在运行时可靠编译到支持的CPU具有架构优化向量的向量计算硬件指令,矢量运算可以提供比等效标量计算更好的性能,在机器学习、人工智能和密码学等领域非常普遍。这个增强的API允许以一种方式表达向量计算,在运行时,在支持的CPU架构上可靠地编译成最佳向量指令。3.核心增强306:RestoreAlways-StrictFloating-PointSemantics恢复始终执行严格模式的浮点定义。Java本来只有严格的浮点语义,但是从JDK1.2开始,为了适应当时硬件架构的限制,默认允许对这些严格的语义进行细微的改动,而这些现在是不必要的,已经被取消了。由JEP306移除。356:EnhancedPseudo-RandomNumberGeneratorsEnhancedPseudo-RandomNumberGenerator,更新了java.util.random包,提高不同PRNG(Pseudo-RandomNumberGenerators)的互操作性,使具体实现的算法变为简单的。此更改包括伪随机数生成器(PRNG)的新接口类型和实现,包括可跳过的PRNG和可拆分的PRNG算法(LXM),以及全新的RandomGeneratorFactory类。382:NewmacOSRenderingPipeline新的macOS渲染管道。这个新管道通过使用新的AppleMetalAPI为macOS实现Java2D渲染管道,减少了JDK对已弃用的AppleOpenGLAPI的依赖。415:上下文特定的反序列化过滤器上下文特定的反序列化过滤器。允许应用程序通过JVM范围的过滤器工厂配置特定于上下文和动态选择的过滤器,以便为每个单独的反序列化操作选择一个过滤器。403:StronglyEncapsulateJDKInternalsJDK内部强封装,是JDK16中JEP396的延续,JDK16开始默认对JDK的大部分内部元素进行强封装,除了sun.misc.Unsafe等关键的内部API,从而限制访问他们的访问权限。此外,用户仍然可以选择自JDK9以来默认的松散强封装,帮助用户轻松升级到未来的Java版本。4.新平台支持391:macOS/AArch64PortmacOSAArch64端口,提供了适合macOS的JDK版本,可以在基于Arm64的较新的macOS系统上本地运行。5.Deprecate和删除第411项:DeprecatetheSecurityManager免职废除安全经理。从Java1.0开始,多年来安全管理器并不是保护Java应用程序代码的主要手段,也很少用它来保护Java服务器端代码,所以这个版本被标记为deprecated,以后的版本会迁移。消除。398:DeprecatetheAppletAPIforRemovalDeprecatetheAppletAPI。Applet是运行在Web浏览器中的Java程序,但Applet早已无用武之地。有没有支持JavaApplet的浏览器?你可能没听说过,对吧?407:RemoveRMIActivation移除RMI激活。2020年9月的JDK15中移除了RMI激活机制,现在移除了RemoteMethodInvocation(RMI)激活机制。需要注意的是,RMI激活是RMI中一个过时的组件。由于Java8一直是可选的。410:RemovetheExperimentalAOTandJITCompiler删除实验性AOT和JIT编译器。AOT和JIT两个实验性的编译器,自从在JDK9中引入后就几乎没有被使用过,市场上有更广泛使用的替代品,维护它们所需的工作量很大,所以在JDK16中被移除了,并且这次已经从OpenJDK项目中移除了源代码。JDK17是免费的,与OpenJDK有什么区别吗?是的,虽然两者很接近,但还是有那么一点点的区别!1、OracleJDK提供各种安装程序,包括更新规则,而OpenJDK只提供纯压缩包;2.UsageLogging仅在OracleJDK中可用;3.OracleJDK需要第三方加密提供者使用Java加密4.java-version的输出也不同,OracleJDK返回java并且包含Oracle特定的标识符,OpenJDK返回OpenJDK并且不包含Oracle特定的标识符;5、许可不同,OracleJDK17+是在OracleFreeTermsandConditionsLicense下发布的,而OpenJDK是在GPLv2wCP下发布的;6.OracleJDK源代码包含“ORACLEPROPRIETARY/CONFIDENTIAL.Useissubjecttolicenseterms.”,其使用受许可条款约束,而OpenJDK源代码可以参考GPL许可条款;以上是两者之间的6个主要区别。总结最后,本文主要介绍JDK/Java17的14个新特性的基础知识,后续栈长有时间会继续更新一些JDK新特性的详细教程。关注公众号Java技术栈第一时间推送。如果想看历史悠久的Java8+系列新特性教程,也可以在公众号菜单阅读。Java17发布了,Oracle宣布JDK17及以后的版本可以免费使用,包括商用,爽!!!甲骨文这次真的有良心了,说不定是在趋向于某种免费的压力呢?Java确实是在走下坡路,即便如此,它依然风生水起,是现在各大公司必用的语言之一。虽然大部分人还在用JDK7/8,甚至6,还在写JDK5的语法,现在有了JDK17+免费,或者在不久的将来,JDK8会逐渐被取代,JDK17+慢慢走登上舞台。以前的Java教程和示例源码:https://github.com/javastacks...OracleJDK17发布地址:https://www.oracle.com/java/t...OpenJDK17发布地址:http://openjdk.java.net/proje...OracleJDK17下载地址:https://www.oracle.com/java/t...OpenJDK17下载地址:https://jdk.java.net/17/Yes有兴趣的可以下载试用一下!!JDK17+终于免费了,你会考虑使用它吗?快来投票吧!老铁们,点击观看,转发支持,欢迎分享给更多的朋友~关注Java技术栈,持续分享最新最主流的Java技术~版权声明:本文为公众号《Java《技术栈》原创,原创不易,转载引用本文内容请注明出处,禁止抄袭洗稿,请尊重自己,尊重他人的劳动成果和知识产权。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!