タイトルJavaBrowserでクラスの内容を逆コンパイルした結果を参照するプラグインカテゴリー開発ツール, Java
作成日2001/5/30 22:11:3作成者新居雅行
Anjo Krank氏による「ReSource Viewer for JavaBrowser」は、Developer Toolsに含まれているJavaBrowserの機能を拡張するものだ。Developer Toolsをインストールすると、/Developer/ApplicationsにJavaBrowserがインストールされる。そして、フレームワークとして組み込まれているJavaのクラスの内容がブラウズできるのではあるが、すべてのクラスについて満足な情報は得られるとは限らない。ソースはほとんどなく、Cocoa系でドキュメントが参照できるが、その他はメソッドの一覧などが見られるだけだ。しかししながら、ReSourceを使うと、Javaのソースとして各クラスの内容を見ることができる。つまり、ソースが用意されていなくても、バイトコードからの逆コンパイラを利用して、ソースを見ることができるというものだ。たとえば、以下の図のように、MRJを構成するクラスのソースを見ることができる。ウインドウ下の左から2つ目のボタンがReSourceを選択するボタンで、これをクリックして選択しておくと、背後で逆コンパイラが稼働し、クラスの逆コンパイル結果を参照することができる。

□ReSourceを組み込んだJavaBrowser
 

MRJの各クラスの動きについては、かなり子細にチェックすることができるだろう。また、ドキュメント化されていないクラスについても、おおむね動作は判読できそうだ。Cocoa関連のクラスはブリッジ部分だけなので、定義がずらずらと並ぶ形式になる。

インストールのやり方がちょっと複雑なので、ポイントを解説しておこう。まず、以下のReSourceのdmgファイルをダウンロードする。そのままだとWebページにバイナリデータが表示されてしまうのなら、ディスクにダウンロードするように処置を行う。

◇ReSource
 http://www.prnet.de/RegEx/ReSource.dmg

一方、以下のページから、逆コンパイラのコマンドjadをダウンロードしておく。Mac OS X向けのバイナリがあるので、それを探してダウンロードすればよい。

◇Jad - the fast JAva Decompiler
 http://www.geocities.com/SiliconValley/Bridge/8617/jad.html

ダウンロードしたjadのファイルは、/usr/local/binというディレクトリにコピーしておくと説明されているが、Terminalで、sudo cp ... 形式のコマンドを入れないと、通常のユーザではコピー先のディレクトリにはアクセス権がないのでコピーができない。
一方、ダウンロードしたReSource.dmgをマウントするが、ReSource.bundleというファイルがある。まず、このファイルのありかを確認しておき、JavaBrowserをFinderで見つけておく。JavaBrowserのアイコンをcontrol+クリックして「パッケージの内容を表示」を選択する。そして、パッケージの中のContents/Resourcesというフォルダに、ReSource.bundleというファイル(ほんとうはフォルダ)を、コピーしておく。つまり、JavaBrowserにReSourceの機能をプラグイン的に組み込むというわけだ。以上のような手続きで利用できるようになる。

リバースエンジニアリングの絡みもあり、こうしたツールの紹介には若干の問題があるのかもしれないが、開発者としては、それなりにシステムの動きを解析したいと感じるときもあるだろうから、あえて紹介をしてみた。Javaのフレームワークについて知りたい場合には有力な手段が提供されると言える。
関連リンク