跳到主要内容

JEP 102:进程 API 更新

QWen Max 中英对照

概述

改进用于控制和管理操作系统进程的 API。

动机

当前 API 的限制常常迫使开发人员转而使用原生代码。

描述

Java SE 对本地操作系统进程提供了有限的支持。它提供了一个基本的 API,用于设置环境和启动进程。自 Java SE 7 起,进程流可以被重定向到文件、管道,或者可以被继承。一旦启动,该 API 可用于销毁进程和/或等待进程终止。

java.lang.Process 类进行了增强,以提供操作特定的进程 ID、进程的相关信息(包括参数、命令、进程的启动时间、进程的累计 CPU 时间以及进程的用户名)。

java.lang.ProcessHandle 类返回操作系统提供的每个进程的信息,包括进程 ID、参数、命令、启动时间等。ProcessHandle 可以返回进程的父进程、直接子进程,以及通过 ProcessHandle 流返回的所有后代进程。

ProcessHandles 可用于销毁进程并监控进程的活跃状态。通过 ProcessHandle.onExit,可以利用 CompletableFuture 的异步机制来安排一个在进程退出时执行的操作。

访问有关进程的信息和进程控制受安全管理器权限的约束,并受到常规操作系统访问控制的限制。

测试

引入的类或方法将需要新的单元测试,可以与实现一起开发。更多的功能测试也会很有用。

风险与假设

此 API 的主要风险在于操作系统之间的差异,尤其是 Windows。

此 API 的设计需要适应可能部署在具有不同操作系统模型的小型设备上。它还应考虑在同一操作系统进程中运行多个 Java 虚拟机的环境。这些考虑因素可能会导致更抽象的 API 和/或增加设计工作量。