Java 9 新特性

Java 9 新特性

模块化系统

Java 9 引入模块化系统的一个原因是为了让 Java 可以运行在内存有限的场景
模块可以导出 Public API 隐藏内部实现,模块可以依赖其它模块

module tech.ruanjiang.modules.car {
    requires tech.ruanjiang.modules.engines;
    exports tech.ruanjiang.modules.car.handling;
}

在模块的根目录用 module-info.java 来描述模块的导出 API 和 对其它模块的依赖

Http Client

Java 9 引入了 java.net.http.HttpClient 实现了 HTTP/2 和 WebSocket 协议,性能应该可以和 Apache HttpClient, Netty 和 Jetty 相当

@Test
public void testGet() throws IOException, InterruptedException {
    HttpClient httpClient = HttpClient.newBuilder()
            .version(HttpClient.Version.HTTP_2)
            .connectTimeout(Duration.ofSeconds(20))
            .build();
    HttpRequest httpRequest = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create("https://www.baidu.com"))
            .build();
    HttpResponse<String> httpResponse = httpClient.send(httpRequest,HttpResponse.BodyHandlers.ofString());
    Assert.assertTrue(httpResponse.statusCode() == 200 && httpResponsebody().contains("关于百度"));
}

Process API

Process API 优化了对系统进程的控制和管理
java.lang 包中 ProcessHandle.current() 获取当前进程,然后可以获得 pid 和其它信息

ProcessHandle self = ProcessHandle.current();
long PID = self.getPid();
ProcessHandle.Info procInfo = self.info();
 
Optional<String[]> args = procInfo.arguments();
Optional<String> cmd =  procInfo.commandLine();
Optional<Instant> startTime = procInfo.startInstant();
Optional<Duration> cpuUsage = procInfo.totalCpuDuration();

ProcessHandle 的 destroy 方法用来退出进程

interface 私有方法

接口允许私有方法,主要用来辅助实现默认方法的

posted @ 2023-08-09 15:02  软匠  阅读(24)  评论(0)    收藏  举报