Java 18开发者新特性详解:简易Web服务器、代码片段标注与UTF-8默认编码

53 阅读1分钟

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