Java - Java とは

Java とは

Java とはプログラミング言語のひとつで、多くの開発現場で使用されている言語です。Java の特徴として、汎用的であり OS に依存しない点があります。OS に依存しないという点は、作成したプログラムが動くプラットフォームを選ばないため、Windows 上でも MacOS 上でも動作します。例えば、Windows のアプリケーション、携帯のゲーム、サーバサイドのプログラムなどです。また、Java はコンパイラ言語であるため、インタープリタ言語よりも高速に処理することができます。

Java の特徴

Java プログラムの構文は C 言語、または C++ によく似た構文です。オブジェクト指向言語ですが、C 言語と同様にシンプルな手続き型プログラミングのスタイルでもプログラミングできます。以下は、Java で Hello World を表示するサンプルコードです。

public class HelloWorld{
   public static void main(String[] args){
     System.out.println("Hello World!!");
   }
}
Hello World

Java の大きな特徴のひとつとしてクラスベースのオブジェクト指向があります。クラスベースのオブジェクト指向は、クラスのフィールド (変数) とメソッド (関数) をまとめた仕組みをベースに構築されます。クラスベースのオブジェクト指向は、カプセル化、継承、多態性をサポートしています。

Java のカプセル化は、クラス定義文に記述する4つのアクセス修飾子 (privatepackageprotectedpublic) によってサポートされています。アクセス修飾子はフィールド定義とメソッド定義の先頭に記されます。private は同クラス内限定、package は同クラス内と同パッケージ内限定、protected は同クラス内と同パッケージ内と派生クラス内限定、public はどこからでもアクセス可能を意味します。パッケージはプログラム全体を任意に分割したソースファイルの1個以上のまとまりです。

Java の継承は、スーパークラスが1つに限られる単一継承をサポートしており、多重継承は除外されます。継承用のアクセス修飾子は無く public 継承に統一されています。継承によって既存クラスの設計を引き継ぎ、任意のフィールドとメソッドを追加した独自のクラスを作成できます。また、既存とオリジナルの全てのクラスは、基礎 API で用意されている Object クラスを継承最上位の基底クラスにするのが強制されています。

Java の多態性は、インターフェースと仮想関数を中心にしてサポートされています。親クラスの定義文で virtual 指定されたメソッドが仮想関数を表す抽象メソッドになり、その子クラスの定義文で処理内容を記述された同名のメソッドが仮想関数のプロセスを表す実装メソッドになります。Java は強い静的型付けと、安全な動的型付けも採用しており、instanceof 演算子による型審査と、(typename) によるダウンキャストがそれにあたります。

Java ではプログラムが特定のハードウェア、およびオペレーティングシステムの機能に依存する事なく、Java 実行環境が導入されたあらゆるコンピューター環境上において共通した動作を見せる事を意味する "Write once, run anywhere" (一度プログラムを書いてしまえば、どのコンピューターでも動く) がスローガンになっています。Java コンパイラは、Java プログラムのソースコードを、Java バイトコードと呼ばれる中間表現にコンパイルします。Java バイトコードは Java 仮想マシン上で実行される専用のコードになります。Java バイトコードは多くのプラットフォームでは、Java クラスファイルと呼ばれる class 拡張子のファイルにまとめられます。Java 仮想マシンは、各プラットフォームの環境の違いを吸収するソフトウェアです。Java 仮想マシンは、指定された Java クラスファイルを Java クラスローダーで読み込み、その中の Java バイトコードを逐一解釈しながら実行します。

Java プログラムは複数のスレッドを同時に走らせる事ができます。多数のスレッドを扱う大規模システムにも対応できる各種設計を備えており、その中でもスレッドグループは、各スレッドを役割や性質でグループ化して様々な一括操作を可能にしています。また、膨大な数のトランザクションをさばくシステムにおいて発生しがちなスレッド生成と破棄の繰り返しによる負荷増大を解決するための、スレッドプールとタスクキューの API も提供されています。

Java プログラムのメモリ管理は、Java 仮想マシンに備えられたガベージコレクション機能によって行われます。ガベージコレクションとは、どこからも参照されていないオブジェクトを自動的に特定して破棄し、その占有メモリを解放する機能です。

Java SE とは

Java SE (Java Platform, Standard Edition) とは、Java で使用される基本的な API をまとめたものです。API (Application Programming Interface) とは、Java の機能を利用するための呼び出し方を定義したものです。

Java SE にはバージョンを表す番号を合わせて記述します。例えば Java SE 14 などです。Java SE は定期的にアップデートを繰り返しており、リリースの予定やサポートの期限などがあります。詳細は、Oracle Java SE サポート・ロードマップを参照してください。

JRE とは

JRE (Java Runtime Environment) とは Java のプログラムを実行するためのランタイムです。JRE を OS にインストールすることで Java で作成されたアプリケーションが実行できる環境が構築できます。JRE は対応する Java SE のバージョンに合わせて、バージョン番号が付けられます。例えば JRE 14 などです。ただし、現在では JRE 単独で配布されておらず、JDK と合わせてインストールする必要があります。

JDK とは

JDK (Java Development Kit) とは Java のプログラムの開発や実行を行うための開発者向けのキットです。JRE の他に コンパイル用のプログラムや、デバッグ用のプログラムなどが含まれます。JDK をインストールすることで Java を使ったアプリケーションの作成や実行を行うことができます。JDK は対応する Java SE のバージョンに合わせてバージョン番号が付けられます。例えば JDK 14 などです。

JVM とは

JVM (Java Virtual Machine) とは Java で作成されたアプリケーションを OS 上で動かすために必要となるアプリケーションです。Java では作成したプログラムをコンパイルすると、中間表現と呼ばれるクラスファイルを出力します。クラスファイルはどの OS 上でコンパイルをしても同じものが生成されます。クラスファイルは単体では実行することができず、OS にインストールされている JVM 上で実行されます。クラスファイルが、どの OS 上でも問題なく動作するのは、JVM がクラスファイルを対象の OS で動作するように変換して実行しているためです。

関連記事