什么?JDK11发布了?学不动了啊!

Posted ImportSource

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么?JDK11发布了?学不动了啊!相关的知识,希望对你有一定的参考价值。


我知道你学不动了,但还是很平静的告诉你,jdk11发布了。没错,就是昨天,2018年9月25日,它,发布了。


相信你之前已经在本号里学到了不少JDK11的新特性,我们这个号的特点就是爱学习。


什么?JDK11发布了?学不动了啊!


还是来宣布一下JDK11新增的主要功能吧。


1、引入了ZGC(实验性质)


这个真的很变态,好好看看链接中的内容


2、


3、Epsilon: 一个啥也不干的垃圾收集器( No-Op Garbage Collector)


这个有什么用呢?就是可以用来测试你的代码。因为根本不进行任何回收,所以你可以清楚的了解到你的代码的内存占用情况。可以用来做一些性能测试之类的。


4、HTTP Client (Standard)


这个HTTP Client在JDK9中就有了,只不过那会还是孵化阶段(Incubating)。 HTTP Client采用了全新的设计,基于Reactive Streams 标准(Java 9 自带了一个 Flow 接口,Copy了 Reactive Streams规范接口)。


5、告别Java EE和CORBA


什么?JDK11发布了?学不动了啊!


发现没?Java EE和CORBA被冷落了,大势所趋。另外Nashorn也被弃用了。Nashorn是一个用java语言编写的js引擎,听听是不是很酷,这个引擎于2011被发布,如今要离我们而去了。


6、Fight Recorder


是一个全新的可以帮你跟踪和分析java应用程序和hotspot jvm等的一个记录仪。它内部把数据作为事件,然后提供了一套api,可以用来produce和consumer数据(事件)的api。它提供了操作系统层面、hotspot jvm以及java库的事件。并且还支持对这些事件进行配置和过滤。是不是很不错。


7、支持启动单文件源码程序(Launch Single-File Source-Code Programs)


以后你可以不用先编译(javac)再启动(java)了,jdk11以后直接通过java Helloworld.java就可以启动了。


8、var可以用到Lambda的参数里了(Local-Variable Syntax for Lambda Parameters)。


在jdk10中你可以对局部变量使用var这种隐藏类型了,就像js一样。


jdk11以后连lambda参数中也可以使用var了。


如下:


(var x, var y) -> x.process(y)


  或者干脆省略掉var符号


(x, y) -> x.process(y)


9、低开销的堆分析工具(Low-Overhead Heap Profiling)


现在不是已经开发出来很多的堆分析工具嘛。比如前面提到的Flight Recorder,以及常用的jmap、YourKit、VisualVM。


但他们都没有直接告诉你出问题的具体位置,需要你自己去慢慢分析,现在这个Low-Overhead Heap Profiling希望给你提供一个直接定位到出事位置的工具。


这个工具内部提供了可扩展的JVMTI接口,该接口允许用户自定义采样(sampler)间隔,然后返回一组实时的堆栈跟踪信息。


10、另外还新增了一些比较实用的方法。如下:


String


  1. lines 通过行分隔符获取到数组。

    "test\nhoge\n".lines().map(String::toUpperCase).toArray();

    ==> Object[2] { "TEST", "HOGE" }

  2. repeat(int) 按照指定的次数重复字符串。

    "test".repeat(3) ;

    ==> "testtesttest"

  3. isBlank()  判断是否为空

    " ".isBlank();

    ==> true

  4. strip()/stripLeading()/stripTrailing()j基本上和trim一样,但空字符串判断使用的是Character.isWhiteSpace(int) 。


Charactor


  1. toString(int) 

    Character.toString(65);

    ==>"A"


Path


of(String, String...) 以前使用Paths.get()来获取,现在我们可以像其他类一样使用of了。


Files


  1. writeString(Path, CharSequence) 直接向指定文件写入一个字符串。

       Files.writeString(Path.of("test.txt"), "Hello!!!");

       ==> test.txt

   b.readString(Path) 读取一个字符串。

       Files.readString(Path.of("test.txt"));

       ==>Hello!!!

       

Collection

    

    a.toArray(IntFunction) 

    

之前我们这样转list.toArray(new String[list.size())]),现在直接这样转:


List.of("aa","bb").toArray(String[]::new)

==> String[2] { "aa", "bb" }




相关链接:





以上是关于什么?JDK11发布了?学不动了啊!的主要内容,如果未能解决你的问题,请参考以下文章

前端学不动了怎么办?3年,5年,10年,都需要规划!

前端学不动了怎么办?3年,5年,10年,都需要规划!

Redis 7.0 正式发布,新增近 50 个新命令,这次真的学不动了。。

Redis 7.0 正式发布,新增近 50 个新命令,这次真的学不动了。。

学不动了!476个PyTorch资源大合集推荐,GitHub超过3600星

我学不动了...