post:完成Java 13新特性。
This commit is contained in:
parent
02e2ded20c
commit
1365bbdbfd
82
source/_posts/nf-java13.md
Normal file
82
source/_posts/nf-java13.md
Normal file
|
@ -0,0 +1,82 @@
|
|||
---
|
||||
title: Java 13的新特性
|
||||
tags:
|
||||
- JVM
|
||||
- Java
|
||||
- Java 13
|
||||
- 新特性
|
||||
- Switch
|
||||
- 文本块
|
||||
categories:
|
||||
- - JVM
|
||||
- Java
|
||||
keywords: 'Java,Java 13,新特性,switch,预览,text,block,文本块'
|
||||
date: 2021-05-21 17:47:41
|
||||
---
|
||||
|
||||
Java 13是一个新功能比较贫瘠的版本,在Java 13中增加的功能基本上都是预览版功能。<!-- more -->
|
||||
|
||||
本系列的文章有:
|
||||
|
||||
- {% post_link nf-java8 %}
|
||||
- {% post_link nf-java9 %}
|
||||
- {% post_link nf-java10 %}
|
||||
- {% post_link nf-java11 %}
|
||||
- {% post_link nf-java12 %}
|
||||
- {% post_link nf-java13 %}
|
||||
- {% post_link nf-java14 %}
|
||||
- {% post_link nf-java15 %}
|
||||
- {% post_link nf-java16 %}
|
||||
|
||||
## 预览功能
|
||||
|
||||
与之前的Java版本中的预览功能一样,Java 13中的预览功能也必须使用`--enable-preview`选项在编译时手动打开。
|
||||
|
||||
### Switch表达式
|
||||
|
||||
Switch表达式是在Java 12中引入的,但是在Java 13中依旧处于预览状态。这里仅展示一下新的switch表达式的用法。
|
||||
|
||||
```java
|
||||
var result = switch (operation) {
|
||||
case "double" -> me * 2;
|
||||
case "triple" -> {
|
||||
yield me * 3;
|
||||
}
|
||||
default -> me
|
||||
};
|
||||
```
|
||||
|
||||
按照switch表达式的设计,现在要想实现策略模式已经是非常简单的了。
|
||||
|
||||
### 文本块
|
||||
|
||||
文本块(Text Block)是使用三个引号括起来的文本。区别于单个引号括起来的字符串,文本块天然就是多行的。而且更加便利的一条是,可以直接在文本块中书写JSON、XML和HTML等。
|
||||
|
||||
```java
|
||||
String webInfo = """
|
||||
{
|
||||
"name": "FarDawn",
|
||||
"website": "https://www.archgrid.xyz"
|
||||
}
|
||||
"""
|
||||
```
|
||||
|
||||
## 动态CDS存档
|
||||
|
||||
CDS允许在不同的JVM之间共享类的元数据,从而可以缩短程序的启动时间和内存消耗。在Java 13中,生成CDS存档的操作变得简便了许多,只需要在程序退出的时候生成即可,而这个操作只需要在运行程序的Jar包时加一条选项。
|
||||
|
||||
```bash
|
||||
java -XX:ArchiveClassesAtExit=<archive file> -cp app.jar AppName
|
||||
```
|
||||
|
||||
使用上面这个命令生成的`<archive file>`可以使用下面这条命令来使用。
|
||||
|
||||
```bash
|
||||
java -XX:SharedArchiveFile=<archive file> -cp app.jar AppName
|
||||
```
|
||||
|
||||
## 传统套接字API的新实现
|
||||
|
||||
传统套接字API,诸如`java.net.Socket`和`java.net.ServerSocket`,在很早之前的Java版本中就已经存在了,而且在近20年中基本上没有发生过任何改变。所以在这个强调线程安全和异步的年代,这些比较古老的API就显得落后了。
|
||||
|
||||
Java 13中借鉴了`java.nio`的内部结构,重新实现了`Socket`和`ServerSocket`。现在这两个类都已经在使用`java.nio`系列API做底层支持了。
|
Loading…
Reference in New Issue
Block a user