Java 13的新特性

发布时间:2021-05-21 17:47
最后更新:2021-05-21 17:47
所属分类:
JVM Java

Java 13是一个新功能比较贫瘠的版本,在Java 13中增加的功能基本上都是预览版功能。

本系列的文章有:

  1. Java 8的新特性
  2. Java 9的新特性
  3. Java 10的新特性
  4. Java 11的新特性
  5. Java 12的新特性
  6. Java 13的新特性
  7. Java 14的新特性
  8. Java 15的新特性
  9. Java 16的新特性
  10. Java 17的新特性
  11. Java 18的新特性

预览功能

与之前的Java版本中的预览功能一样,Java 13中的预览功能也必须使用--enable-preview选项在编译时手动打开。

Switch表达式

Switch表达式是在Java 12中引入的,但是在Java 13中依旧处于预览状态。这里仅展示一下新的switch表达式的用法。

1
2
3
4
5
6
7
var result = switch (operation) {
    case "double" -> me * 2;
    case "triple" -> {
        yield me * 3;
    }
    default -> me
};

按照switch表达式的设计,现在要想实现策略模式已经是非常简单的了。

文本块

文本块(Text Block)是使用三个引号括起来的文本。区别于单个引号括起来的字符串,文本块天然就是多行的。而且更加便利的一条是,可以直接在文本块中书写JSON、XML和HTML等。

1
2
3
4
5
6
String webInfo = """
{
    "name": "FarDawn",
    "website": "https://www.archgrid.xyz"
}
"""

动态CDS存档

CDS允许在不同的JVM之间共享类的元数据,从而可以缩短程序的启动时间和内存消耗。在Java 13中,生成CDS存档的操作变得简便了许多,只需要在程序退出的时候生成即可,而这个操作只需要在运行程序的Jar包时加一条选项。

1
java -XX:ArchiveClassesAtExit=<archive file> -cp app.jar AppName

使用上面这个命令生成的<archive file>可以使用下面这条命令来使用。

1
java -XX:SharedArchiveFile=<archive file> -cp app.jar AppName

传统套接字API的新实现

传统套接字API,诸如java.net.Socketjava.net.ServerSocket,在很早之前的Java版本中就已经存在了,而且在近20年中基本上没有发生过任何改变。所以在这个强调线程安全和异步的年代,这些比较古老的API就显得落后了。

Java 13中借鉴了java.nio的内部结构,重新实现了SocketServerSocket。现在这两个类都已经在使用java.nio系列API做底层支持了。


索引标签
JVM
Java
Java 13
新特性
Switch
文本块