HOです。
スマートフォンに搭載するJavaを作るという大それた目標を立てた私ですが、
まずは、Javaの開発ができる環境を作ることから始めたいと思います。
(前回の記事はこちら )
早速始める…前に、
今回は、どのような仕組みでJavaが動くかについてまとめたいと思います。
このことがわかれば、どのような整備が必要かが見えてきます。
初めに、プログラムの基礎的な部分に触れてみたいと思います。
プログラム言語をかじったことがある方なら、よくご存知な内容と思いますが、
私が目標を達成するまでの様々な過程を書いていきたいので、取り上げます!
私たちの作るプログラムが、どのようにコンピュータで実行できるかですが、
①そのプログラム言語の定めた文法で、プログラム(ソースコード)を書きます。
②作ったプログラムを、コンピュータが実行できる形(実行ファイル)に変換します。
③変換したプログラムを実行します。
これが、私たちがプログラム言語を記述してから
実際にパソコンが動作するまでのおおまかな流れとなります。
プログラムを実行する方法により、
プログラム言語には、大きく2種類に分けることができます。
「インタープリタ型言語」と、「コンパイル型言語」です。
まず「インタープリタ型言語」についてです。
「インタープリタ(interpreter)」とは、日本語で「通訳者」などと訳せます。
"日本語を話す人"から"外国語を話す人"へ通訳をする場合、
会話ごとに一区切りずつ翻訳していきます。
同じように、
"人間の理解できるプログラム言語"から"コンピュータが理解できる機械語"へ
逐次通訳する(実行する)という方法を取るプログラム言語のことを言います。
一方「コンパイル型言語」です。
「コンパイル(compile)」とは、日本語で「編集する、まとめる」などと訳せます。
"日本語で書かれた本"を"外国人に読んでもらう本"として翻訳するとき、
あらかじめ本全体を翻訳してから読んでもらうのと同じく、
"人間の書いたプログラム言語"を"コンピュータが読める機械語"に、
あらかじめプログラム全体を翻訳しておき、必要に応じて読んでもらう(実行する)
という方法を取る言語のことを言います。
それでまとめてみると、
「インタープリタ型言語」は、「実行時に逐次通訳」するタイプなのに対し、
「コンパイル型言語」は、「あらかじめ翻訳しておいて、必要に応じて実行」するタイプと言えるかもしれません。
ちなみに、実行速度という意味で、2種類の言語を比較すると、
「インタープリタ型言語」はその都度通訳して実行しているわけですから、
あらかじめ翻訳している「コンパイル型言語」の方が実行時の速さは速くなります。
さてここからが本題ですが、
Java は基本的にはコンパイル型言語ではあるのですが、
コンピュータ(CPU)によって言語が異なる機械語ではなく、
コンピュータ(CPU)に依存しない「中間コード」にコンパイルします。
私の前回 の投稿で、
JAVAの特徴は「基本的にはどのようなOSやCPUでも動作できる」と書きましたが、
その仕組みは、この「中間コード」にあったわけです。
「それじゃあ、コンピュータは中間コードをどうやって理解するのだろう」
…と思われた方は鋭いです。
実は、さらにこの「中間コード」を、
実行するコンピュータの「機械語」へと翻訳するソフトがあるのです!
このソフトを「Java仮想マシン」または「Java VM (Virtual Machine)」と言います。
Java仮想マシンは、Windows用、Linux用などと、OSごとに用意されています。
これによって様々なOSやCPUごとの違いを吸収する仕組みなのです。
Java仮想マシンは「Java実行環境(JRE=Java Runtime Environment)」という
ソフトウェアセットに含まれています。
それで結論として、
Javaを実行するためには、
「JavaVMを含む、Java実行環境(JRE)」が必要ということです。
長くなりましたが、Javaをご存知の方には常識的な情報でありました。(;一v一)
ところで、Java実行環境をパソコンに入れても、
まだJava開発するための環境は整っていません。
それで次回 は、Javaの開発に必要なソフトについて取り上げます。