Java 9で実行中のプロセスのID(PID)を取得する方法
Java 9では、Process APIに大幅な改善が加えられました。これにより、実行中のプロセスのPID(プロセスID)の取得、プロセスの子プロセスや子孫プロセスの取得が可能になり、さらにすべての実行中のプロセスを一覧表示したり、任意のプロセスに関する情報を取得したり、プロセスツリーを走査するための新しいクラスも追加されました。
これらのメソッドから返される情報は、OS上で動作しているプロセスのスナップショットとして取得できます。なお、プロセスは常に変化しているため、返される情報は取得時点のものである点に注意してください。
以下の例では、ProcessHandleインターフェースのpid()メソッドを使用して、実行中のプロセスのIDを取得しています。ProcessHandle.current()で現在のプロセスへのハンドルを取得し、そこからPIDだけでなく、実行コマンドやCPU使用時間などの情報もinfo()メソッド経由で参照できます。
コード例
public class ProcessHandleTest {
public static void main(String args[]) {
ProcessHandle processHandle = ProcessHandle.current();
System.out.println("実行中のプロセスのPID: " + processHandle.pid());
System.out.println("コマンド: " + processHandle.info().command().orElse("N/A"));
System.out.println("CPU使用時間: " + processHandle.info().totalCpuDuration().get().getSeconds() + " 秒");
}
}
実行結果
実行中のプロセスのPID: 4248 コマンド: C:\Program Files\Java\jdk-9.0.4\bin\java.exe CPU使用時間: 0 秒
このように、Java 9以降では外部ライブラリやネイティブコードに頼ることなく、標準APIだけで現在のプロセスIDを簡単に取得できるようになりました。Java 8以前ではManagementFactory.getRuntimeMXBean().getName()をパースするなどの回避策が必要でしたが、Java 9のProcess API改善により、より直感的かつ安全にプロセス情報を扱えるようになっています。
-
Java SwingのJButtonでHTMLテキストを実装する方法
JButtonはAbstractButtonのサブクラスであり、Java Swingのコンポーネント階層において非常に重要な役割を担うクラスです。JButtonは、ログイン画面を持つアプリケーションなど、ユーザーに操作を促す場面で広く利用されています。ボタンを押下・クリックすると、ActionListenerインターフェースを通じてアクションイベントが発生し、それに応じた処理を実行できます。また、JButtonにはテキストのみ、アイコンのみ、あるいはテキストとアイコンの両方を設定することが可能です。さらに便利な点として、ボタンのラベルにHTMLタグを使用できるため、太字(bold)や斜体(it
-
JavaでJPanelのpaintComponent()メソッドを実装する方法をわかりやすく解説
JPanelはJavaにおける軽量コンテナであり、それ自体は不可視(インビジブル)なコンポーネントとして扱われます。デフォルトのレイアウトにはFlowLayoutが採用されています。JPanelを生成した後は、Containerクラスから継承されたadd()メソッドを呼び出すことで、ボタンやラベルなどの他のコンポーネントをJPanelオブジェクトに自由に追加できます。 paintComponent()メソッドとは このメソッドは、単なる背景色の描画にとどまらず、JPanel上に独自の図形や画像などを描画したい場合に必要となります。paintComponent()メソッドはすでにJPanelクラ