Java11的新特性

Java语言特性系列

本文主要讲述一下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

特性列表

细项解读

上面列出的是大方面的特性,除此之外还有一些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<String> 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


code-craft
spring boot , docker and so on 欢迎关注微信公众号: geek_luandun

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
0 条评论
推荐阅读
mac使用podman替代docker
序本文主要记录一下使用podman替代docker的过程安装podman {代码...} 或者去[链接]下载对应的pkgpodman compose {代码...} 或者 {代码...} 使用machine {代码...} init添加-v来挂载宿主机的文件夹到machinecompos...

codecraft阅读 164

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 27.4k评论 1

一文彻底搞懂加密、数字签名和数字证书!
微信搜索🔍「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍来源:个人CS学习网站:[链接]前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视...

编程指北71阅读 33.5k评论 20

Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft13阅读 21.7k

Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft20阅读 15.3k

Java13的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft17阅读 11.2k

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
宣传栏