Java 9에서는 Process API가 크게 개선되었으며, 그 핵심에는 ProcessHandle 인터페이스의 도입이 있습니다. ProcessHandle 인터페이스의 인스턴스는 로컬 프로세스를 식별하며, 프로세스의 상태(status)를 조회하고 프로세스를 관리할 수 있도록 지원합니다. 또한 ProcessHandle.Info를 사용하면 로컬 프로세스의 PID(프로세스 ID)를 비롯한 다양한 정보를 손쉽게 얻을 수 있습니다.
ProcessBuilder 클래스는 운영체제 수준의 별도 프로세스를 생성하는 데 사용됩니다. 아래 예제에서는 ProcessBuilder 클래스를 이용해 notepad(메모장) 애플리케이션의 프로세스를 실행하고, 해당 프로세스에 대한 상세 정보를 조회하는 방법을 살펴보겠습니다.
예제 코드
import java.time.ZoneId;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.io.IOException;
public class ProcessBuilderTest {
public static void main(String args[]) throws IOException {
ProcessBuilder pb = new ProcessBuilder("notepad.exe");
String np = "Not Present";
Process p = pb.start();
ProcessHandle.Info info = p.info();
System.out.printf("Process ID : %s%n", p.pid());
System.out.printf("Command name : %s%n", info.command().orElse(np));
System.out.printf("Command line : %s%n", info.commandLine().orElse(np));
System.out.printf("Start time: %s%n", info.startInstant().map(i -> i.atZone(ZoneId.systemDefault()).toLocalDateTime().toString()).orElse(np));
System.out.printf("Arguments : %s%n", info.arguments().map(a -> Stream.of(a).collect(
Collectors.joining(" "))).orElse(np));
System.out.printf("User : %s%n", info.user().orElse(np));
}
}위 코드를 실행하면 notepad 애플리케이션이 다음과 같이 실행됩니다.

실행 결과
Process ID : 3728 Command name : C:\WINDOWS\System32\notepad.exe Command line : Not Present Start time: 2020-04-20T18:06:30.378 Arguments : Not Present User : Tutorialspoint\User
코드 설명
- ProcessBuilder 객체 생성: new ProcessBuilder("notepad.exe")를 통해 메모장 프로그램을 실행할 프로세스 빌더를 만듭니다.
- 프로세스 시작: start() 메서드를 호출하면 새로운 운영체제 프로세스가 시작되고, Process 객체가 반환됩니다.
- 프로세스 정보 조회: info() 메서드는 ProcessHandle.Info 인스턴스를 반환하며, 이를 통해 PID, 명령어 경로, 시작 시간, 인자, 실행 사용자 등의 정보를 확인할 수 있습니다.
- Optional 처리: command(), arguments(), user() 등의 메서드는 Optional을 반환하므로, 값이 존재하지 않을 경우 orElse(np)를 통해 기본값인 "Not Present"를 출력합니다.
이처럼 Java 9의 ProcessHandle은 기존 Process 클래스만으로는 얻기 어려웠던 프로세스 세부 정보를 표준 API만으로 조회할 수 있게 해주며, 외부 네이티브 라이브러리 없이도 프로세스 모니터링 및 관리 로직을 구현할 수 있다는 점에서 큰 장점입니다.