Java 9のProcess API改善点とは?プロセス管理がここまで簡単になった
Java 9におけるProcess APIの改善点
Java 9では、オペレーティングシステム(OS)のプロセスを管理・制御するためにProcess APIが大幅に強化されました。以前のバージョンでは、JavaからOSのネイティブプロセスを直接操作することは非常に困難でしたが、Java 9ではこの目的のために新しいクラスやインターフェースが追加されました。
中核となるのがProcessHandleインターフェースです。これはネイティブプロセスを識別して制御する機能を提供し、プロセスが現在も生存しているかどうか(liveness/稼働状態)を確認したり、不要になったプロセスを破棄(destroy)したりするためのメソッドを備えています。また、ProcessHandle.Infoインターフェースを使用すると、特定のプロセスに関する情報のスナップショットを取得できます。
強化されたProcess APIで取得できる主な情報は以下の通りです。
- プロセスのネイティブプロセスID(PID)
- 累積CPU時間
- 親プロセスの情報
- プロセスを破棄するためのメソッド
- 子孫プロセス(Descendants)の一覧 など
コード例
次のサンプルでは、ProcessHandle.current()で現在実行中のプロセスを取得し、そのPIDや累積CPU時間、実行ユーザー名を出力しています。
public class ProcessTest {
public static void main(String args[]) {
ProcessHandle currentProcess = ProcessHandle.current();
System.out.println("PID: " + currentProcess.pid());
ProcessHandle.Info currentProcessInfo = currentProcess.info();
System.out.println("totalCpuDuration: " + currentProcessInfo.totalCpuDuration());
System.out.println("user: " + currentProcessInfo.user());
}
}実行結果
PID: 6004 totalCpuDuration: Optional[PT0.421875S] user: Optional[Tutorialspoint\User]
出力を見ると、pid()メソッドによってプロセスID「6004」が取得できていることがわかります。また、totalCpuDuration()やuser()の戻り値はOptional型でラップされており、情報が取得できない環境では空のOptionalが返される仕組みになっています。これにより、値の存在有無を安全に扱える点もJava 9のProcess APIの利点といえます。
-
Java 9における@Deprecatedアノテーションの改善点とは?新要素「since」「forRemoval」を徹底解説
@Deprecatedアノテーションとはクラス、メソッド、フィールドなど、プログラム内のあらゆる要素に付与できる@Deprecatedアノテーションは、「その要素はもはや使用すべきではない」ことを示すためのものです。要素が非推奨とされる主な理由は以下の通りです。使用すると危険であり、エラーを引き起こす可能性がある将来のバージョンで互換性がなくなる可能性がある将来のバージョンで削除される可能性があるより優れた、効率的な代替手段がすでに提供されているJava 9で追加された2つの新しい要素Java 9では、@DeprecatedアノテーションにsinceとforRemovalという2つの新しい属性
-
OSのカーネルとは?役割・仕組みと5つの種類をわかりやすく解説
Windows、macOS、Linux、Androidなど、あらゆるオペレーティングシステム(OS)には「カーネル(Kernel)」と呼ばれる中核プログラムが存在します。カーネルはシステム全体の「ボス」のような存在であり、まさにOSの心臓部です。コンピューター上で起こるあらゆる処理はカーネルを経由し、他のすべてを制御するコンピュータープログラムでもあります。本記事では、OSにおけるカーネルとは何か、そしてカーネルにはどのような種類があるのかを詳しく解説します。 OSにおけるカーネルとは カーネルはOSの中核プログラムであるだけでなく、ブートローダーの実行後に最初に読み込まれるプログラムでもあり