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の恩恵を纏めまると以下になります。
Eclipse,TomcatがJavaSE,JavaEEのバージョンアップに伴い最新バージョンに対応する動きが読み取れます。
Googleが2008年から猛烈な勢いで、バージョンアップを重ね、AndroidOS(スマホなど)の開発にAndroidSdkを主張しているのが分かります。
AndroidSdkのIDEとしてEclipseのようにAndroid Studioがあります。
IoT向けに2016年以降AndroidThnigsの動向にも目が離せません。
これは、あくまでも私の主観です。本当に悩まれているかはお伺いしてみないと分かりません。
JavaPlatformの各Editionのリリースの先送りなどの情報から推測しています。
Java言語仕様は、
JSP(JavaCommunityProcess)が
JSR(Java Specification Request)を管理し、
※.Java言語仕様への注文
Java言語仕様への反映を管理しています。
Javaプログラム言語仕様が
突然シェアウエア(使用料が必要)になったり、
市場から消えることが無いのでこれからも
勉強して上を目指していきましょう。