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