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每年两次的更新无关。
原文:https://www.infoworld.com/article/3265447/java/java-11-roadmap-the-new-features-you-can-expect.html
译者:弯月,责编:言则
Java 11 新功能来了!的更多相关文章
- Java 11新功能抢先了解
目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出台的每6个月发布一次Jav ...
- 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 的版本发布周期调整为每六个月一次——即每半年发布一个 ...
随机推荐
- Python--简单接口测试实例(一)
适用人员:初学python的测试人员,若对抓包不太清楚的可先学习抓包的知识 接口测试流程:发送请求-->返回响应-->结果判定-->生成报告 案例:下面以[今目标]新建客户为例来进行 ...
- GPU计算的十大质疑—GPU计算再思考
http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...
- PyQt5实现界面跳转
网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下 一.首先是主界面 1 # -*- coding: utf-8 -*- # Form implementatio ...
- 关于Python的super用法研究
一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(se ...
- 学习笔记 C++ 链表
今天查了不少关于链表的资料大概理解了链表,为记录只用留笔于此. 链表概述:动态的数据存储单元,可以比数组更加灵活. 链表的组成:存储的数据,下一个节点. 首先让我们用代码完成一个节点. class N ...
- QPropertyAnimation实现图形,控件的旋转和位移动画,尤其是旋转
QPropertyAnimation可以简单方便的实现对象的旋转和移动的动画效果. 1. 移动 Pixmap *item = new Pixmap(kineticPix); QPropertyAnim ...
- 并发库应用之五 & ReadWriteLock场景应用
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象.两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象. 读写锁:分为读 ...
- echarts--迁徙图特性简介
$(function() { loadMapData(); //页面加载时调用封装加载echarts地图的函数});function loadMapData (cityName) { if ...
- mysql的内建日期处理函数
下面的表格列出了MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期 ...
- linux Tcpdump使用方法
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的&qu ...