美文网首页
Java 11 新特性

Java 11 新特性

作者: 文歆云 | 来源:发表于2018-10-09 18:01 被阅读0次

    概述

    Java 11(JDK 11)是一个长期支持的版本,这是Java 8以来首个长期支持的版本,Java 9 和 Java 10的发间隔上个版本都是非常短的,这次Java 11终于顿了顿,让我们还在用Jdk 1.5的伙伴喘口气。

    这次Java 11实际上经过了一次瘦身,移除了诸如Java Fx,Java MissionControl等内容,这导致JDK 11的安装文件大小是JDK 10的45%左右,JDK10.0.2的Windows大小是390MB,而JDK 11的大小是150MB。

    从Java 11起不再单独发布JRE 和 Server JRE了。

    另外Java 11及之后的版本,将不会再发布对32位操作系统支持的版本。API也有一些变动,笔者目前只看到了String的变动,诸如添加了isBlank,strip等方法。

    JEP

    1. JEP 327 Unicode 10:支持了Unicode 10,

    2. JEP 321 HTTP Client (Standard):内置了一个HttpClient,想起了一些陈年旧事,那年我才16岁第一个学的库就是Apache的HttpClient,为了一些邪恶的事情HH。下面我研究了个Demo,大家感受下。

    HttpClient client = HttpClient.newBuilder() 
            .version(HttpClient.Version.HTTP_1_1) 
            .connectTimeout(Duration.ofSeconds(3)) 
            .build(); 
    
    HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://www.baidu.com")).build(); 
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); 
    System.out.println(response.statusCode());    // 200
    System.out.println(response.body());          // 百度页面的html
    
    1. JEP 333 ZGC A Scalable Low-Latency Garbage Collector (Experimental) 添加了一个ZGC垃圾收集器,Java11 使用的默认垃圾收集器还是G1,这个ZGC由于后面的Experimental 所以默认并不启用,照官方原话所说,ZGC要实现三个特点:1. 停止时间不会超过十秒 这说的应该是stop the world的时间。2.暂停时间绝不会变。3.可以处理各种大小的堆区,这个垃圾收集器是单代的,官方的数据下是吞吐量和stop-the-world的时间是完虐G1的,后续这玩意会不会被扶上皇位笔者现在就不能妄言了。

    2. JEP 318 Epsilon, A No-Op Garbage Collector 处理内存分配了垃圾收集器,并不负责回收。

    3. JEP 331 Low-Overhead Heap Profiling 低开销堆内存分配管理,对于堆内存管理的一个优化。

    4. JEP 181 Nest-Based Access Control 嵌套控制访问。

    5. JEP 324 Key Agreement with Curve25519 and Curve448 兼容Curve25519与Curve448的密钥交换,支持了两个新的曲线加密算法。

    6. JEP 329 ChaCha20 and Poly1305 Cryptographic Algorithms 支持了两个新的加密算法。

    7. JEP 332 Transport Layer Security (TLS) 1.3 实现传输层安全性(TLS)协议

    8. JEP 323: Local-Variable Syntax for Lambda Parameters 局部语法变量的lambda。

            lst.forEach((var x) -> {        // 就笔者目前看到的内容是允许这里加一个var,目的是为了和局部变量保持一致性!
                System.out.print(x);
            });
    
    1. JEP 330 Launch Single-File Source-Code Programs 启动单个文件源程序代码,从前运行Java文件要两个步骤,1:Javac HelloWorld.java,2:Java HelloWorld,现在只需要Java HelloWorld.java就可以了,这个命令会直接找main方法,笔者发现这个命令可以直接跑起来我们指定的源码内容,甚至不在乎公共类名是否和文件名相同,而且可以连包名都忽略了。

    我的博客正在更新一个Java 11的新手教程,欢迎有兴趣的新玩家入坑:http://www.gaowenhao.cn

    相关文章

      网友评论

          本文标题:Java 11 新特性

          本文链接:https://www.haomeiwen.com/subject/rqeyaftx.html