Javaとは
1.2 Javaとは
Javaはサン・マイクロシステムズ社(現在はOracle社に買収されました)が開発したプログラミング言語です。最初のバージョンが登場したのが1996年ですから、数多く存在するプログラミング言語の中では比較的歴史が浅い言語と言えます。
Javaは、過去のプログラミング言語の良いところを引き継いで作られ、非常に幅広い分野で利用されています。Javaには他のプログラミング言語には無い独特の特徴があります。
1.2.1 Java言語の特徴
Java言語には、主に次のような特徴があります。
1. OSに依存しない
OSとは、WindowsやMacなどのオペレーティングシステムのことです。
多くのプログラミング言語の場合、プログラムを異なるOSで動作させるためには、環境に応じてプログラムを作り直す必要があり、とても手間がかかります。しかし、Javaで作成したプログラムであれば、どの環境でも実行させることができます。つまり、あるOSで作ったプログラムを別のOS用に修正する手間が不要なのです。
Javaは、“Write Once Run Anywhere”(一度書けばどこでも動く)という思想で作られています。
2. オブジェクト指向である
オブジェクト指向の概念については、詳しくは後の「Java基礎」で取り上げます。ここでは、品質の高いプログラムを効率よく開発するための考え方、というふうに理解しておいてください。Javaは、オブジェクト指向プログラミングを実現することに特化して開発されました。
3. ネットワークとの親和性が高い
プログラミング言語の種類はとても多いですが、そのなかでもJavaは比較的新しい言語です。そのため、Javaは初めからネットワークを意識して作られており、ネットワークを利用したソフトウェアの開発に向いています。コンピュータだけでなく、携帯電話や家電製品などのネットワークを利用する端末でも利用できます。また、ネットワークを利用する際に不可欠なセキュリティに関しても考慮されています。
1.2.2 Javaの動作原理
ここからは、Javaの動作原理を簡単に説明していきます。少々複雑なので、今の段階ではJavaプログラムがどのように動くのかの大まかなイメージを掴んでいただければ結構です。
まず、プログラマがJava言語で記述したプログラム(ソースコード)は、はじめにコンパイラを通った後、インタプリタを使って実行されます。
Javaプログラムのコンパイルでは、Javaで書かれたプログラムがそのままマシン語に翻訳されるのではなく、Javaバイトコードという、Javaならではの特殊なコードに変換されます。
このバイトコードがJVM(Java Virtual Machine:Java仮想マシン)と呼ばれるインタプリタに当たるものに渡され、実行時に解釈し、プログラムを実行していきます。少し、この流れを回りくどく感じた方もいるかもしれません。なぜ、わざわざこのような処理をするのでしょうか?
OSにはWindowsやMacなどの種類がありますが、ワープロソフトや表計算ソフトなどのプログラムをコンピュータで使う場合、WindowsのマシンならWindows版のソフトウェア、MacならMac版のソフトウェア、というように、そのOS専用のソフトウェアをインストールしなければなりません。
プログラムが異なるOS(WindowsとMac)で動作する様子をイメージにすると、図1.2-1のようになります。それぞれ異なる形をしたOSには、その形に正しく噛み合う形のプログラムでなければマッチせず、正しく動作することができないのです。
図 1.2.1 : Java言語以外で書かれたプログラムの動作イメージ
それぞれのOSは、解釈できるマシン語が異なるので、「コンパイル型のプログラム」を種類の違うOSで使用する場合、あらかじめそれぞれのOS用のマシン語にコンパイルしておく必要があります。その際、場合によってはそれぞれのOSに合わせてソースコードの修正が発生することもあり、非常に手間がかかります。
これに対して、Javaプログラムの動作のイメージは図 1.2.2のように、インタプリタの機能を持つJVMが、プログラムとOSの架け橋のような役割になり、種類の違うOSでも動作することができます。
つまり、JavaではこのJVMがワンクッション置かれる形でOSの違いを吸収してくれるので、少し回りくどく見えますが、OSに依存せずに動作することができるのです。
このようにJavaは、コンパイル型言語の欠点であるOS依存を克服しつつ、さらにバイトコードというマシン語に近いレベルのコードまであらかじめ変換しておくことにより、インタプリタ型言語よりも高速に動作します。
Javaは、コンパイラ型言語とインタプリタ型言語の中間的な位置づけのため、中間言語などと呼ばれます。
また、JVMは「JRE(Java Runtime Environment)」というパッケージで無償で提供されています。各OS版のJREをインストールすることで、どのJavaプログラムでも動かせるようになります。
図 1.2.2 : Javaプログラムの動作イメージ
1.2.3 Javaのプログラミングから実行までの流れ
Javaのプログラミングから実行までの流れの具体的な方法については、後の章で実際にプログラムを作成しながら解説します。ここではごく簡単に、Javaのプログラミングから実行までの流れを説明します。まず、図 1.2.3をご覧下さい。これがJavaのプログラミングから実行までの流れです。
図 1.2.3 : Javaプログラムの作成から実行までの流れ
現在では、EclipseなどのIDE(Integrated Development Environment)と呼ばれるソフトウェアの開発環境でプログラミングを行うのが主流となっているので、プログラミングを行なっている人(プログラマ)には、実際にどのような流れでプログラムが実行されているのかが見えませんが、この図と同じ事が行われています。
これから、テキストエディタとコマンドプロンプトを使ったシンプルな開発を例にして、Javaのプログラミングから実行までの流れを説明します。
1. ソースコードの記述(プログラミング)
まず、テキストファイルにプログラムを記述します。
ファイルの拡張子は必ず「.java」(例: HelloWorld.java)にします。ソースコードを記述したファイルのことを、ソースファイルと呼びます。
2. コンパイルしクラスファイルを生成
上記の1で作成したソースファイルをjavac(ジャヴァシー)というJavaのコンパイラでコンパイルします。
※ Eclipseを使用してプログラムを書く場合は、ソースファイルを保存する時にコンパイルが行われます。javacはJDK(Java Development Kit)と呼ばれる、無償で提供されている開発キットに含まれています。
JDKの取得方法やインストール方法については、後ほど説明します。
「javac ソースファイル名」というコマンドを実行(例: javac HelloWorld.java)すると、コンパイルが行われます。
ソースファイルをjavacでコンパイルすると、バイトコードが生成されます。
バイトコードに変換されたファイルは、拡張子が「.class」というファイル(例: HelloWorld.class)になります。バイトコードに変換されたファイルをクラスファイルと呼びます。クラスファイルが、Javaプログラムの実行形式のファイルになります。
3. クラスファイルの実行
JDK(またはJRE)に含まれる「java」というプログラムで、クラスファイルを実行します。この「java」がJVMに当たります。
※ Eclipseで行なう場合は、「実行」という項目を選択するだけです。
「java クラスファイル名」というコマンドを発行(例: java HelloWorld)することにより、プログラムが実行されます。クラスファイル名に拡張子「.class」は含めません。
このように、Javaのプログラムの作成と実行は1~3を繰り返して行います。