/* HelloWorld.java */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World !"); } }
% javac HelloWorld.java |
% java HelloWorld |
Hello World ! |
Javaに限らず、プログラミング言語で書かれたプログラムは、機械語(コンピュータが直接実行できる言語。マシン語ともいう)に変換されて実行される。この変換の仕方は大きく分けてコンパイラ方式とインタプリタ方式がある。
Javaはコンパイラとインタプリタの両方を用いるコンパイラ・インタプリタ方式である。 JavaはJavaコンパイラ(javacコマンド)で.javaファイルを.classファイルに変換する。 .classファイルの内容をバイトコードと呼び、 Javaインタプリタ(javaコマンド)はこのバイトコードを機械語に変換しながら実行する。
なぜ、このようなまどろっこしいことをするのであろうか。 それは実行速度と移植性のバランスを取ったためだと思われる。 インタプリタ型は移植性を高くするのに向いているが実行速度が遅い。 対してコンパイラ型は、コンパイルして機械語にしたコードは他の環境では動かない。 そこでJavaでは環境に依存しないバイトコード(中間コードとも呼ばれる)を設計し、 バイトコードまではコンパイルし、バイトコードはインタプリタで実行することで そこそこの実行速度を持ちながら移植性の高さを保つことに成功した。 Javaはコンパイラとインタプリタの良い面を取り入れたハイブリッドな言語と言える。
/* HelloWorld.java */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World !"); System.out.println(1); System.out.println(100); System.out.println(123.456); System.out.println(true); System.out.println("Hello " + "Java!"); System.out.println("Hello " + "Java " + "World!"); } }
import java.io.*; public class StdInput { public static void main(String[] args) throws IOException { String s1; //String(文字列)の変数宣言 BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備 s1 = buf.readLine(); //標準入力から一行読み、変数へ設定 System.out.println("input data is " + s1); //標準出力へ出力 } }
% java StdInput hello input data is hello |