[課題1]Javaの基本知識の解答続き

7.JVM(Java仮想マシン)

JVMの画像

JVMとは、Java virtual machine の略称で、日本語でJava仮想マシンといいます。

その名の通り、JVMが、OS及びデバイス(CPU,メモリ)の違いを吸収します。
開発者はJavaプログラム言語1つで、あたかも1つの環境(OS及びデバイス)に対して
アプリケーション開発をしている状況を作りだしています。

このあたかも1つの環境(≒仮想マシン)にみえる事を実現したのがJVMであり、JVMの目的です。

開発者がアプリケーションを開発する時には、アプリケーションの配布先の
OSやデバイスそれに付帯するCPU,メモリなどを一切気にする必要がありません。
Java言語仕様に従っていれば、動作が保証されているのがJVMの凄さです。

上図右側のようにC言語で開発した場合には、インストールするアプリケーションの
OS,デバイス及びそのメモリ、CPUの違いをプログラムを作成するときに意識する必要がありました。

そのため、OS及びデバイスが変われば、同じアプリケーションにも関わらず、
インストール先ごとにソースファイルを作成する必要がありました。

JVMはそれぞれのインストール先のOSによって、インストールするJVMを変える必要はあります。
しかしながら、それ以外の事は一切気にする必要なく、アプリケーションの開発に集中できます。

更にJVMの「GC(Garbage Collection):ガーベレッジコレクション」機能が、
メモリに常駐するJavaオブジェクトのライフサイクルを管理します。
それにより、開発者がメモリ領域の確保、メモリ領域の解放という処理を一切プログラムに表現する必要が無くなりました。

JVMの恩恵を纏めまると以下になります。

  • 1つのプログラム言語で複数の環境にアプリケーションを配備できます。
  • GCにより、アプリケーションのメモリ管理をする必要性が無くなりました。
  • 結果として、アプリケーションを多くの環境に配備しても、ソースファイルは1つで済みます。

8.Javaの歴史

Java歴史の画像

Eclipse,TomcatがJavaSE,JavaEEのバージョンアップに伴い最新バージョンに対応する動きが読み取れます。

Googleが2008年から猛烈な勢いで、バージョンアップを重ね、AndroidOS(スマホなど)の開発にAndroidSdkを主張しているのが分かります。

AndroidSdkのIDEとしてEclipseのようにAndroid Studioがあります。

IoT向けに2016年以降AndroidThnigsの動向にも目が離せません。

9.2017年日本におけるOracle社のJavaに関しての悩み

Java2017の画像

これは、あくまでも私の主観です。本当に悩まれているかはお伺いしてみないと分かりません。

JavaPlatformの各Editionのリリースの先送りなどの情報から推測しています。

10.最後に

Java言語仕様は、
JSP(JavaCommunityProcess)が
JSR(Java Specification Request)を管理し、
 ※.Java言語仕様への注文
Java言語仕様への反映を管理しています。
Javaプログラム言語仕様が
突然シェアウエア(使用料が必要)になったり、
市場から消えることが無いのでこれからも
勉強して上を目指していきましょう。

参考文献