Javaの実行形式 |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
Javaの特徴の一つに
「一回書けば、いろいろな環境で動く」
っていうのがある。
Javaで一回ソフトを作ると、
OSごとにソフトを作らなくていいんだ。
ほら、普通ゲームとかは
Mac用とかWindows用とか別々にあるだろ。
Javaで作られたソフトは、同じものがどこでも動くんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
CD-ROMが
1枚で済むんだね。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
それはJavaが
バイトコードという仕組みで
動いているからなんだ。
実行形式は前回やったよな。
コンパイル型とかインタプリタ型とか。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
おいっ、
ちょっとは覚えてるよな?
プログラムの実行の仕方だぞ。
ほら、お前が
たりーんなガキんちょの図
を描いた・・・
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
たりーんじゃない!
「ぽんちょ」っていうんだよ!
あ・・・あれか。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
・・・・・
Javaの実行形式は、
インタプリタとコンパイラの両方の仕組みを
取り入れた
バイトコードという形式なんだ。
この仕組みによって、作ったソフトが
いろいろな機種で動くのを実現している。
インタプリタとコンパイルの特徴を思い出し
ながら読んでくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
 |
 |
覚えてるよ。
ほんとだってばー
もお、
ざっと見ればいいって
言ったくせに。 |
|
|
 |

|
 |
|
ぽんちょが
二人だね。 |
 |
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
バイトコード型は
コンパイラと
ランタイムの
2つのソフトを
使うんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そうそう。
この図のバイトコードから左側が
コンパイル形式で、右側が
インタプリタ形式って感じ。
2つの仕組みをバイトコードを
はさんで合体させたイメージだね。
ランタイムはインタプリタと
同じようなもんだと思ってね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
実行形式の特徴 |
|
|
インタプリタ型 |
バイトコード型 |
コンパイラ型 |
実行時に必要なもの |
ソースコード
及び
インタプリタソフト |
バイトコード
及び
ランタイムソフト |
実行形式プログラム
(バイナリ)
一般的にソフトといわれる |
翻訳
回数 |
|
|
|
速度 |
|
やや速い |
中間コードから翻訳しながら実行するため。 |
|
速い |
翻訳済の機械語の内容をひたすら実行するだけのため。 |
|
機種
依存性 |
低い |
違う種類のCPUやOSで実行する場合、その機種の「通訳」を用意すれば、どのコンピュータでも実行可能。 |
|
低い |
違う種類のCPUやOSで実行する場合、その機種の「通訳(ランタイム)」を用意すれば、どのコンピュータでも実行可能。 |
|
高い |
違う種類のCPUやOSで実行する場合、機械語が違うので実行形式プログラムを作成し直す必要がある。 |
|
秘匿性 |
低い |
実行のためにソースコードの配布が必須。そのため、読まれるとプログラムの内容が分かってしまう。 |
|
やや高い |
バイトコードはバイトデータ化されているのでそのままでは読むことはできない。 |
|
高い |
実行のためにソースコードの配布は不要。実行形式プログラムは「0」「1」なので、そのままでは読めない。 |
|
備考 |
スクリプトと呼ばれる言語はこの形式が多い。 |
インタプリタとコンパイラの利点を取り入れた形式
バイトコード= ソフト |
ゲームなどデスクトップソフトはこの形式が多い。
いわゆるソフトを作る形式。 |
|
※現在のJavaは、JITコンパイル方式(最初の実行時にバイトコードをマシン語に変換してしまい、以後は翻訳しない方式)など、高速化技術が取り込まれており、必ずしもこの表の特徴と一致しない。 |
|
|
|
|
 |
|
 |
|
はいはい |
|
【ダブルクリック】
マウスのボタンを
二回連続で押す・・・ |
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
バイトコードの特徴はこんな感じ。
バイトコードは、
一般的に言う「ソフト」にあたる。
ダブルクリックで起動するようにできるから
使用感は、普通のソフトと同じだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
Javaは、
バイトコードとランタイムの力で
「一回書けば、いろいろな環境で動く」
んだね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
やったー!
じゃあ、あたしがゲーム作ったら
どれでも動くんだね!
プレ*テ3でも動くんだよね!
W*iでも動くんだよね! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっと・・・
いつか、たぶん
もしかして、
動くといいな・・・。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
大人の
事情がね・・・ |
|
|
|
|