资讯专栏INFORMATION COLUMN

Java11的新特性

April / 1498人阅读

摘要:从版本开始,不再多带带发布或者版本了,有需要的可以自己通过去定制官方解读官方细项解读稳步推进系列六的小试牛刀一文读懂的为何如此高效弃用引擎

Java语言特性系列

Java5的新特性

Java6的新特性

Java7的新特性

Java8的新特性

Java9的新特性

Java10的新特性

Java11的新特性

Java12的新特性

Java13的新特性

本文主要讲述一下Java11的新特性

版本号
java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

General-Availability Release版本是基于tag为jdk-11+28的版本编译

从version信息可以看出是build 11+28

特性列表

181: Nest-Based Access Control

相关解读Java Nestmate稳步推进,Specification for JEP 181: Nest-based Access Control
简单的理解就是Class类新增了getNestHost,getNestMembers方法

309: Dynamic Class-File Constants

相关解读Specification for JEP 309: Dynamic Class-File Constants (JROSE EDITS)
jvm规范里头对Constant pool新增一类CONSTANT_Dynamic

315: Improve Aarch64 Intrinsics

对于AArch64处理器改进现有的string、array相关函数,并新实现java.lang.Math的sin、cos、log方法

318: Epsilon: A No-Op Garbage Collector

引入名为Epsilon的垃圾收集器,该收集器不做任何垃圾回收,可用于性能测试、短生命周期的任务等,使用-XX:+UseEpsilonGC开启

320: Remove the Java EE and CORBA Modules(重磅)

将java9标记废弃的Java EE及CORBA模块移除掉,具体如下:(1)xml相关的,java.xml.ws, java.xml.bind,java.xml.ws,java.xml.ws.annotation,jdk.xml.bind,jdk.xml.ws被移除,只剩下java.xml,java.xml.crypto,jdk.xml.dom这几个模块;(2)java.corba,java.se.ee,java.activation,java.transaction被移除,但是java11新增一个java.transaction.xa模块

321: HTTP Client (Standard)(重磅)

相关解读java9系列(六)HTTP/2 Client (Incubator),HTTP Client Examples and Recipes,在java9及10被标记incubator的模块jdk.incubator.httpclient,在java11被标记为正式,改为java.net.http模块。

323: Local-Variable Syntax for Lambda Parameters

相关解读New Java 11 Language Feature: Local-Variable Type Inference (var) extended to Lambda Expression Parameters
允许lambda表达式使用var变量,比如(var x, var y) -> x.process(y),如果仅仅是这样写,倒是无法看出写var有什么优势而且反而觉得有点多此一举,但是如果要给lambda表达式变量标注注解的话,那么这个时候var的作用就突显出来了(@Nonnull var x, @Nullable var y) -> x.process(y)

324: Key Agreement with Curve25519 and Curve448

使用RFC 7748中描述的Curve25519和Curve448实现key agreement

327: Unicode 10

升级现有的API,支持Unicode10.0.0

328: Flight Recorder

相关解读Java 11 Features: Java Flight Recorder
Flight Recorder以前是商业版的特性,在java11当中开源出来,它可以导出事件到文件中,之后可以用Java Mission Control来分析。可以在应用启动时配置java -XX:StartFlightRecording,或者在应用启动之后,使用jcmd来录制,比如
$ jcmd  JFR.start
$ jcmd  JFR.dump filename=recording.jfr
$ jcmd  JFR.stop

329: ChaCha20 and Poly1305 Cryptographic Algorithms

实现 RFC 7539的ChaCha20 and ChaCha20-Poly1305加密算法

330: Launch Single-File Source-Code Programs(重磅)

相关解读Launch Single-File Source-Code Programs in JDK 11
有了这个特性,可以直接java HelloWorld.java来执行java文件了,无需先javac编译为class文件然后再java执行class文件,两步合成一步

331: Low-Overhead Heap Profiling

通过JVMTI的SampledObjectAlloc回调提供了一个开销低的heap分析方式

332: Transport Layer Security (TLS) 1.3(重磅)

支持RFC 8446中的TLS 1.3版本

333: ZGC: A Scalable Low-Latency Garbage Collector(Experimental)(重磅)

相关解读JDK11的ZGC小试牛刀,一文读懂Java 11的ZGC为何如此高效

335: Deprecate the Nashorn JavaScript Engine

相关解读Oracle弃用Nashorn JavaScript引擎,Oracle GraalVM announces support for Nashorn migration
废除Nashorn javascript引擎,在后续版本准备移除掉,有需要的可以考虑使用GraalVM

336: Deprecate the Pack200 Tools and API

废除了pack200以及unpack200工具以及java.util.jar中的Pack200 API。Pack200主要是用来压缩jar包的工具,不过由于网络下载速度的提升以及java9引入模块化系统之后不再依赖Pack200,因此这个版本将其移除掉。
细项解读

上面列出的是大方面的特性,除此之外还有一些api的更新及废弃,主要见What"s New in JDK 11 - New Features and Enhancements以及90 New Features (and APIs) in JDK 11,这里举几个例子。

添加项

Collection.toArray(IntFunction)

    @Test
    public void testCollectionToArray(){
        Set names = Set.of("Fred", "Wilma", "Barney", "Betty");
        String[] copy = new String[names.size()];
        names.toArray(copy);
        System.out.println(Arrays.toString(copy));
        System.out.println(Arrays.toString(names.toArray(String[]::new)));
    }
Collection类新增toArray(IntFunction)的default方法,可以直接通过传入IntFunction告知要转换的目标类型

String.strip

    @Test
    public void testStrip(){
        String text = "  u2000a  b  ";
        Assert.assertEquals("a  b",text.strip());
        Assert.assertEquals("u2000a  b",text.trim());
        Assert.assertEquals("a  b  ",text.stripLeading());
        Assert.assertEquals("  u2000a  b",text.stripTrailing());
    }
java11对String类新增了strip,stripLeading以及stripTrailing方法,除了strip相关的方法还新增了isBlank、lines、repeat(int)等方法

添加了Google Trust Services GlobalSign Root Certificates

添加了GoDaddy Root Certificates

添加了T-Systems, GlobalSign and Starfield Services Root Certificates

添加了Entrust Root Certificates

移除项

移除了com.sun.awt.AWTUtilities

移除了sun.misc.Unsafe.defineClass,使用java.lang.invoke.MethodHandles.Lookup.defineClass来替代

移除了Thread.destroy()以及 Thread.stop(Throwable)方法

移除了sun.nio.ch.disableSystemWideOverlappingFileLockCheck、sun.locale.formatasdefault属性

移除了jdk.snmp模块

移除了javafx,openjdk估计是从java10版本就移除了,oracle jdk10还尚未移除javafx,而java11版本则oracle的jdk版本也移除了javafx

移除了Java Mission Control,从JDK中移除之后,需要自己多带带下载

移除了这些Root Certificates :Baltimore Cybertrust Code Signing CA,SECOM ,AOL and Swisscom

废弃项

废弃了Nashorn JavaScript Engine

废弃了-XX+AggressiveOpts选项

-XX:+UnlockCommercialFeatures以及-XX:+LogCommercialFeatures选项也不再需要

废弃了Pack200工具及其API

小结

java11是java改为6个月发布一版的策略之后的第一个LTS(Long-Term Support)版本(oracle版本才有LTS),这个版本最主要的特性是:在模块方面移除Java EE以及CORBA模块,在JVM方面引入了实验性的ZGC,在API方面正式提供了HttpClient类。

从java11版本开始,不再多带带发布JRE或者Server JRE版本了,有需要的可以自己通过jlink去定制runtime image

doc

JDK11

JDK11 Features

Introducing Java SE 11(官方解读)

JDK 11 Release Notes(官方细项解读)

What is new in Java 11 ?

Java Nestmate稳步推进

Specification for JEP 181: Nest-based Access Control

Specification for JEP 309: Dynamic Class-File Constants (JROSE EDITS)

Java 11 Features: Java Flight Recorder

java9系列(六)HTTP/2 Client (Incubator)

Java 11: Standardized HTTP Client API

java.net.http javadoc

HTTP Client Examples and Recipes

New Java 11 Language Feature: Local-Variable Type Inference (var) extended to Lambda Expression Parameters

JDK11的ZGC小试牛刀

一文读懂Java 11的ZGC为何如此高效

Oracle弃用Nashorn JavaScript引擎

Oracle GraalVM announces support for Nashorn migration

JDK 11: New Default Collection Method toArray(IntFunction)

90 New Features (and APIs) in JDK 11

APIs To Be Removed from Java 11

Java 11 String API Updates

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77285.html

相关文章

  • Java12的新特性

    摘要:的这个特性新增了两个参数分别是及,设置为的话,表示禁用。语法层面引入了版本的层面引入了,引入,让支持,对等新增方法方面引入了版本的,不过的没有另外主要对及进行了改进其中对支持了,默认是开启,使用可以禁用对于则新增支持以及特性 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新...

    liujs 评论0 收藏0
  • 即将到来的java11的新特性

    摘要:将摒弃的部分将移除和最近更名为模块同时也会移除新增功能垃圾收集器被称为收集器,将处理内存分配而不实施任何实际的内存回收机制。统计下目前的垃圾收集器,允许在声明隐式类型的表达式的形式参数时使用类文件格式将被扩展为支持一个新的常量池形式。 java11将摒弃的部分 Java 11 将移除 CORBA 和 Java EE(最近更名为 Jakarta EE)模块同时也会移除 JavaFX ja...

    jubincn 评论0 收藏0
  • Java6的新特性

    摘要:语言特性系列的新特性的新特性的新特性的新特性的新特性的新特性的新特性的新特性的新特性序本文梳理了下的新特性,相对于而言,的特性显得少些,分量也不那么重,相当于是,有点像。 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性 序...

    leeon 评论0 收藏0
  • Java9的新特性

    摘要:新特性概述系列一安装及使用系列二运行系列三模块系统精要系列四更新系列五系列六系列七系列八系列九与的区别迁移注意事项参数迁移相关选项解析使用构建实例使用示例带你提前了解中的新特性 Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...

    ddongjian0000 评论0 收藏0
  • 聊聊 Java8 以后各个版本的新特性

    摘要:于是抽时间看了看以后各个版本的特性,做了一个总结。年和公开版本发布,取名为。此后对应版本就是,。发布,是一个重大版本更新。在此之后,就是每六个月发布一次新版本。以上和参考资料聊了一些关于的历史,下面我们看看各个版本有那些新特性。 【这是 ZY 第 11 篇原创技术文章】 某天在网上闲逛,突然看到有篇介绍 Java 11 新特性的文章,顿时心里一惊,毕竟我对于 Java 的版本认识...

    K_B_Z 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<