バナー画像

Java の開発や学習を行う上で、JDK、JRE、Java VMなどの言葉を耳にすることがあるでしょう。

また、Java は歴史が長く、1995年にUNIXベンダーとして有名でだったサン・マイクロシステムズによって公開されたプログラミグ言語で、これまでに、多くの機能追加や廃止が行われてきました。

この記事では、Java の開発で必要とされるJDK、JRE、Java VM の違いや、Java のバージョンごとに追加された機能を解説します。

JVM、JDK、JREの違い

まず、JDK、JRE、JVM が、どういった物なのかを見ていきましょう。

JVM

JVM は Java Virtual Machine の略で、コンパイルされた class ファイル等を読み込んで、Java アプリケーションを実行する環境です。

Java では、一度コンパイルされたファイルは、Windows や Mac OS、Linux を問わず、マルチプラットフォームで動作可能であるという特徴があります。

JVMは、OS 環境ごとの違いを吸収するクッション的な役割を持ち、複数の環境で Java を実行する役割を担っています。

JRE

JRE は Java Runtime Environment の略で、Java のプログラムを動かすためのランタイム環境です。

JRE には Java プログラムを実行するための APIセットが含まれており、ソースコードをコンパイルするための開発環境は含まれません。

ポテパンダの一言メモ

現在は、JRE単体でのダウンロードは行えず、後述する JDK と合わせてダウンロードします。

JDK

JDK は Java Development Kit の略で、Java の開発を行うためのツールやコンパイラや、実行環境などが含まれています。

Java でアプリケーション開発をする場合はは、このJDK を使用します。

Javaのバージョンを確認する

現在インストールされている Java のバージョンを確認する方法を解説します。

セキュリティのリスクを回避し、安全に Java アプリを運用するために、最新のバージョンか、長期サポートが効いている LTS 版の使用が推奨されています。

GUI で Java のバージョンを確認する場合は、Windowsの「スタート」メニューから Javaコントロール・パネルを起動して確認できます。

コマンドで確認する場合は、Windows であればコマンドプロンプト、Linux や mac の場合はターミナルを起動し、次のコマンドを入力します。

java -version

もし、複数の Java のバージョンがインストールされている環境の場合、java.exe へのバスが通っている環境のバージョンが表示されます。

Java 新機能の歴史

Java は、1995年に登場して以降、多くのバージョンアップを繰り返し、新機能が追加されてきました。

ここからは、Java バージョンごとに、追加されてきた機能を Java 1.5 から振り返ってみましょう。

Java 1.5

Java 1.5 の代表的な新機能には次の3つがあります。

1つ目の総称型(Generics)は、これまでの Java の型に関する問題を解決する新機能となりました。

Java 1.4までは ArrayList などのコレクションの要素の型は Object 型となり、リストから値を取り出す時に毎回キャストする必要性があることや、要素にどのような型のオブジェクトでも追加できてしまうことから、想定外の不具合を発生させる危険性がありました。

総称型(Generics)の登場によって、次のコードのように、リストに入る要素の方を限定させることができ、冗長なキャストを行うコードや、型安全なコードを書くことができるようになりました。

//String型の値しか入らないリストを作成
List<String> list = new ArrayList<String>();

Enum は、複数の定数を一つのクラスとしてまとめるための機能です。Java 1.4までは関連する定数もすべて個別の変数として定義していましたが、Java 1.5 からは次のように1つの列挙型として定義できるようになりました。

enum Season {
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER
}

【関連記事】
Javaのコレクション「List」「Set」「Map」を使いこなそう

Java 1.6

ArrayDeque、Deque(双方向キュー)などのクラスが追加され、キューに関する機能への改善が行われました。

また、ファイルの拡張子で検索するための FileNameExtensionFilter クラスの追加など、細かい改善が行われています。

【関連記事】
Javaのキューとスタックのデータ構造をサンプルコードを見ながら理解する

Java 1.7

Java 1.7 の代表的な新機能には、次の3つがあります。

1つ目は、これまでの switch 構文では、式に指定できるのは intchar などのプリミティブ形だけでしが、文字ラ
列(String)も式に指定可能になりました。

String lang;
     switch (lang) {
         case "Python":
             typeOfDay = "Start of work week";
             break;
         case "c":
         case "c++":
             typeOfDay = "Midweek";
             break;
         case "Java":
             typeOfDay = "End of work week";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }

2つ目のダイアモンド演算子は、総称型(Generics)のクラスをインスタンス化する際に、型引数が変数の宣言などから推測できる場合、型引数を省略できるようになりました。

//Java1.5での書き方
List<String> list = new ArrayList<String>();

//Java1.7からは次のように書ける
List<String> list = new ArrayList<>();

Java 1.8

Java 1.8では画期的な変更点として、Stream API やラムダ式が新たな機能として追加されました。

Stream API はコレクションに対し、特定の条件でデータを抽出したり、コレクションの各要素を別の方に変換したり、合計値などを求める集合操作など、コレクションに対する操作を for 構文などの繰り返しを使わない形で簡潔に記述できる API です。

また、ラムダ式の登場により、関数型インタフェースを簡素化された記述でき、これを Stream API と組み合わせることで、よりシンプルな記述ができるようになっています。

【関連記事】
Java Stream API (ストリームAPI)を使ってみよう

Java 1.9

Java 1.9では、モジュールシステムが新たに追加されました。

モジュールは、Java のパッケージやリソースをモジュールという単位にまとめて、モジュールが、他のモジュールをどのように使うか、どのパッケージを他のモジュールから見えるようにするのかを制御する仕組みです。

【関連記事】
Java9の新機能と目玉機能のモジュールシステムを理解しよう

その他にも、Optionalクラスの拡張、Stream APIの機能強化、並行処理のアップデート、
並列処理の改善(スピン・ウェイト・ヒント)など、多くの新しい機能や、既存機能の強化が行われています。

まとめ

Javaの JRE、JDK、JVMの違いや、Java のバージョンごとの新機能について解説してきました。

今後のバージョンアップにも、ぜひ注目しましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。