【整理】Java 11新特性总结
闲语
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
包
下Bidi
,BreakIterator和
Normalizer在
text
包
下- 实施ChaCha20和Poly1305加密算法。ChaCha2020是一种相对较新的流密码,可以取代旧的,不安全的R4流密码。ChaCha20将与Poly1305验证器配对。将提供ChaCha20和ChaCha20-Poly1305密码实现,使用
crypto.CipherSpi
API 在SunJCE(Java密码术扩展)提供程序中实现算法。 - 增强Java启动程序以运行作为Java源代码的单个文件提供的程序,因此这些程序可以直接从源代码运行。在学习Java的早期阶段编写小实用程序或开发人员时,单文件程序很常见。此外,单个源文件可能会编译为多个类文件,这会增加打包开销。在这些情况下,必须在运行之前编译程序只是基于传统的不必要的步骤。
- 低开销堆分析,提供了一种可以通过JVM工具接口访问Java堆分配的方法。这项工作的目标是以低开销的方式获取有关这些分配的信息,可以通过编程接口访问,并可以对所有分配进行采样。实施独立性和提供关于实时和死堆的数据也是目标。糟糕的堆管理可能导致堆耗尽和垃圾收集颠簸。解决此问题的大多数工具都缺少特定分配的调用站点,这些信息对于调试内存问题至关重要。
- Pack200和Unpack200工具以及Pack200 API的弃用
util.jar
。Pack200是.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每年两次的更新无关。
参考资料
https://cloud.tencent.com/developer/article/1154762
【整理】Java 11新特性总结的更多相关文章
- Java 11 新特性介绍
Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...
- 最通俗易懂的 Java 11 新特性讲解
大多数开发者还是沉浸在 Java 8 中,而 Java 14 将要在 2020 年 3 月 17 日发布了,而我还在写着 Java 11 的新特性.Java 11 是 Java 8 之后的第一个 LT ...
- Java 12 新特性介绍,快来补一补
Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Java 11 新特性介绍 J ...
- 【整理】Java 8新特性总结
闲语: 相比于今年三月份才发布的Java 10 ,发布已久的Java 8 已经算是老版本了(传闻Java 11将于9月25日发布....).然而很多报道表明:Java 9 和JJava10不是 LTS ...
- Java 5-11新特性的整理(转)
Java 5-11新特性的整理(转) 作者:拔剑少年 简书地址:https://www.jianshu.com/u/dad4d9675892博客地址:https://it18monkey.github ...
- Java 8 新特性终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己 ...
- [转载] C++11新特性
C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...
- C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...
- Java 8新特性探究(八)精简的JRE详解
http://www.importnew.com/14926.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 - 首页 所有文章 资讯 ...
随机推荐
- OrCAD Capture CIS 16.6 修改原理图的页面大小
OrCAD Capture CIS 16.6 打开需要修改的原理图. 菜单:Options > Schematic Page Properties... 看图操作...
- vue——vue-resource
get请求 getSearch () { return this.$http.get('https://xxx.xxx.com/xxx.json', {params: {name: this.sear ...
- logging模板日志格式
logging模板日志格式 创建loginfo.py模块,然后导入定义的logging配置,即可使用 cat loginfo.py """ logging配置 " ...
- MariaDB修改默认字符集
MariaDB修改默认字符集,以及创建数据库授权 1 . 修改server默认字符集utf8 [root@aws my.cnf.d]# vim /etc/my.cnf.d/server.cnf [my ...
- 转: 解压Assets.car (iOS加密资源)
今天想获取APP的资源,但是查看xxx.app文件夹里面,缺少了大部分资源.在文件夹里面发现Assets.car这个文件,发现文件很大有40多M,猜想图片资源会不会被压缩到这里面了,所以就网络上查了下 ...
- Android自定义View+贝赛尔曲线
Android -- 贝塞尔曲线公式的推导和简单使用https://www.cnblogs.com/wjtaigwh/p/6647114.html Android -- 贝塞尔使圆渐变为桃心http: ...
- zabbix通过shell脚本安装异常问题定位
htxk-106主机信息现象如下: 通过zabbix_get命令 zabbix_get [7189]: Check access restrictions in Zabbix agent config ...
- eclipse发布web
elipse集成tomcat 在实际开发中通常在eclipse中集成tomcat,这样在开发中更方便一些.打开eclipse,选择界面下方的servers选项,点击no servers are ava ...
- python 类、函数的引用
类的引用 一.同级目录引用: from 文件名 import 类名 如果报错,原因基本上就是:pycharm不会将当前文件目录自动加入自己的sourse_path. 解决方法: ...
- Codeforces 420D Cup Trick 平衡树
Cup Trick 平衡树维护一下位置. #include<bits/stdc++.h> #include <bits/extc++.h> #define LL long lo ...