在具有虛擬執行緒的 Java 21 上執行的 JDK HTTP Server 和基準測試,專案點選標題
一個簡單的 HTTP 伺服器非常有用!對於大多數專案,使用現成的標準庫 JDK HTTP 伺服器。
此儲存庫中顯示的程式碼和實驗旨在演示基於以下 JDK 原語構建的簡單、最小的 Java Web 伺服器應用程式的功能:
- Java 21
- Virtual threads
- JDK HTTP server
- JDK HTTP client
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 = <font>"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。