整理java11新特性总结(代码片段)

jackpothan jackpothan     2023-01-03     660

关键词:

闲语

2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11。Oracle直到2023年9月都会为JDK 11提供一级支持,而补丁和安全警告等扩展支持将延续到2026年。新的LTS版本每三年发布一次,JDK 17将于2021年发布,预计将成为下一个LTS版本。临时版本将每六个月发布一次。本文将介绍 Java 11 的新功能以及删除的功能。

Java 11 的新功能

JDK 11有16个新功能:

  • 通过lang.Math在Aarch64处理器上实现sin,cos和log函数的新内在函数,改进Aarch64内在函数。该提案强调专用的CPU体系结构特定的代码模式,可提高应用程序和基准性能。
  • 基于嵌套的访问控制引入了嵌套,这是一种与Java语言中嵌套类型概念一致的访问控制上下文。嵌套允许逻辑上属于同一代码实体的类,但编译为不同的类文件以访问彼此的私有成员,而无需编译器插入可访问性扩展桥接方法。
  • 传输层安全性(TLS)1.3,其中TLS协议的这种大修将适用于JDK 11,从而提供显着的安全性和性能优势。但是,没有目标支持TLS 1.3的每个功能。为了最大限度地降低不兼容的风险,TLS 1.3默认会实现向后兼容模式。应用程序可以根据需要关闭或打开此模式。
  • Nashorn JavaScript引擎与JJS工具(Java 8里面的新特性)的弃用,旨在将来删除它们。鉴于ECMAScript语言构建和API的快速调整和修改,Oracle发现Nashorn难以维护。
  • HTTP客户端(标准),它标准化了JDK 9中引入并在JDK 10中更新的孵化HTTP API客户端API提供非阻塞请求和响应语义CompleteableFutures,可以链接到触发器依赖操作。在JDK 9和10中孵化之后,现在异步的实现几乎已经完全重写.RX Flow概念已经被推入实现中,消除了支持HTTP / 2所需的许多自定义概念。现在可以更轻松地跟踪数据流,从用户级请求发布者和响应发布者到底层套接字。这降低了复杂性并最大化了HTTP / 1和HTTP / 2之间重用的可能性。
  • 被称为“无操作”收集器Epsilon垃圾收集器将处理内存分配,而不实现任何实际的内存回收机制。Epsilon的用例包括性能测试,内存压力和虚拟机接口。它也可以用于短期工作。
  • lambda参数的局部变量语法应该将隐式类型表达式中的形式参数声明的语法与局部变量声明的语法对齐。这将允许var 在声明隐式类型的lambda表达式的形式参数时使用。
  • 将扩展Java类文件格式以支持新的常量池形式CONSTANT_Dynamic目标是降低开发新形式的可实现类文件约束的成本和中断。
  • 与现有的椭圆曲线Diffie-Hellman方案相比,与Curve25519和Curve448密码学的密切协议应该更加有效和安全。根据IETF的说法,两条椭圆曲线Curve25510和Curve448可以实现恒定时间实现和无异常的标量乘法,这种乘法更能抵抗一系列的旁道攻击,包括定时和缓存攻击。该提案的目标包括API和密钥协商方案的实现,以及独立于平台的全Java实现的开发。但是,作为提案的一部分,模块化算法实现的复杂性和微妙性存在风险。
  • Flight Recorder将提供一个低开销的数据收集框架,用于对Java应用程序和HotSpot JVM进行故障排除。Flight Recorder已成为Oracle商业JDK的一项功能,但其源代码将移至开放式存储库以使该功能普遍可用。Iclouded将是用于生成和使用数据作为事件的API,提供缓冲机制和二进制数据格式以及启用事件的配置和过滤。该提案还要求为OS,HotSpot和JDK库提供事件。
  • 升级平台API以支持Unicode版本10.0,从而使Java保持最新。预计将在以下类别中提供支持:
    • Character和String在lang包
    • NumericShaper在awt.font
    • BidiBreakIterator和Normalizer在text
  • 实施ChaCha20和Poly1305加密算法。ChaCha2020是一种相对较新的流密码,可以取代旧的,不安全的R4流密码。ChaCha20将与Poly1305验证器配对。将提供ChaCha20和ChaCha20-Poly1305密码实现,使用crypto.CipherSpiAPI 在SunJCE(Java密码术扩展)提供程序中实现算法
  • 增强Java启动程序以运行作为Java源代码的单个文件提供的程序,因此这些程序可以直接从源代码运行。在学习Java的早期阶段编写小实用程序或开发人员时,单文件程序很常见。此外,单个源文件可能会编译为多个类文件,这会增加打包开销。在这些情况下,必须在运行之前编译程序只是基于传统的不必要的步骤。
  • 低开销堆分析,提供了一种可以通过JVM工具接口访问Java堆分配的方法。这项工作的目标是以低开销的方式获取有关这些分配的信息,可以通过编程接口访问,并可以对所有分配进行采样。实施独立性和提供关于实时和死堆的数据也是目标。糟糕的堆管理可能导致堆耗尽和垃圾收集颠簸。解决此问题的大多数工具都缺少特定分配的调用站点,这些信息对于调试内存问题至关重要。
  • Pack200和Unpack200工具以及Pack200 API的弃用util.jarPack200是.jar文件的压缩方案,旨在降低应用程序打包,传输和交付的磁盘和带宽要求。项目负责人表示,维护成本和低使用率并不能证明其保留是合理的。
  • 所述?垃圾收集器(ZGC)实验,低延迟垃圾收集器,以处理堆从相对小到非常大的堆的是在尺寸上许多兆兆字节。通过使用ZGC,暂停时间不应超过10毫秒,与使用G1收集器相比,应用程序吞吐量减少不应超过15%。ZGC还为未来的功能和优化奠定了基础。Linux / x64将是第一个获得ZGC支持的平台。

Java 11删除的功能

  • Java EE和CORBA模块(最近更名为Jakarta EE)模块从Java SE9就成了不推荐使用(deprecated),并在JDK 11中删除。
  • Java SE 6于2006年12月发布,它为Java EE平台提供了整套的Web服务技术栈:JAX-WS(Java API for XML-based Web Services),JAXB(Java Architecture for XML Binding),JAF(JavaBeans Activation Framework),以及Common Annotations for Java。这些年来,Java EE版本在不断进化,这给Java SE造成了许多麻烦,例如加入与Java SE无关的技术,以及同时维护两个Java版本的困难变得更大。由于独立的Java EE版本由第三方网站提供,Oracle说Java SE或JDK中已经没有必要提供Java EE了。当然,一些依赖于JDK中的Java EE API及工具的应用程序将无法编译或运行。将JDK 6、7或8移植到新版本时将会产生二进制不兼容和源代码不兼容。Oracle说,受到这些影响的开发者可以部署相应的Java EE版本。
  • CORBA来自于二十世纪九十年代,Oracle说,现在用CORBA开发现代Java应用程序已经没有意义了,维护CORBA的成本已经超过了保留它带来的好处。但是删除CORBA将使得那些依赖于JDK提供部分CORBA API的CORBA实现无法运行。目前还没有第三方CORBA版本,也不确定是否会有第三方愿意接手CORBA API的维护工作。
  • JavaFX已经被移除,它现在可作为独立技术使用,因此已经与Java JDK每年两次的更新无关。

参考资料n

  https://www.infoworld.com/article/3265447/java/java-jdk-11-all-the-new-features-now-available.html?nsdr=true

  https://cloud.tencent.com/developer/article/1154762

c#11新特性整理(代码片段)

假期中有时间,整理了C#11的各个新特性,简单分享给大家。一、使用VSCode新建一个.NET7.0的Console工程<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFrame 查看详情

java5,6,7,8,9,10,11新特性超详细总结(代码片段)

java51.泛型(Generics)List<Integer>list=newArrayList<Integer>();2.增强循环(EnhancedforLoop) 3.自动封箱拆箱(Autoboxing/Unboxing)。八大基本类型和它们的包装类能够自动的相互转换。4.枚举(TypesafeEnums)。ps:枚举是一种实现线程安全的单... 查看详情

c++11常用特性的使用经验总结(代码片段)

...博主在日常工作中的使用C++11的一些总结、经验和感悟,整理出来,分享给大家,希望对各位读者有帮助,文章中的总结可能存在很多不完整或 查看详情

前端知识总结--es6新特性(代码片段)

...来编写复杂的大型应用程序,成为企业级开发语言。整理下ES6的新特性,具体用法不详细描述,只作为总结归纳1、let和const命令使用let 查看详情

一文总结javajdk17发布的新特性(代码片段)

...: JDK17已经于2021年3月16日如期发布。本文介绍JDK17新特性。JDK17于2021年9月14日正式发布(General-AvailabilityRelease)。JDK17将是大多数供应商的长期支持(LMS)版本。上一个LTS版本是JDK11。本文总结了JDK17发布的新... 查看详情

一文总结javajdk17发布的新特性(代码片段)

JDK17已经于2021年3月16日如期发布。本文介绍JDK17新特性。JDK17于2021年9月14日正式发布(General-AvailabilityRelease)。JDK17将是大多数供应商的长期支持(LMS)版本。上一个LTS版本是JDK11。本文总结了JDK17发布的新特性。... 查看详情

一文总结javajdk17发布的新特性(代码片段)

JDK17已经于2021年3月16日如期发布。本文介绍JDK17新特性。JDK17于2021年9月14日正式发布(General-AvailabilityRelease)。JDK17将是大多数供应商的长期支持(LMS)版本。上一个LTS版本是JDK11。本文总结了JDK17发布的新特性。... 查看详情

游戏开发岗面经总结4(drawcall,c++11新特性)(代码片段)

DrawCall?一提到DrawCall我们就会想到优化的问题什么是DrawCall?通俗:在unity中,每次CPU都会准备数据通知GPU的过程就成为一个DrawCall具体:CPU调用图形编程接口,来命令GPU进行渲染的操作具体:设置颜色... 查看详情

c++17好用的新特性总结(代码片段)

...+仍然是首选,地位无可撼动。新C++有一些新特性非常好用,本文对此进行了介绍,比如auto、lambda、constexpr、tuple、智 查看详情

jdk11新特性——removethejavaeeandcorbamoudles(代码片段)

目录一、RemovetheJavaEEandCORBAMoudles1.1、概述1.2、在java11中将java9标记废弃的JavaEE及CORBA模块移除掉,具体如下二、JEP:335:DeprecatetheNashornJavaScriptEngine三、JEP:336:DeprecatethePack200ToolsandAPI一、RemovetheJavaEEandCOR 查看详情

jdk11新特性——removethejavaeeandcorbamoudles(代码片段)

目录一、RemovetheJavaEEandCORBAMoudles1.1、概述1.2、在java11中将java9标记废弃的JavaEE及CORBA模块移除掉,具体如下二、JEP:335:DeprecatetheNashornJavaScriptEngine三、JEP:336:DeprecatethePack200ToolsandAPI一、RemovetheJavaEEandCOR 查看详情

4.6w字总结!java11—java17特性详解(代码片段)

...术之路来源| https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4QJava11特性详解基于嵌套的访问控制与Java语言中现有的嵌套类型概念一致,嵌套访问控制是一种控制上下文访问的策略,允许逻辑上 查看详情

京东面经学习----答案整理(代码片段)

目录1.[Java基础]Java中的==和equals区别2.[Java基础]hashmap的实现原理、1.8之后的改变3.[Java基础]接口和抽象类的区别4.[Java基础]可变长参数5.[Java新特性]java8有哪些新特性6.[Java多线程]介绍下ThreadLocal和使用场景7.[JVM]jvm优化工具8.[... 查看详情

c++编程经验(12):c++11新特性(代码片段)

...f0c;所以这篇写的基本都是我接触过的,接触过多少就整理多少吧。有些特性也不知道是不是新的,反正都是我新接触的,用的还挺顺手。语法层面区间迭代rangefor用过一次我就很喜欢这个特性了,写起来是方便了... 查看详情

c++编程经验(12):c++11新特性(代码片段)

...f0c;所以这篇写的基本都是我接触过的,接触过多少就整理多少吧。有些特性也不知道是不是新的,反正都是我新接触的,用的还挺顺手。语法层面区间迭代rangefor用过一次我就很喜欢这个特性了,写起来是方便了... 查看详情

jdk11新特性——javaflightrecorder(代码片段)

...lightRecorder源自飞机的黑盒子。FlightRecorder以前是商业版的特性,在java11当中开源出来,它可以导出事件到文件中,之后可以用JavaMissionControl来分析。二、使用可以在应用启动时配置java-XX:StartFlightRecording或者在应用启... 查看详情

jdk11新特性——javaflightrecorder(代码片段)

...lightRecorder源自飞机的黑盒子。FlightRecorder以前是商业版的特性,在java11当中开源出来,它可以导出事件到文件中,之后可以用JavaMissionControl来分析。二、使用可以在应用启动时配置java-XX:StartFlightRecording或者在应用启... 查看详情

c++11新特性:函数对象包装器(代码片段)

函数对象包装器std::functionstd::bind和std::placeholder总结std::function​C++11std::function是一种通用、多态的函数封装,它的实例可以对任何可以调用的目标实体进行存储、复制和调用操作,它也是对C++中现有的可调用... 查看详情