Java 11新功能抢先了解
目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布。本文介绍 Java 11 的新功能。
根据Oracle新出台的每6个月发布一次Java SE的节奏,Java 11将于2018年9月发布,迄今为止Oracle已经宣布了好几个新功能。
此外,Java 11还将删除一些功能,其中包括删除CORBA和Java EE(最近更名为Jakarta EE)模块,以及删除JavaFX。
与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11。Oracle直到2023年9月都会为JDK 11提供一级支持,而补丁和安全警告等扩展支持将延续到2026年。新的长期支持版本每三年发布一次,根据后续的发行计划,JDK 17将于2021年发布。
Java 11 JDK中已计划的新功能
目前来看,JDK 11已有九个已经确认的新功能,而且还有更多新功能仍在考虑之中。计划的新功能包括:
- HTTP客户端(标准),这个功能于JDK 9中引入并在JDK 10中得到了更新,现在终于转正了。该API通过CompleteableFutures提供非阻塞请求和响应语义,可以联合使用以触发相应的动作。自从JDK 9和10中引入该功能后,JDK 11完全重写了该功能,现在其实现完全是异步的。RX Flow的概念也得到了实现,这样就无需为了支持HTTP/2而创造许多概念了。现在,在用户层请求发布者和响应发布者与底层套接字之间追踪数据流更容易了。这降低了复杂性,并最大程度上提高了HTTP/1和HTTP/2之间的重用的可能性。
- Epsilon垃圾回收器,被称为“no-op”回收器,它仅负责内存分配,却没有实现任何实际的内存回收机制。Epsilon回收器可以用于性能测试、内存压力测试和虚拟机接口。它还可以用于短生命周期的任务。
- lambda参数的局部变量语法,可以消除隐含类型表达式中正式参数定义的语法与局部变量定义语法的不一致。这样就能在隐含类型的lambda表达式中定义正式参数时使用var了。
- Java的类文件格式将被扩展,以支持新的常量池,CONSTANT_Dynamic。其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。
- 采用Curve25519和Curve448加密的密钥交换比现有的Diffie-Hellman椭圆曲线密钥交换方式更有效、更安全。根据IETF的资料,Curve25519和Curve448两种椭圆曲线采用常量时间的实现方式,以及不会发生异常的数乘实现,能更好地抵抗各种旁路攻击,包括时序攻击、缓存攻击等。该提案的目标是为密钥交换方法提供一个API和实现,同时开发一个平台无关、纯Java的的实现。由于该提案采用了复杂且精密的模算数,因此还是有风险的。
- 飞行记录仪(Flight Recorder)将提供低开销的数据收集框架,用来调试Java应用程序和HotSpot JVM。飞行记录仪是Oracle的商业版JDK的功能,但在JDK 11中,其代码将移动到公开代码库中,这样所有人都能使用该功能了。Iclouded将作为API,以事件的形式产生或消耗数据,同时提供缓存机制、二进制数据工具,同时支持配置和事件过滤。该提案还提议为OS、HotSpot和JDK库提供事件。
- 更新platform API以支持Unicode版本10.0,从而使Java跟上潮流。预计以下的类将支持:
- lang包中的Character和String
- awt.font包中的NumericShaper
- text包中的Bidi、BreakIterator和Normalizer
- 实现ChaCha20和Poly1305加密算法。ChaCha20是种相对较新的流加密算法,能代替旧的、不安全的R4流加密。ChaCha20将与Poly1305认证算法配对使用。ChaCha20和ChaCha20-Poly1305加密实现将通过crypto.CipherSpi API于SunJCE(Java加密扩展)中提供。
- 增强Java启动器,使之能够运行单一文件的Java源代码,使得应用程序可以直接从源代码运行。单文件程序常见于小型工具,或开发者初学Java时使用。而且,单一源代码文件有可能会编译成多个类文件,这会增加打包开销。由于这些原因,在运行程序之前进行编译,已成为了不必要的步骤。
Java JDK 11仍在开发中的新功能
Java 11的创建者们还在考虑几个对JDK 11的变更或新功能的提案:
- 给Java添加raw字符串字面值。这样可以更容易地以人类可阅读的形式书写字符序列,而无需特殊的Java标记。这样也能更容易地将非Java语法的字符串提供给Java使用,还能支持多行字符串,而无需使用特殊的标记。
- 扩展switch语句,使之能作为语句或表达式使用。这样还能改进switch处理null值的方式。这些改动可以简化编程,同时为switch支持模式匹配做准备。
- 嵌套的访问控制,对应于Java当前的嵌套类型。嵌套可以让逻辑上属于同一代码实体但被编译到不同的类文件中的类互相访问对方的私有成员,而无需让编译器插入扩大访问权限的方法。
JDK 11删除的功能
Java EE和CORBA模块从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每年两次的更新无关。
Java架构师学习公众号!
一个专注分享架构干货的微信公众号
Java 11新功能抢先了解的更多相关文章
- Java 11 新功能来了!
关键时刻,第一时间送达! 目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出 ...
- Java 14 新功能介绍
不做标题党,认认真真写个文章. 文章已经收录在 Github.com/niumoo/JavaNotes 和未读代码博客,点关注,不迷路. Java 14 早在 2019 年 9 月就已经发布,虽然不是 ...
- 超详细 Java 15 新功能介绍
点赞再看,动力无限.微信搜「程序猿阿朗 」,认认真真写文章. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Java 15 在 2 ...
- Java 16 新功能介绍
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. Ja ...
- Java 17 新功能介绍(LTS)
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...
- Kafka 0.11新功能介绍:空消费组延迟rebalance
Kafka 0.11新功能介绍:空消费组延迟rebalance 在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer inst ...
- Java 19 新功能介绍
点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Java 19 在2022 年 9 ...
- 【整理】Java 11新特性总结
闲语 2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11.Oracle直到2023年9月都会为 ...
- Java 11 新特性介绍
Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...
随机推荐
- js 屏蔽政治关键字
一般情况下,用户输入评论提交到后台的同时,在后台进行关键字过滤,昨天看到了一个js关键字过滤的方法,记录下. 方法很简单,先把需要过滤的关键字做成数组, 在for循环数组判断有没有匹配. ok,先来个 ...
- tensorflow卷积神经网络-【老鱼学tensorflow】
前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...
- labview下载地址
ftp://ftp.ni.com/evaluation/labview/ekit/other/downloader
- Virtual box中Ubuntu虚拟机磁盘碎片整理和空间清理方法
虚拟机中,随着不断的使用,增加大文件(例如日志,视频和软件版本),虽然在虚拟机中手动删除了,但是虚拟机占用的空间并不会随之减少,需要手动清理一下. 这里介绍一种Virtual box中Ubuntu碎片 ...
- XFire+Spring构建Web Service经验总结
使用工具 MyEclipse:6.5 ,tomcat6.x. 1.新建web项目,要导入用的包: 2程序结构: 3 web.xml配置文件 <?xml version="1.0&quo ...
- Springmvc 横向源码原理解析(原创)
1.springmvc的基本流程(不多赘述) 2.主要涉及到的类 //该方法返回HandlerExecutionChain 类 并不是直接返回handler 是因为在HandlerExecutionC ...
- Exp1 PC平台逆向破解 20164302 王一帆
1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程 ...
- lua_table 学习
lua table (表) Table 的常用操作 local fruits = {“aaa”,”bbb”,”ccc”,”ddd”,”eee”,”fff”,”ggg”} table.co ...
- css3 图片阴影
box-shadow:1px 2px 4px #999999; 效果:
- Xmanager6 下载地址
Xmanager-6标准版下载地址 http://xiazai.xshellcn.com/trial/Xmanager-6.0.0080_yy.exe Xmanager-6企业版下载地址 http:/ ...