Java 18开发者新特性
简易Web服务器模块
Java 18在jdk.httpserver模块中提供了基础Web服务器功能,支持API调用和命令行启动:
$ jwebserver -b 0.0.0.0 -p 8000
注意:该服务器仅限HTTP/1.1协议,不支持PUT请求和动态内容,适用于原型开发与测试场景。示例代码:
import java.net.InetSocketAddress;
import java.nio.file.Path;
import com.sun.net.httpserver.SimpleFileServer;
import static com.sun.net.httpserver.SimpleFileServer.OutputLevel;
public class App {
public static void main(String[] args) {
var server = SimpleFileServer.createFileServer(
new InetSocketAddress(8000),
Path.of("/home/java"),
OutputLevel.VERBOSE);
server.start();
System.out.println("Server started on port 8000");
}
}
Javadoc代码片段增强
通过JEP 413引入的@snippet标签改进代码文档:
/**
* 展示Optional.isPresent用法:
* {@snippet :
* if (v.isPresent()) {
* System.out.println("v: " + v.get());
* }
* }
*/
默认UTF-8字符集
Java 18统一采用UTF-8作为默认字符集,可通过-Dfile.encoding=COMPAT恢复旧版行为。
Finalization弃用准备
使用--finalization=disabled参数测试无finalize()时的应用行为,推荐改用try-with-resources或Cleaner API。
预览功能
- Vector API (JEP 417)
- 外部函数与内存API (JEP 419)
- Switch模式匹配 (JEP 420)
获取Java 18
早期构建版本可从Eclipse Adoptium下载,功能对比参考Java Almanac。