![]() |
安藤幸央のランダウン[43]
あなたの知らないJDKの便利ツールたち
安藤幸央(yukio-ando@exa-corp.co.jp)
株式会社エクサ
2008/11/13
「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします(編集部)
■ 標準JDKに含まれる便利なツール
読者の皆さんは、最近のJDK(Java SE)に、開発やデバッグに便利な新しいツールが含まれていることをご存じでしょうか? 古くからのJava開発者は、古い時代のJDKのツールしか知らず、一方で新しいJava開発者はEclipse/NetBeansなどの統合開発環境に慣れてしまい、細かなコマンドツールを直に使う状況が減ってきているかもしれません。
そこで今回は、最近のJava SE 6含めて比較的新しいと思われるツールを以下の5種類に分けて紹介します。
「こんなツールがJDKに付いてるなんて知らなかった!」という新たな発見があれば幸いです。
![]() |
| 図1 フォルダ「C:\Program Files\Java\jdk1.6.0_10\bin」にあるファイル(Java SE Development Kit(JDK)6 Update 10をWindows XPにインストールした場合) |
中には正式なサポート外のものも含みますので、ご注意ください。また、残念ながら現在のところWindows環境では利用できないツールもあります。
■ プロファイリング用ツール
プラグインによる拡張が可能な統合プロファイラ |
「VisualVM」は機能拡張可能なプロファイラです。起動アプリケーションの概要やヒープの様子、GC(ガベージ・コレクション)の実行状況などの細かなモニタリング機能、スレッドの状態表示、CPU/メモリのプロファイリングといったさまざまな機能を併せ持ちます。

visualvm: Home via kwout
VisualVMから強制的にGCを実行し、その際の振る舞いを知ることもできます。プロファイリング用途のみならず、実行時にどのような状況で動作しているのかを細かく知ることのできるツールです。
![]() |
| 図2 VisualVMの使用例 |
また、基本となるプロファイリング機能も充実していて、どの部分がホットスポット(処理時間がかかるネックの部分)なのかを簡単に見つけ出せます。導入もしやすく平易に使えるツールです。
システム情報やメモリ使用量を確認するためのコンソール |
「Jconsole」は、Java VMの監視用ツールです。JMX(Java Management Extensions)に対応し、メモリ利用状況をグラフで表示します。ローカルJava VMとリモートJava VMの両方に対応しています。
![]() |
| 図3 Jconsoleの使用例 |
新たに、スレッド間のデッドロックを検知するための専用ボタンが用意され、「オンデマンドアタッチ」機能により、起動中のJava VMの情報を見たいときに見られるようになりました。
■ トラブルシューティング・情報取得のためのツール
構成情報を取得 |
「jinfo」は、「jps」(後述)によって取得されたプロセスIDの構成情報を知るためのツールです。また、コアダンプファイルを指定して、Javaシステムプロパティやバージョン情報、Java VM起動時のオプションなどを把握できます。リモートデバッグサーバを利用して構成情報を知ることもできます。
Javaヒープ解析ツール |
「jhat」は、ヒープダンプファイルを指定して、ヒープを解析するためのツールです。hprofオプションや、次に紹介する「jmap」が出力するバイナリファイルを利用します。jhatはWebサーバとして動作し、解析結果をWebブラウザで確認できます。パフォーマンスチューニングの際には、プロファイリングは必須なので、標準のツールだけで詳細な情報を得られるのは便利です。
メモリマップ |
「jmap」は、指定したJava VMのプロセスマップやヒープ情報、クラスローダの情報を取得できます。オプションによる細かな指定で、ヒープサマリーやヒストグラム、ヒープの統計データなどを取得できます。前述のjhatと組み合わせることで効果を発揮します。
サービスアビリティエージェントデバッグデーモン |
「jsadebugd」は、jps(後述)で取得されたプロセスIDを基に、デバッグサーバとして機能するツールです。RMI(Remote Method Invocation)経由でリモートクライアントからの監視情報の問い合わせに応答するデーモンとして機能します。
スタックトレース取得 |
「jstack」は、Java VMのスタック情報を取得できます。具体的には、クラス名やメソッド名、バイトコードインデックス、行番号が取得できます。またWindows であれば、実行中に[Ctrl]+[Break]キーを押すと、スレッドダンプするのと同様の情報も取得できます。
■ 監視ツール
仮想マシンプロセスステータスツール(旧、jvmps) |
「jps」は、Java VMのプロセスIDをリストアップするツールです。jpsを実行したユーザーが権限を持つプロセスIDのみが取得できます。後述する「jstatd」を起動したリモートマシンのプロセスIDを得ることもできます。
仮想マシンプロセスステータスツール(旧、jvmps) |
「jstat」は、Java VMのGCなどの計測値を表示するためのツールです。ヒープメモリの状態、クラスローダの統計情報、Permanent領域の状態などを知ることができます。データの取得間隔を指定して、GCの効果を調べたり、メモリーリークの監視が可能です。
仮想マシンjstatデーモン(旧、perfagent) |
「jstatd」は、前述のjstatのリモート監視用のデーモンです。リモートサーバの監視ログを残しておきたいときに便利に使えます。
■ 配備/補助ツール
Jarパックツール |
「pack200」は、圧縮率の高いJarファイルを作ることのできるツールです。通常のjarコマンドはzip圧縮でファイル群を1つにまとめられますが、pack200はgzip圧縮ツールをベースとしたより高圧縮率を誇るJarファイル作成ツールです。jarやzip、gzipについて詳しく知りたい読者は、下記記事を参考にするといいでしょう。
さらに、Jarファイルを作成する際に、デバッグ情報を削除してよりファイルを小さく圧縮することもできます。ネットワークで転送されるJarファイルを少しでも小さくしたいときに有効な方法です。
Jarアンパックツール |
「unpack200」は、先ほどのpack200の逆を行い、高圧縮のJarファイルを展開するためのツールです。pack200で圧縮されたJarファイルを通常のJar圧縮ファイルに変換する場合にも利用できます。
Jarの競合を検出するユーティリティ |
「extcheck」は、現在使われている拡張機能群のJarファイルと、調べたいJarファイルとの競合を調査できます。競合の調査とは、新しいJarファイルを利用する前に、すでに同じJarファイルや、新しいバージョンのJarファイルが存在しないかどうかを調べることです。
すでにJava環境がインストールされている環境に追加で環境を整える場合や、Jarファイルが多数ある複雑な環境を把握する際に役立つツールです。
■ スクリプティングツール
スクリプト実行 |
「jrunscript」は、「jrunscript -e "print('hello world')"」という使い方で、JavaScriptのプログラムを直接実行したり、インタラクティブモードで逐一プログラムを実行できる環境です。標準環境で利用できるのはJavaScript(Rhino実装によるECMAScript)ですが、ほかにもJavaFXなどのスクリプト言語でも利用できます。
また、指定したスクリプトファイルを実行するといったバッチ的な利用方法も可能です。主にサーバサイドで活用することを想定していて、Javaとの連携や簡単なテストや設定ファイルの記述/操作などに便利に使用できます。
■ トラブルに備え、未知のツールを便利なツールに
本稿で紹介したツール群は、無料で使えるJavaの標準的なツールです。しかしながら、すべてを熟知し、駆使して開発・デバッグを行っている人は実際のところ少数かもしれません。旧来のツールも便利な新機能が増えたり、ほかのツールと連携し効率よく使えるように機能強化されたものもあります。
また、例えばJava VM用のデバッガ「DTrace」のエージェント「dvm」を使えば、Java自身の深いところまで詳細な動きを知ることが可能です。さまざまな情報を知ることができる一方、プロファイラ系のツールは、オーバーヘッドを生じることが多く、パフォーマンスチューニングの際には、その状況をしっかりと把握して利用しなければいけません。DTraceについては、下記記事を参考にしてください。
便利なツールのありがたみが分かるのは、トラブルが起こったときです。重要な局面において、ちょっとしたツールを知っているか知らないかで、トラブルから抜け出せる確率が大きく違ってくることでしょう。慣れた環境の中で、慣れたツールを正確に使いこなすのも重要ですが、日々新しくなっていくツールに親しむ時間を作り、さらなる達人への道を歩んでいくことをお勧めします。
次回は2009年1月初めごろに公開の予定です。内容は未定ですが、読者の皆さんの興味を引き、役立つ記事にする予定です。何か取り上げてほしい内容などリクエストがありましたら、編集部や@ITの掲示板までお知らせください。次回もどうぞよろしく。
■ 本稿以外のJDKツール紹介記事
- javaコマンドを使いこなす
- javacコマンドを使いこなす
- CORBAの動作を試す簡単な方法はありませんか?(idlj、orbd、servertool、tnameservコマンド)
- javapコマンドでクラスファイルを読む
- リソースファイルの内容が文字化けする場合には(native2asciiコマンド)
■ @IT関連記事
| Webアプリの問題点を「見える化」する7つ道具 現場から学ぶWebアプリ開発のトラブルハック(1) 現場でのトラブル発生時に原因がなかなか掴めず、あたふたした経験はありませんか? そんなときには、このハック! 「Java
Solution」フォーラム 2007/3/22 |
||
| プロファイラでメモリリークとパフォーマンス問題を解決 Java開発の問題解決を助ける(2) フリーで利用できるプロファイラ「NetBeans Profile」を使ってメモリリークとパフォーマンスの問題を解決する方法を紹介する 「Java
Solution」フォーラム 2005/8/10 |
||
| Eclipse上でプロファイリングを実現する 連載:Eclipse徹底活用(6) コーディング作業とプロファイリングを繰り返しながらアプリケーションのチューニングができる。そんな便利なEclipseの活用法を紹介しよう 「Java
Solution」フォーラム 2003/10/31 |
||
| 高負荷なのに片方のサーバにだけ余裕が……なぜ? Linuxトラブルシューティング探偵団 第1回 Linuxベースのシステムで起こるトラブルに、百戦錬磨の達人が立ち向かう! 実例を元に障害対応のプロセスを紹介します 「Linux Square」フォーラム 2008/2/4
|
||
| JMeterによるWebサーバ性能評価の勘所 連載:実用 Apache 2.0運用・管理術(2) サーバのボトルネックを見極めるには、適切な性能評価が必要。そこでツールを使った効果的な性能評価のポイントを紹介する 「Linux Square」フォーラム 2005/9/6
|
||
| プロフィール |
安藤幸央(あんどう ゆきお) 1970年北海道生まれ。現在、株式会社エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。ホームページ Java News.jp(Javaに関する最新ニュース) 所属団体 OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman) 主な著書 「VRML 60分ガイド」(監訳、ソフトバンク) 「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社) 「The Java3D API仕様」(監修、アスキー) |
安藤幸央のランダウン バックナンバー 連載インデックスへ»
- 第1回 Javaを速くするための心構え
- 第2回 サーバサイドで進化するグラフィックス
- 第3回 ユーザビリティ(使いやすさ)の大切さ
- 第4回 Javaプログラマのお役立ちサイト
- 第5回 伝説のイベントJava Night
- 第6回 次世代のインターネット言語curl登場!
- 第7回 次世代を予感させるグリッドコンピューティング
- 第8回 音声はコンピューティングを変える?
- 第9回 GoogleをWebサービスから利用するAPIの登場
- 第10回 これは使える!Java風スクリプト
- 第11回 PtoPはいよいよビジネスのステージに
- 第12回 ハリウッド映画並のCGがPCに到来する日
- 第13回 知的ゲーム「Robocode」でJavaのチャンピオンに
- 第14回 海の上のJava Night
- 第15回 Java版テラリウム? ただいま開催中
- 第16回 進化したアプレット、Viewletとは?
- 第17回 Eclipse:新しい開発環境モデルの誕生
- 第18回 Webサービス、どこまで実用になっている?
- 第19回 SWTは本当に高速なGUIを実現するのか?
- 第20回 JavaOne 2003の注目トピックを振り返る
- 第21回 SIGGRAPH 2003に見るJavaの進化
- 第22回 AmazonWebサービスの可能性
- 第23回 オープンソースの検索エンジン登場
- 第24回 技術者の祭典JTC BOFとJava Night
- 第25回 リッチクライアント時代の到来
- 第26回 Eclipse 3.0のリッチクライアントとは?
- 第27回 データ中心型、簡単リッチクライアントJDNC
- 第28回 浸透する新世代のシンクライアント
- 第29回 WebプログラマはRailsに乗るべきか?
- 第30回 Ruby On Railsのチームに学ぶ仕事術
- 第31回 JavaプログラマはAjaxに乗るべきか
- 第32回 Java SE 6へ移行する理由と移行をとどまる5つの理由
- 第33回 見つけて得するソースコード専用の検索エンジン
- 第34回 Podcastでプログラマーに必要な英語をStudyしよう!
- 第35回 人気のAPI/フレームワークを作るための39カ条
- 第36回 あなたのサイトはiPhoneで見られますか?
- 第37回 バッチ処理はJavaでバッチリ?その現状とこれから
- 第38回 Cometに代表されるサーバ・プッシュ技術の復権
- 第39回 ソースコードの宝石箱、●●Forgeを見逃すなかれ
- 第40回 Webアプリ開発環境としてのSafariを知ってますか?
- 第41回 夏休みに世界へ挑戦! プログラミングコンテスト
- 第42回 開発者が知っておくべきJavaと仮想マシンの歴史
- 第43回 あなたの知らないJDKの便利ツールたち
- 第44回 時を欠ける症状−うるう秒から考えるサステナビリティ
- 第45回 IT業界で楽しく仕事をするための10カ条
- 第46回 そのWebサービスで“対価”をもらえますか?
- 第47回 IT系でも活用しなければ損。論文を読んで広がる知見
- 第48回 Webからの知見、見つけた論文の読み解き方
- 第49回 Java技術者も知っておきたい「AR(拡張現実)」
- 第50回 クラウド活用「雲活」のために押さえるべき39のポイント
| ご意見、ご感想は掲示板へどうぞ |
| JavaコラムINDEX |
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









1970年北海道生まれ。現在、株式会社エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。

