在具有虚拟线程的 Java 21 上运行的 JDK HTTP Server 和基准测试,项目点击标题
一个简单的 HTTP 服务器非常有用!对于大多数项目,使用现成的标准库 JDK HTTP 服务器。
此存储库中显示的代码和实验旨在演示基于以下 JDK 原语构建的简单、最小的 Java Web 服务器应用程序的功能:
Hello
Hello是一个启动JDK HTTP 服务器的简单应用程序。
它使用“hello world”纯文本响应来响应每个 HTTP 请求:
import com.sun.net.httpserver.HttpServer;
import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.Executors;
public class Hello {
public static void main(String[] args) throws IOException { var body = "hello world".getBytes(); var server = HttpServer.create(new InetSocketAddress(8080), 0); server.setExecutor(Executors.newVirtualThreadPerTaskExecutor()); server.createContext("/").setHandler(exchange -> { exchange.sendResponseHeaders(200, body.length); try (var os = exchange.getResponseBody()) { os.write(body); } }); server.start(); System.out.println("ready"); }
}
|
它使用每个任务虚拟线程执行器。
./httpsrvimg/bin/java -Dsun.net.httpserver.nodelay=true -m httpsrv/httpsrv.Hello
|
基准测试
- JDK HTTP 服务器每秒处理 100,000 个请求,
- JVM启动时间为 100 毫秒,模块化运行时映像为 50 MB。
- GraalVM 本机映像的启动时间为 3 毫秒,可执行文件为 18 MB。