
ユカイ、ツーカイ、カイハツ環境!(13)
究極の問題解析ツール、逆コンパイラJD-Eclipseとは
岡本 隆史
2010/3/8
ソースコードがなくても大丈夫?
開発を行っている際に、利用しているミドルウェアやライブラリの内部で例外が発生して、そのクラスのソースコードを調べたくなることはありませんか?
例えば、以下のような場合です。
- ほかのチームが開発したモジュールのメソッドが仕様通りの動作をしない
- 処理に時間がかかっているが、何の処理に時間がかかっているのか分からない
- アプリケーションが応答しなくなり、どこかで停止しているのだが、どこで停止しているか分からない
■ ソースコードがないため、“やきもき”していませんか?
開発者であれば、誰しもこのような経験をしたことがあると思います。ソースコードがあれば、コードを調べて原因を解析できますが、商用のミドルウェアやパッケージなどでソースコードが提供されていない場合は、ソースコードがないので解析できません。
開発元に問い合わせても、すぐには対応してもらえず、やきもきすることもしばしばあります。
■ オープンソースでも、対応するソースコードを探すのは大変
オープンソースのミドルウェアやフレームワークを利用している場合でも、ソースコードをIDE(統合開発環境)に設定するのは、手間が掛かります。
また、ソフトウェアで利用されているライブラリも「commons-collection.jar」「servlet.jar」というファイル名で提供されており、利用しているソースコードのバージョンの特定が困難であったり、バージョンを特定したとしても、ソースコードの入手場所を探す必要があったりと、ソースコードの特定に非常に手間が掛かります。
JD-Eclipseは、Java 5以降に対応! しかも自動!!
フランスのEmmanuel Dupuy氏が開発するEclipseプラグイン「JD-Eclipse」を利用すれば、ソースコードが存在しない場合でも、[パッケージ・エクスプローラ]や[デバッガ]からクラスファイルへアクセスするだけで自動的にクラスファイルを逆コンパイルしてくれ、あたかもそこにソースコードがあるようにコードの中を見ることができるようになります。
注意! 「商用ソフトウェアの場合は、そのライセンスを確認」 |
| 商用のソフトウェアは、ものによっては、逆コンパイル(リバースエンジニアリング)を禁止しているものもあります。商用のソフトウェアでJD-Eclipseをご利用の際は、お使いのソフトウェアのライセンスをご確認ください。 |
以前から「JadClipse」などの逆コンパイラがありましたが、Java 5以降のバイトコード(クラスファイル)に対応していませんでした。JD-Eclipseは、Java 5以降のバイトコードでも逆コンパイルを行えることができ、アノテーションを利用したアプリケーションでも利用できます(図1)。
![]() |
| 図1 逆コンパイルされたアノテーション |
■ JD-Eclipseのライセンス
JD-Eclipseのライセンスは、“非商用”の利用の場合は無償で利用できます。ここで、「非商用」とは「商用のソフトウェアプロダクトに組み込んではいけない」という意味です。プロダクトに組む場合には注意が必要です。ツール自身の利用は、商用ソフトウェアの開発の場合でも問題ありません。
■ JD-Eclipseのインストール
Eclipseのメニューの新規ソフトウェアインストールを利用して、下記のアップデートサイトを入力してプラグインをインストールしてください。
注意! 「JadClipseなどはアンイストールしておこう」 |
| JD-Eclipseを利用する際、JadClipseなどのような逆コンパイラがすでにインストールされている場合、正しく動作しない場合があります。JadClipseを無効化するには、JadClipseプラグインをEclipseのプラグインディレクトリから削除してEclipseを再起動してください。 Pleiadesをご利用の場合は、Pleiadesのファイルを展開したディレクトリの下記の場所にJadClipseがインストールされているので、このファイルを削除してください。
|
次ページでは、実際に逆コンパイルをやってみましょう。生成されたソースコードも紹介します。
1-2 |
| Index | ||||||
|
||||||
ユカイ、ツーカイ、カイハツ環境! バックナンバー 連載インデックスへ»
- 第1回 Trac Lightningで始めるチケット式開発「電撃」入門
- 第2回 SubversionとTracでファイル管理の“迷宮”から脱出
- 第3回 分散バージョン管理Git/Mercurial/Bazaar徹底比較
- 第4回 Aptanaなら開発環境とクラウドの連携が超お手軽!
- 第5回 App Engine/AptanaなどJavaクラウド4つを徹底比較
- 第6回 Eclipse 3.5 Galileoの「実に面白い」新機能とは
- 第7回 ブラウザを選ばずWebテストを自動化するSelenium
- 第8回 JUnit/FindBugs/PMDなどを総観できるQALab/Limy
- 第9回 Googlerも使っているIntelliJ IDEAのOSS版を試す
- 第10回 Webのバグを燃やしまくるFirebugと、そのアドオン7選
- 第11回 DB設計の神ツール「ERMaster」なら、ここまでできる
- 第12回 AWS ToolkitでTomcatクラスタをEC2上に楽々構築
- 第13回 究極の問題解析ツール、逆コンパイラJD-Eclipseとは
- 第14回 AzureのストレージをJavaで扱えるWindowsAzure4j
- 第15回 Java EE 6/Tomcat 7/Gitに対応したEclipse 3.6
- 第16回 単体テストを“神速”化するQuick JUnitとMockito
- 第17回 コード探知機「Sonar」でプロジェクトの深海を探れ!
- 第18回 Team Foundation ServerでJava開発は大丈夫か?
- 第19回 Review Boardならコードレビューを効率良くできる!
- 第20回 Bazaarでござ〜る。猿でもできる分散バージョン管理
- 第21回 「Hudson」改め「Jenkins」で始めるCI入門
- 第22回 Ant使いでもMavenのライブラリ管理ができるIvyとは
- 第23回 AWSの自由自在なPaaS「Elastic Beanstalk」とは
- 第24回 Eclipse 3.7 Indigo公開、e4、Orion、そしてクラウドへ
- 第25回 Java開発者が知らないと損するPaaSクラウド8選
- 第26回 Git管理の神ツール「Gitolite」なら、ここまでできる!
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


