Javaクラスライブラリ
実行環境(JRE)
開発環境(JDK)にも、実行環境(JRE)にも、
Javaクラスライブラリが入っています。
目次
1.開発環境と実行環境
めちゃくちゃ今更なんだけど、
Javaの開発環境と実行環境について
話しておきたい。
ほほぅ。
開発環境(JDK)
「Java超入門」で使用してきた JDK (Java Development Kit)は、
Javaの開発環境です。
JDK には実行環境(JRE)が含まれます。
この辺は大丈夫かな?
OK~。
実行環境(JRE)
Javaのプログラムを開発していない人も、Javaのプログラムを実行するためには
Javaの実行環境が必要です。
それが JRE (Java Runtime Environment) です。
JRE には、Javaバーチャルマシン (Java virtual machine) と API が含まれています。
この API の部分に含まれているのが、今回ご紹介していきたい Javaクラスライブラリ というわけです。
なお、Javaバーチャルマシンは、
Java仮想マシン
Java VM
JVM
などと呼ばれていますが、どれも同じものです。
重要
開発環境(JDK)には、実行環境(JRE)が含まれています。
実行環境(JRE)には、Javaクラスライブラリが入っています。
JDKにもJREにも、Javaクラスライブラリが
入っているということだ。
ちなみに、「Javaをインストールする」と言った場合、ソフトウェア開発に関係が薄い方の場合には JRE を指します。
「Javaと言ったら JDK だろ!」と切れるオッサンがいた場合には、「日本語って難しいっスね。」と受け流しましょう。
2.JavaバーチャルマシンがもたらすJavaの特徴
一般的なコンパイル型言語と、Javaの違いを比較してみましょう。
ここではJavaという言語の特徴について
紹介していきたい。
ハーイ!
一般的なコンパイル型言語の場合
同じソースのプログラムでも、OS や CPU などの環境が変われば、実行ファイルもそれに合わせて変える必要があります。
このため、多くのプログラム言語では、ソースをコンパイルして作成した実行ファイルを、他のパソコンで実行しようとしても、
システム環境が異なると、実行に支障が出ます。
そのため、実行ファイルを公開する場合には、システム環境を指定したり、
ソースファイルを公開して、「使用するパソコンで自分でコンパイルしてね。」とします。
つまり、使用する人は
コンパイルできる程度のスキルが
必要ということですか?
C/C++ は特にね。
Windows用は実行ファイルが
アップロードされてるけど
Linux のは無いってこと多いから
コンパイルが必要なこともあるわ。
Javaの場合
一方 Javaの場合には、コンパイルによって classファイルを作成しますよね。
実は、classファイルは完全な実行ファイルではなく、その途中の「Javaバイトコード」と呼ばれる中間表現にコンパイルされたものです。
Javaバーチャルマシンは、Javaバイトコードを実行するためのソフトウェアです。
Javaバーチャルマシンは、様々なシステム環境に対応したバージョンが提供されていて、
JavaバイトコードはJavaバーチャルマシンを持つ全てのシステムで動作します。
write once, run anywhere
(一度書いてしまえば、どこでも走る)
例えば、Windows で作った classファイルを、Linuxや MacOS のPCで実行したり、
その逆であっても大丈夫です。
32bitマシンも、64bitマシンでも、
x86アーキテクチャのCPUでも、ARMアーキテクチャにも Javaバーチャルマシンが用意されています。
私はやったことは無いけど、
家電製品への組み込みシステムでも
動いているそうだ。
Raspberry PI (ラズパイ)
ってシングルボードコンピュータも
ARM だけど、ちゃんと動いたわ。
3Billion devices run java
(30億のデバイスがJavaを実行しています。)
地球の人口が
80億人みたいっスね。
3.Javaクラスライブラリの参照
例えば。
System.out.println(”Hello!”);
の様なコードを含む classファイルを別のパソコンにコピーして実行します。
Systemクラスは、
Javaクラスライブラリ の java.lang.System.class の事です。
ご参照↓
Java超入門
第二十一章 コマンドラインから入力する
Javaクラスライブラリの利用
3.java.lang はimport免除
でも、作成した classファイルには、java.lang.System.class は含まれていません。
そうです。
実行したパソコンの 実行環境(
JRE) の中の
Javaクラスライブラリ から java.lang.System.class を参照するのです。
重要
実行時には JRE の Javaクラスライブラリを参照しています。
実行するだけなら
JRE だけあれば
十分だ。
お疲れ様でした。