Technology & Programming Article
J2SE 5.0の新機能
第15回 JMXによるJVMの監視/管理機能を試す(1)──JMXのアーキテクチャとMBean
J2SE 5.0(JDK 5.0)には、アプリケーションの状態などを監視/管理するための機能が追加されている。この機能は、J2EE 1.4に導入されたJMX(Java Management Extensions)をさらに強化したものであり、JVMの状態を詳細に監視/管理できるといった特徴がある。今回から2回にわたり、この機能の概要とそれを実装したツールについて解説する。
2006年7月10日更新
J2SE 5.0の監視/管理機能
J2SE 5.0には、アプリケーションの状態などを監視/管理する(monitoring and management)ための機能が追加されている。この機能は、以下に示す3つのJSRに基づくものだ。
●JSR 3:JMX Specification
●JSR 160:JMX Remote API 1.0(JMXリモートAPI 1.0)
●JSR 174:Monitoring and Management Specification for the Java Virtual Machine(JVMの監視/管理)
これらのうち、JSR 3の「JMX」は、アプリケーションやネットワークの監視/管理をJavaで行うための仕様である。具体的には、監視/管理のアーキテクチャ、デザイン・パターン、API、サービスなどを規定している。
JSRの番号が3と小さいことからもわかるように、JMXは、かなり昔(2000年)に策定された仕様であり、エンタープライズ向けのJava EE(J2EE)のほうでは、J2EE 1.4ですでにこれが組み込まれていた。そのため、これまでJMXは、主にサーバ側で使われてきた。しかし、Javaの基本仕様であるJava SE(J2SE)にも追加されたことから、今後はクライアント/サーバを問わず使われていくことになるだろう。ちなみに、オープンソースのアプリケーション・サーバ「JBoss」では、そのアーキテクチャの基盤としてJMXを利用している。
一方、JSR 160の「JMXリモートAPI」は、JMXの機能をネットワーク経由で別のマシンから利用するための標準APIの仕様である。トランスポートの方法は切り替え可能だが、Java RMI(Remote Method Invocation)のサポートが必須になっているので、普通はRMIを使うことになる。
そして、JSR 174の「JVMの監視/管理」は、JMXの仕様に従ってJVMを監視/管理するための機能を定めたものである。この機能により、JVMがメモリなどのリソースをどの程度消費しているのかを調べ、JVMが正常な状態かどうかを確認することができる。J2SE 5.0の新機能としては、このJSR 174がメインになるであろう。ほかの2つのJSRは、JSR 174の導入に伴って組み込まれたと言ってもよいかもしれない。
3つのJSRによって新たに導入されたパッケージは表1のとおりである。
| JSR | パッケージ |
| JSR 3:JMX | javax.management |
| javax.management.loading | |
| javax.management.modelmbean | |
| javax.management.monitor | |
| javax.management.openmbean | |
| javax.management.relation | |
| javax.management.timer | |
| JSR 160:JMXリモートAPI | javax.management.remote |
| javax.management.remote.rmi | |
| JSR 174:JVMの監視/管理 | java.lang.management |
また、J2SE 5.0(JDK 5.0)では、上記のJSRに加えて、「jconsole」、「jps」、「jstat」、「jstatd」という4つの監視/管理ツールも組み込まれている。これらのツールは、いずれもJVMを監視/管理するためのものである。ただし、どのツールも“試験的”という位置づけになっているので、将来のJava SEではサポートされない可能性もある。これら4つのツールは、J2SE 5.0でJVMの監視/管理に関して何ができるのかを示すデモに近いものだと考えればよいだろう。
なお、これら4つのツールのうち、「jconsole」はGUIツールであり、残りの3つはコマンドライン・ツールである。今回は、これらのうちjconsoleの機能の概要について後ほど説明することにする。
|









