Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java abc.class バイト コード Javaの ソースコード Java コンパイラ Java インタープリタ 実行 javac コマンド java コマンド クラスファイルとも呼ばれる
① Javaアプリケーションの場合
Javaのソースコードを書く public class Hello { public static void main(String[ ] args) { System.out.println("Hello! こんにちは。"); } 例えば、ファイル名 Hello.javaでセーブする (ファイル名の拡張子を必ずjavaとすること)
コンパイルする javacコマンドを投入する: % javac Hello.java ソースファイルHello.javaがコンパイルされる プロンプト
クラスファイルができていることを確認する % ls Hello.class バイトコード(機械語ではない中間コード) クラスファイルともいう 拡張子が class になっている
インタープリタで実行する クラスファイルをJavaインタープリタで実行する (コマンド名: java) % java Hello 実行されるファイルはHello.classだが、拡張子 .class を付けずに単に Hello とする
実行結果 実行結果は標準出力(ディスプレイ)に表示される: Hello! こんにちは。
② Javaアプレットの場合
ソースコードの書き方が Javaアプリケーションと異なる import java.applet.*; import java.awt.*; public class MyName extends java.applet.Applet { public void paint(Graphics g) { g.setColor(Color.green); g.fillOval(100,50,150,75); g.setColor(Color.blue); g.drawString("私の名前は守屋です", 120, 95); }
クラスファイル Myname.class が生成される Javacでコンパイルして、 クラスファイルができるところまでは Javaアプリケーションと同様 クラスファイル Myname.class が生成される ソースファイル名ソースコードで指定された名前
htmlファイルに埋め込む <html> <head> <title> アプレット例 </title> </head> <body> <applet code="MyName.class" width="400" height="200"> </applet> </body> </html>
ウェブブラウザからURLをクリックする 1.htmlファイルをウェブサーバによって決まっている適当な場所(ウェブのルートディレクトリ以下)にセーブする 例えばファイル名を Myname.html とし ~ユーザID/public_html/infomath6/Myname.html にセーブする 2.そのURLをブラウザでクリックしてブラウズする http://www.edu.waseda.ac.jp/~ユーザID/infomath6/Myname.html
アプレットの表示結果(ブラウザ内)
ブラウザはウェブサーバーからデータを もらって自分で表示する em.edu.waseda.ac.jp の Webサーバー <HTML> <HEAD><TITLE> Moriya Lab Home Page </TITLE></HEAD> <META NAME="E.Moriya" CONTENT="text/html; CHARSET=x-sjis"> <BODY BGCOLOR="ffffff" BACKGROUND="gif/backs/moriya.gif" WIDTH=150> <CENTER> ① ユーザがURL http://www.em.edu.waseda.ac.jp をクリックすると、ブラウザは相手サーバーへリクエストを送る ② サーバーは要求し応じて、例えばhttp://www.em.edu.waseda.ac.jp のトップページのHTMLファイルをブラウザへ送る Webブラウザ ③ ブラウザはHTMLファイルを解釈してウインドウに表示したり、指定された動作をする ④ ブラウザとサーバーは、必要に応じて①~③のやり取りを何回も行なう(このやり取りの書き方を決めたものがHTTPプロトコル)
インタープリタの実行は遅いので・・・ インタープリタは実行速度が遅い → JIT (just in-time compiler) アプレットの実行時、中間コードを変換してある程度の量の命令語を蓄積して機械語に変換し、まとめて処理する ウェブブラウザがJIT対応になっている