今更JD-Eclipseを触って見るなど

はじめに

 Pleiadesに同梱されているJadClipseが惜しい感じなので他に良いのがないか見てみたところ、JD-Eclipseと言うのが良いらしい。
 JD-Eclipseを知ったのが世間から約1年遅れであるようなので、自分のアンテナをもっと高くしなくてはと同時に思った。とほほ。

環境

インストール方法

 以下のサイトを参照する。本家サイトは英語で書いてくれているので、そちらも読んだ方が良い。フランス語じゃ無くて良かった…。

使ってみて分かったこと

以下のことが分かった。

  • ナビゲータービューから使おうとしていけない。パッケージエクスローラーかプロジェクトエクスプローラーから使わなければならない。
  • ライブラリーとして参照しているjarの中を見るのは簡単だが、それ以外をみる方法はよく分からない。例えば、ソースディレクトリにあるファイルから生成したクラスファイルを、逆コンパイルする方法とか。見方がよく分からないときは、http://java.decompiler.free.fr/?q=jdguiを使った方がおそらく悩まなくて良い。

コンパイル結果の例

 逆コンパイル結果はそれなりにインテリジェントなようです。
 例えば、逆コンパイル前のコードとして、以下のコードがあったとします。StringBuilderを使っていると言うことに注目してください。

     0  aload_0 [this]
     1  invokespecial org.apache.wicket.protocol.http.WebApplication() [8]
     4  iconst_0
     5  istore_1 [i]
     6  goto 29
     9  new java.lang.StringBuilder [10]
    12  dup
    13  ldc <String "a"> [12]
    15  invokespecial java.lang.StringBuilder(java.lang.String) [14]
    18  iload_1 [i]
    19  invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [17]
    22  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [21]
    25  astore_2
    26  iinc 1 1 [i]
    29  iload_1 [i]
    30  bipush 10
    32  if_icmplt 9
    35  return

 逆コンパイル結果は以下のようになります。

 ちゃんと、通常の文字列結合に直されていますね。

  public WicketApplication()
  {
    for (int i = 0; i < 10; i++)
      String str = "a" + i;
  }

さいごに

 オープンソースの場合、元のソースを見たい時に、CVSからソースを取ってくる必要があり面倒なことがあります。JD-Eclipseを使えばちょっとは手抜きできる、かな。