Java 11新特性使用

洼地云 tuoyidashi.png

从Java 11开始,Oracle JDK不再可以免费的用于商业用途,但不限制个人使用。

可免费用于生产的Open JDK官网:https://openjdk.org/

一、String API

1.1 isBlank()

// 判空,blank里我放入了全角空格,半角空格,TAB
String blank = "    ";
System.out.println(blank.isBlank());

1.2 lines()

// lines 返回一个 Stream
String line = "优米格\n官方\nhttps://www.4spaces.org";
Stream<String> lines = line.lines();
// 使用 lambda 遍历
lines.forEach(System.out::println);

1.3 repeat()

// 复制字符串
String repeat = "优米格-https://www.4spaces.org;";
String repeat3 = repeat.repeat(3);
System.out.println(repeat3);

1.4 strip()

// 去除前后空白
String strip = "     https://www.4spaces.org  ";
System.out.println("==" + strip.trim() + "==");
// 去除前后空白字符,如全角空格,TAB
System.out.println("==" + strip.strip() + "==");
// 去前面空白字符,如全角空格,TAB
System.out.println("==" + strip.stripLeading() + "==");
// 去后面空白字符,如全角空格,TAB
System.out.println("==" + strip.stripTrailing() + "==");

二、File API

2.1 写文件、读文件、创建临时文件

// 创建临时文件
Path path = null;
try {
    path = Files.writeString(Files.createTempFile("file", ".json"), "https://www.4spaces.org");
    System.out.println(path);
    // 读取文件
    String s = Files.readString(path);
    System.out.println(s);
} catch (IOException e) {
    throw new RuntimeException(e);
}

三、JEP 321 – HTTP Client标准化支持

在Java 11中Http Client API得到了标准化的支持。且支持 HTTP/1.1 和 HTTP/2 ,也支持websockets。

如下是一个请求,可以以同步、异步、并发、设置代理等方式进行请求,更多示例参考: 官网

HttpClient client = null;
HttpResponse<String> response = null;
try {
    client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://www.baidu.com"))
            .build();
    // 异步
    client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
            .thenApply(HttpResponse::body)
            .thenAccept(System.out::println)
            .join();
    // 同步
    response = client.send(request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response.body());
} catch (IOException e) {
    throw new RuntimeException(e);
} catch (InterruptedException e) {
    throw new RuntimeException(e);
}

四、JEP 323 – Lambda局部变量推断

在Java 10中引入的var语法,在Java 11中应用到了Lambda表达式中。

var hashMap = new HashMap<String, Object>();
hashMap.put("name", "优米格");
hashMap.put("website", "https://www.4spaces.org");
hashMap.forEach((var k, var v) -> {
    System.out.println(k + ": " + v);
});

五、JEP 330 – 单命令运行Java

在此特性出现之前,就算运行一个单Java文件,也需要执行javac编译,然后才能执行java命令来运行文件。现在对于单文件程序,直接java HelloWorld.java即可执行类文件。

也就是,在无需编译的情况下,我们可以直接运行Java单文件源代码。这对于初学者可以方便的上手。而且此特性能够让Java像Shell脚本一样运行。

六、免费的飞行记录器

商业版JDK中一直有一款低开销的事件信息收集工具,也就是飞行记录器(Java Flight Recorder),它可以对JVM 进行检查、分析、记录等。当出现未知异常时可以通过记录进行故障分析。这个好用的工具在Java 11中将开源免费。所有人都可以使用这个功能了。

特性一览:

2023-01-29_170222.jpg

参考:

  1. JDK 11 Release Notes
赞(0)
未经允许禁止转载:优米格 » Java 11新特性使用

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系

登录

找回密码

注册