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

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

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

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

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

这个真的很变态,好好看看链接中的内容ZGC回收器到底有多变态?

2、JDK11中增加了一个常量池类型:CONSTANT_Dynamic

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

发现没?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" }

原文发布于微信公众号 - ImportSource(importsource)

原文发表时间:2018-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安恒网络空间安全讲武堂

赛前福利②最新2018HITB国际赛writeup

FIRST 距离“西湖论剑杯”全国大学生网络空间安全技能大赛只有9天啦! 要拿大奖、赢offer,那必须得来点赛前练习定定心啊~这不,讲武堂就拿到了2018HI...

34540
来自专栏枕边书

设计模式,Let's “Go”! (上)

前言 最近读了《Head First 设计模式》,每天早上看一章,学习一个设计模式,做些笔记,然后晚上抽空用刚学习的 Go 语言实现一下。半个月下来书读完了,留...

20050
来自专栏我杨某人的青春满是悔恨

设计模式之结构型模式(上)

GoF 归纳整理的23个设计模式依据其目的可以分为创建型(Creational)、结构型(Structural)和行为型(Behavioral)三种。关于创建型...

10030
来自专栏北京马哥教育

shell十三问,为linux学习打基础(二)

本文整理并转自CU上的帖子[学习共享] shell 十三問?,此贴是2003年发表的,但却是相当不错的linux基础知识汇集贴,原帖主使用的台湾风格,本文加以简...

40340
来自专栏Pythonista

Python之路,Day1 - Python基础1

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解...

21850
来自专栏Python自动化测试

selenium框架浅谈

我们知道,selenium是一个很优秀的web框架,提供了很丰富的API,使用它结合进行做web的自动化测试真的很完美,但是在实际的情况中,理想与现实...

14230
来自专栏我杨某人的青春满是悔恨

委托与回调函数

这一段Swift代码稀疏平常,平常到可能有的同学从未想过这段代码背后做了什么。这里其实使用了一个同样稀疏平常却广为流传的设计模式——delegate模式。Del...

19430
来自专栏H2Cloud

python的解释器spython介绍

Python解释器spython介绍 简介   出于个人爱好和某种需求,我再16年对python的解释器产生了浓厚兴趣,并且下定决心重新实现一个版本。我个人再游...

41450
来自专栏Java架构

2018年Java程序员最新BAT面试题

39060
来自专栏walterlv - 吕毅的博客

迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference)

发布于 2017-12-18 13:41 更新于 2017-12...

12120

扫码关注云+社区

领取腾讯云代金券