JDK新特性之 JDK11

前言

2018年9月25日,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,
可在生产环境中使用,按照 Oracle 公布的支持路线图,Java 11 将会获得 Oracle 提供的长期支持服务,直至2026年9月。
这是java8之后,另一个可以直接升级生产的jdk版本

字符串新API

    @Test
    public void test01(){
        String str01="  \n hou  zheng  \r\n  ";
        String str02="   \t   \r\n   ";
        str02.isBlank();// 判断字符串是否为空白,包括空格换行符等都是空白
        "".isEmpty();//只会判断空字符串
        /**
         * trim与strip区别,trim只能取消码值小于等于32的,即英文的空格,汉字的无法去除
         * 而strip更强大,可以去除任何语言的空白字符
         */
        str01.strip();//去重字符串首尾空白
        str01.stripLeading();//去重首部空白
        str01.stripTrailing();//去重尾部空白
        String str03="ha";
        //复制字符串,0返回n空字符串""
        System.out.println(str03.repeat(2));
        System.out.println(str03.repeat(0).equals(""));//true
        String str04="hou \n zheng \n";
        //lines:返回Stream流,可求行数
        System.out.println(str04.lines().count());
    }

Optional新API

    @Test
    public void test02(){
        var optional = Optional.ofNullable(null);
        //新提供:
        optional.orElseThrow();//为空抛异常
        //不为bull消费数据,存在执行另一个线程
        optional.ifPresentOrElse(x-> System.out.println("数据:"+x),()-> System.out.println("数据不存在"));
    }

HTTP客户端API

jdk9引入,jdk11正式使用

    @Test
    public void test03() throws Exception {
        var httpClient = HttpClient.newHttpClient();
        //同步调用接口
        var httpResponse = httpClient.send(
                HttpRequest.newBuilder(URI.create("http://localhost:8080/name")).GET().build(),
                HttpResponse.BodyHandlers.ofString());
        httpResponse.body();
        httpResponse.statusCode();
        //异步发送消息,立即返回结果Future
        CompletableFuture<HttpResponse<String>> httpResponseCompletableFuture =
                httpClient.sendAsync(HttpRequest.newBuilder(URI.create("")).
                                POST(HttpRequest.BodyPublishers.ofString("参数")).
                                setHeader("","").build(),
                HttpResponse.BodyHandlers.ofString());
        httpResponseCompletableFuture.get();//阻塞获取
    }

新垃圾收集器(还在试验阶段)

等正式进入生产了再进行学习吧

完全支持linux容器(包括Docker)

开源FightRecorder


使用:
配置jvm参数: -XX:StartFilghtRecording
或者使用jcmd:
jcmd 进程号 JFR.start 开启
jcmd 进程号 JFR.dunmp filename=test.jfr name=1 下载,name用来区分文件
jcmd 进程号 JFR.stop 停止

注意: jfr文件(二进制)jdk11没有提供查看,jdk12提供jfr命令可以直接查看这个文件

posted @ 2021-08-14 20:46  侯小厨  阅读(974)  评论(0编辑  收藏  举报
Fork me on Gitee