実践 Java「javapコマンドでクラスファイルを逆アセンブル」

java

この記事の概要

■目的
Javaでは、ソース上に記載がなくても、コンパイラが自動で付加するコードがあります。
これを具体的に確認する方法を示します。

■説明
「.javaファイル」をコンパイルすると「.classファイル」が作成されます。
このclassファイルはJVMが理解するためのバイトコードで表現されており、人間には解読困難なため、
JavaのSDKで用意しているJavapコマンドで逆アセンブルすることで確認します。

javapコマンドでclassファイルを逆アセンブル

eclipseで操作していますが、やりたいことは、確認したい.classファイルのパスの確認です。
既に分かっていれば、以下の操作は不要です。

【操作】
1.eclipseを起動
2.対象のファイルを選択し、「システムエクスプローラー」で実ファイルの存在する
  パスへ移動
3..javaファイルの格納しているパスにsrcフォルダに移動しているが、一つ上の階層の
  .classファイルが存在するbinフォルダに移動する。

javapコマンドでclassファイルの逆アセンブル結果を確認
【操作】
1.コマンドプロンプトを起動
2.classファイルの存在するパスへカレントディレクトリを移動する
  【コマンド】
   cd パス
   dir
3.逆アセンブルコマンドの実行
  【コマンド】
   javap -c ファイル名

【表示結果の確認】
上記のようにA.classを逆アセンブルすると2つのメソッドで構成されていることが分かる
・public A();
・public void calc();

public Aの部分がA.javaに存在しない、コンパイラが自動付加した部分になります。
コンストラクターの記述がない場合は処理なしのデフォルトコンストラクターを付加すると
いうものです。

以下に参考までに、A.javaの記載内容を示します。

タイトルとURLをコピーしました