「Javaのプログラムはどうやって動いているの?」を試してみた

Java

【初学者向け】JJUG ナイトセミナ 「Javaのプログラムはどうやって動いているの?」

https://www.youtube.com/watch?t=23&v=QNJBcrSayME

これを実際に試してみた。

a1

javap を使ってバイトコードの逆アセンブルをする。

javap –p –c クラス名

とすると–p オプションで private メソッドも対象になる。-c オプションを付けるとバイトコードも出力される。

やってみた。

a2

add() メソッドは動画で詳しく説明されていたので良く解る。

これでお終いではちょっとさみしいので Java 8 から導入されたインタフェースのデフォルトメソッドを使うようにプログラムを変更してみる。

b1

b2

Java 7 まではインタフェースにメソッドの実装は許されてなかった。

Java 8 からは default メソッドとして可能となりました。

いったいどうなっているのでしょうか?

javap で覗いてみることにします。今度は –v オプションを使ってバイトコードと定数プールも出力させてみます。

b3

b4

この結果から解るようにインタフェース側にメソッドの実装がされています。

おもしろいですね!

しかし、部分的にバイトコードを知ることができたのですがまだまだ解らないことだらけなので次回開催を楽しみに待ってます。

Hatena タグ:

« »

Leave a Reply

* が付いている項目は、必須項目です!

次の HTML タグと属性を利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*

Trackback URL