java11

编程

01. JShell。(java9开始支持)

02. Dynamic Class-File Constants类文件新添的一种结构

03. 局部变量类型推断(var关键字)。(java10 开始支持)

04. 新加的一些更实用的API

05. 移除的一些其他内容

06. 标准Java异步HTTP客户端。

07. 更简化的编译运行

08. Unicode 10

09. Remove the JavaEE and CORBA Moudles

10. JEP : 335 : Deprecate the Nashorn JavaScript Engine

11. JEP : 336 : Deprecate the Pack200 Tools and API

12. 新的Epsilon垃圾收集器。

13. 新的ZGC垃圾收集器

14. 完全支持Linux容器(包括Docker)。

15. 支持G1上的并行完全垃圾收集。

16. 免费的低耗能堆分析仪。

17. JEP 329 : 实现ChaCha20和Poly1305两种加密算法

18. 新的默认根权限证书集。

19. JEP 332最新的HTTPS安全协议TLS 1.3。

20. Java Flight Recorder 飞行记录仪

 

1. JShell。

用过Python的童鞋都知道,Python 中的读取-求值-打印循环( Read-Evaluation-Print Loop )很方便。它的目的在于以即时结果和反馈的形式。

java9引入了jshell这个交互性工具,让Java也可以像脚本语言一样来运行,可以从控制台启动 jshell ,在 jshell 中直接输入表达式并查看其执行结果。当需要测试一个方法的运行效果,或是快速的对表达式进行求值时,jshell 都非常实用。

除了表达式之外,还可以创建 Java 类和方法。jshell 也有基本的代码完成功能。我们在教人们如何编写 Java 的过程中,不再需要解释 “public static void main(String [] args)” 这句废话。

 

02. Dynamic Class-File Constants类文件新添的一种结构

Java的类型文件格式将被拓展,支持一种新的常量池格式:CONSTANT_Dynamic,加载CONSTANT_Dynamic会将创建委托给bootstrap方法。

目标

其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。

 

03. 局部变量类型推断(var ”关键字”)。

什么是局部变量类型推断?

var javastack = "javastack";

System.out.println(javastack);

大家看出来了,局部变量类型推断就是左边的类型直接使用 var 定义,而不用写具体的类型,编译器能根据右边的表达式自动推断类型,如上面的 String 。

var javastack = "javastack";

就等于:String javastack = "javastack";

在声明隐式类型的lambda表达式的形参时允许使用var

使用var的好处是在使用lambda表达式时给参数加上注解

(@Deprecated var x, @Nullable var y) -> x.process(y);

var 语法 : 局部变量的类型推断.

注意点 :

1) var a; 这样不可以, 因为无法推断.

2) 类的属性的数据类型不可以使用var.

有参数的lambda表达式使用

函数式接口 :

Consumer<T> : 消费型函数式接口.

public void accept(T t);

Consumer<String> consumer = t -> System.out.println(t.toUpperCase());

Consumer<String> consumer = (var t) -> System.out.println(t.toUpperCase());

错误的形式: 必须要有类型, 可以加上var

Consumer<String> consumer = (@Deprecated t) -> System.out.println(t.toUpperCase());

正确的形式:

Consumer<String> consumer = (@Deprecated var t) -> System.out.println(t.toUpperCase());

 

 

 

以上是 java11 的全部内容, 来源链接: utcz.com/z/511002.html

回到顶部