いまさら聞けない【情シス知識】Javaの種類と有償化の関係
オラクル(Oracle)による無償サポート終了で今やホットなキーワードである「Java」。自分のPCにインストールすることもあれば、Webサイト構築で使われていることも。そんな様々場所で便利に使われているJavaの解説すると共に、有償化についても触れます。
この記事の目次
Javaとは?
狭義にはプログラミング言語のJavaを指し、広義にはJava言語を中心にしたコンピューティング・プラットフォームを意味する言葉です。
Javaの歴史はインターネットの歴史にリンクするとも言え、1995年にSun Microsystemsによりリリースされたオブジェクト指向プログラミング言語になります。
Javaは、Webをより一層楽しく便利にするアプリケーションを開発するためのテクノロジーですが、JavaScriptとは異なります。(JavaScriptはWebページ作成用のシンプルなテクノロジで、ブラウザ内でのみ動作します。)
Javaを使用することで、ゲームで遊んだり、写真のアップロードやオンラインでのチャットなどができるほか、オンライン・トレーニング、オンライン・バンキング、インタラクティブ・マップなどのサービスを利用することも可能にします。今やJavaがなければ、多くのアプリケーションやWebサイトは機能しないと言えるでしょう。
そんな急速に広がったJavaですが、このテクノロジーを社内システム構築に使われている方も多いのではないでしょうか。それ故に、「オラクルの無償サポート終了」「サポート有償化」が情シスの悩みのタネになっています。
しかしながら、一言で”Java”と言っても、Java Development Kit(JDK)、Java Runtime Environment(JRE)、Java Virtual Machine(JVM)なども存在し、それぞれに役割が異なります。よく耳にするこれらの違いを見ていくことにしましょう。
JDK:Java Development Kitとは
JDK(Java Development Kit)とは、Javaプログラムを開発するための基本的なソフトウェアになります。コンパイラ、デバッガ、アーカイバ、ソフトウェアモニター、ドキュメントジェネレーターなどの基本開発ツール、及び、様々な開発支援ツール、Java API(Java Application Programming Interface)で構成されます。簡単に言ってしまえば、”Java開発キット”でしょうか。
また、エディションによって開発ツール内容とAPI構成に違いがあり、Java開発キットの呼称はこれまでに何度か変更されています。
J2SE 1.2.2_004 まで | JDK(Java Development Kit) |
J2SE 1.4 まで | Java2 SDK(Java2 Software Development Kit) |
J2SE 5.0以降 | JDK(Java Development Kit) |
JavaSE 7以降 | エンタープライズ版(Java EE):Java SDK(Java Software Development Kit)
スタンダード版(Java SE)&マイクロ版(Java ME):JDK(Java Development Kit) |
<データ出典:Wiki>
Javaのプログラム開発を始めるためには必須であり、従来はSun Microsystems/Oracle社により無料で配布されていました。しかしながら、2018年11月をもって無償版Oracle JDKの配布は終了、2019年1月より公開ダウンロードサイトにおけるアップデート提供の終了を迎えることになりました。2019年1月以降は、Oracle JDK(有償)やOpen JDK(無償)、その他の方法で提供されるJDKを利用する必要があります。(参考:「アップデート終了でどうなる、Java有償化問題」)
JRE:Java Runtime Environmentとは
JRE(Java Runtime Environment)とは、Javaアプリケーションを実行するために必要なソフトウェアになります。Java仮想マシン(Java Virtual Machine)や、”Java.exe”を始めとする様々なスターター(Web用プラグインを含む)、Javaクラスライブラリ(Java Class Library)などで構成されています。JDK=開発環境、JRE=実行環境、と思っていて良いでしょう。ユーザー(端末)は利用するに当たり、ソフトウェアパッケージか、ダウンロード、又はWEBブラウザプラグインを通して、Java実行環境(JRE)をインストールする必要があります。
尚、JREには「プライベートJRE」と「パブリックJRE」があり、以下のように定義されています。
●プライベートJRE
JDKをインストールする際には、プライベートJREがインストールされ、必要に応じてパブリック・コピーがインストールされます。プライベートJREでは、JDKに付属のツールを実行する必要があります。これにはレジストリ設定がなく、場所がJDKにのみ認識されているJavaディレクトリ(通常はC:\Program Files\jdk1.7.0\jre)に完全に含まれています。●パブリックJRE
パブリックJREは、他のJavaアプリケーションで使用でき、JDKの外部(通常はC:\Program Files\Java\jre1.7.0)に含まれています。これは、Windowsレジストリ(HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft)に登録されています。これは、「プログラムの追加と削除」を使用して削除することができ、ブラウザにも登録されます。<データ出典:Java公式サイト・概念と定義に関する用語集の説明>
JVM:Java Virtual Machineとは
JVM(Java Virtual Machine)とは、Java内で、命令を実行できるようにするソフトウェア・プログラムです。「Java仮想マシン」「JavaVM」などと呼ばれることもあります。このプログラムは通常、Javaバイト・コードで記述され、そのJavaバイトコードとして定義された命令セットを実行するスタック型の仮想マシンです。前述のJava実行環境 (JRE) として、APIやいくつかのツールとセットでリリースされます。JVMは、Javaプログラムを対象のOSで実行可能な形式のコードに変換する役割を担っており、この環境を移植してはじめて、さまざまな環境でJavaのプログラムを実行することができるようになります。Javaは、JVMがプログラムとOSの仲介をすることによって、OSごとに特別な設定をすることなく動かすことができるというのが大きなメリットなのです。
<画像出典:Designed by Freepik>
JDKの違い
JDKの種類に、Java EE、Java SE、Java MEがあることは先に述べましたが、これらは開発の目的の違いにより分類されています。
Java SE(Java Standard Edition)
Java SEは、基本(標準)仕様の機能セットであり、Java言語仕様、Java仮想マシン仕様、Java API仕様などを含んだJavaの基本機能をまとめたものです。Java言語でプログラミングを行う際に最低限必要な機能が提供されます。
このJavaSEは、パソコン上で動作するゲームや便利なソフトを作ることができます。例えば、Android OSを搭載したスマートフォンアプリをJava言語で構築する際には、このJavaSEの導入は必須となります。
Java EE(Java Enterprise Edition)
Java EEは、企業・サーバ用の機能セットとして、JavaSEをベースにサーバーサイドの機能を追加したものです。主にWebアプリケーション(もしくは動的なWebサイト)を開発する際に用いられます。Java EEは、ザックリといえば「Java SE+拡張機能」といった構成になっています。
この拡張機能を使うことで、Java言語でWebアプリケーション(もしくはWebサイト)を開発することができるようになります。
Java ME(Java Micro Edition)
Java MEは、携帯電話、セットトップボックス、Blu-ray Disc プレーヤー、デジタルメディアデバイス、M2M モジュール、プリンタなど、モバイル及び組込みデバイス用の機能セットです。小型デバイス向けのアプリケーションの構築に付随する制約に対処するために作成されたJava MEテクノロジーを制限環境に合わせて定義し、メモリ、ディスプレイ、電源容量の限られた小型デバイスで実行するJavaアプリケーションを作成することができます。
有償化されたもの
大別して”Java”には、実行環境のJREと開発環境のJDKがあることは、ご理解頂けたかと思います。
そして、オラクルが2017年9月に発表した内容は「JDKの提供サイクルとライセンス方式に関して、新たなリリース・モデルを発表」でした。これによりJava SE 8は「2019年1月より公開ダウンロードサイトにおけるアップデート提供は終了」となっています。
ここでお気づきでしょうか?有償化の対象は”JDK”であることに。故に、業務デスクトップアプリケーションや社内システムにJDKを使用している企業では、オラクルから有償サポートを受けるか、6ヶ月更新のOpenJDKを利用して無償利用をし続けるかの判断が必要となります。これについては、「アップデート終了でどうなる、Java有償化問題」の記事を参考にしてください。
おまけ
参考として、オラクル社のHPに掲載されていたJave SE改め、”Java SE Subscription”の料金表を記載します。
以下の価格は、2018年8月3日現在のものです。
Java SE Desktop Subscription 価格体系 | ||
数量 | 単位 | 月額 |
1-999 | Named User Plus | 300円 |
1,000-2,999 | Named User Plus | 240円 |
3,000-9,999 | Named User Plus | 210円 |
10,000-19,999 | Named User Plus | 180円 |
20,000-49,999 | Named User Plus | 150円 |
50,000+ | ー | 個別に相談 |
Java SE Subscription 価格体系 | ||
1-99 | Processor | 3,000円 |
100-249 | Processor | 2,850円 |
250-499 | Processor | 2,700円 |
500-999 | Processor | 2,400円 |
1,000-2,999 | Processor | 2,100円 |
3,000-9,999 | Processor | 1,800円 |
10,000-19,999 | Processor | 1,500円 |
20,000+ | ー | 個別に相談 |
<データ出典:オラクル Java SE Subscription FAQ>
まとめ
セキュリティの観点から「今後はバージョンアップをしない」という選択肢は”ない”と言って良いでしょう。
おそらく大企業や資金体力のある企業は、短期的にはオラクルの有償サポートを受けることになるのでしょう。しかしながら、それなりの出費が継続的に必要となることから、これを機にJavaを使わない技術へ移行する動きが見られるかも知れません。
Javaは、無料で使えるということで普及した一面もあると思います。OpenJDKという無償利用が可能なものがあるとは言え、6ヶ月という更新期間を考えると単純に切り替えるというのは現実的ではなく、有償化されたことで、少なからずJavaユーザーの減少が発生すると思われます。
さて、あなたの会社ではどうしますか?
■IT資産を簡単に一元管理でき、資産管理の効率化を実現できます。
【執筆:編集Gp ハラダケンジ】
https://josysnavi.jp/josys-bk_java%e6%9c%89%e5%84%9f%e5%8c%96%e5%95%8f%e9%a1%8c_181130