Java10の新機能を解説!劇的に変更されたサポートポリシーとは?

Java10が2018年3月についにリリースされました。

6ヶ月ぶりのアップデートですが、新しい機能が追加されています。

そこで、今回は初心者向けにJava10の新機能をわかりやすく解説します!

この記事では、Java10の新機能について


・Javaとは?Javaの特長
・Java10の新機能
・Java10の環境構築
・ローカル変数の型推論
・copyOfメソッドの追加
・orElseThrowメソッドの追加

など応用的な内容についても解説していきます。

今回はJava10の新機能について、使い方をわかりやすく解説します!

※現在、Java11がすでにリリースされているためこの記事の情報が古い可能性があります。

そもそもJavaとは?Javaの特長

Java10の説明に入る前に、まずはJavaについて簡単におさらいしておきましょう。

Javaは1990年代にSun Microsystemsが開発・発表したオブジェクト指向という考え方を取り入れた言語です。

2010年にOracleが買収し、Oracle製品の1つになりました。

Javaは家電やモバイル機器を始めとして、多くのデバイスに搭載されています。

国内でもスマートフォンなどに搭載されていて、アプリ開発を行うにはJava言語を使って開発することになります。

2018年3月にリリースされたJava10でも新機能が追加されているので、その新機能について解説していきます。

これまでのJavaについては、こちらのサイトでも詳しく解説していますので、ぜひ参考にしてください。

Javaとは?言語の特徴や用途などを専門用語抜きで網羅的に解説
更新日 : 2019年8月21日

Java10での変更点

Java10のリリース

Java10は2018年3月20日に正式リリースされました。

前のバージョンのJava9が正式リリースされたのが2017年9月22日でしたので、6ヶ月ぶりのアップデートになります。

これまでは数年ごとに大きな機能追加を行いアップデートしてきましたが、Java9以降は6ヶ月ごとにアップデートを行うとOracle社は発表していました。

その発表どおり6ヶ月でのアップデートとなりました。

これまでは数年ごとのアップデートだったので、Javaは他の言語や技術と比較すると、進化の遅い、やや古めかしいものと見られるようになっていました。

こうした反省をふまえてJavaをこれまでより速いペースで前進させようとしているようです。

そして今回のリリースと共に大きな話題となっているのが、今回リリースされるJava10が無償で入手可能なOracke JDKの最後のメジャーバージョンであるということです。

さらに6ヶ月後にリリース予定のJava11およびそれ以降のOracle JDKは、Oracleと有償サポート契約を結んだユーザーにのみ提供されるようになります。

Oracle JDK11は無償公開されないということです。

その代わりJava11からはOracle JDKと同じ機能と品質を備えたOpenJDKが無償版のJavaとしてリリースされます。

そしてもう一つ重要な点がサポートポリシーについてです。

メジャーバージョンごとのメンテナンス期間が、次のメジャーバージョンが出るまでの間となっています。

次のバージョンのリリース予定は2018年9月ですが、Java10のメンテナンス期間も2018年の9月までということになり、それ以降はリリースされなくなります。

Java9はJava10がリリースされたので、サポートが終了しリリースも終了しています。

ただし、Oracle JDK、OpenJDK共にLTS(長期サポート)版を3年ごとにリリースする動きがあるようです。

現在の予定ではJava11、Java17がLTS版として設定されています。

新機能一覧

前回のJava8からJava9のアップデートまでは3年6ヶ月の期間があり、たくさんの機能追加がありました。

それに対して、今回のJava9からJava10へのアップデートまでは6ヶ月ですので、前回に比べれば追加された機能はそれほど多くはありません。

今回の機能追加の中でよく使われそうな機能について表にまとめます。

項目説明
ローカル変数の型推論varを用いたローカル変数の型推論
copyOfメソッドの追加コレクションのコピーメソッドの追加
orElseThrowメソッドの追加Optionalでのメソッドの追加

これらの他にも、ガーベージコレクタの入れ替え可能、不揮発性メモリ対応、バージョン表記に関するルール変更などの追加があります。

ちなみに前のバージョンJava9での主な機能追加については、こちらで詳しく解説しています。

ぜひ参考にしてください。

Java9とは?開発者に嬉しい9つの新機能を徹底解説!
更新日 : 2019年8月7日

Java10の環境構築

Java10の新機能を確認する前にJava10での開発環境を構築しなければなりません。

ダウンロードとインストール

Java10はこちらからダウンロードできます。

http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

OSを選択してダウンロードしましょう!

java10_01

インストールについては、Java8以前と大きく変わりません。

こちらのサイトで詳しく解説していますので、参考にしてください。

【Java初心者必見!】Javaの開発環境を構築する方法を解説!
更新日 : 2019年5月7日
【Mac編】Javaの開発環境を簡単に一括インストールする方法
更新日 : 2019年4月29日

アップデート

Java10にアップデートするためには現在パソコンにインストールされているJavaのバージョンがJava10かJava9以前か確認する必要があります。

ここでは、使うパソコンのOSはWindows10の場合を代表例として説明します。

Javaのバージョンを確認する方法は以下のとおりです。

Windows 10-プログラムの確認
1.「スタート」をクリックします。
2.「設定」を選択します
3.「システム」を選択します
4.「アプリと機能」を選択します
5.プログラムの一覧からJavaを探し出してバージョンを確認します

Java8check

この画像ではJava8がインストールされています。

Java8以前がインストールされている場合は、Javaをアンインストールする必要があります。

Javaをアンインストールできたら、前章のダウンロードの方法を参考にしてJava9をインストールしてください。

Windows 10-プログラムのアンインストール
1.「スタート」をクリックします。
2.「設定」を選択します
3.「システム」を選択します
4.「アプリと機能」を選択します
5.アンインストールするプログラムを選択し、「アンインストール」ボタンをクリックします。
6.プロンプトに従って、アンインストールを完了します

公式参考サイト
https://java.com/ja/download/faq/remove_olderversions.xml

Eclipseでの利用

こちらのサイトで解説しているPleiadesでJava10の開発環境も自動構築することができます。

最新の「Pleiades All in One」を選択するとJava10に対応しています。

【Java初心者必見!】Javaの開発環境を構築する方法を解説!
更新日 : 2019年5月7日

Pleiadesの環境が構築できたらJavaのプロジェクトを新規作成するときに「JavaSE-10」を選択してください。

これでJava10を使うことができます。

java10_02

ローカル変数の型推論

Java10の大きな変更点の1つにvarを使って、ローカル変数の型推論を利用できるようになりました。

型推論はすでにJavaScriptやC#などでも用いられています。

ローカル変数に値を代入する際に右辺のリテラルやコンストラクタの記述から、自動でローカル変数の型が推定されます。

ただし、ローカル変数と特定しているので、クラス変数や定数としては利用できません

ローカル変数の型推論について、サンプルコードで確認しましょう。

import java.util.ArrayList;
import java.util.List;

public class Java10Sample {
    public static void main(String[] args) {
        var i_num = 123;
        var d_num = 1.23;
        var f_num = 1.23F;
        System.out.println(i_num);
        System.out.println(d_num);
        System.out.println(f_num);

        var str = "Hello World!";
        var list = new ArrayList<String>(){
            {
                add("Apple");
                add("Orange");
                add("Melon");
            }
        };
        var listOf = List.of("a", "b", "c", "d");
        System.out.println(str);
        System.out.println(list);
        System.out.println(listOf);
    }
}

実行結果:

123
1.23
1.23
Hello World!
[Apple, Orange, Melon]
[a, b, c, d]

ArrayListでの宣言については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】Listの初期化(newとArrayListでの宣言とadd)
更新日 : 2019年3月31日

コレクションのofメソッドはJava9から利用できます。

こちらで詳しく解説していますので、ぜひ参考にしてください。

Java9とは?開発者に嬉しい9つの新機能を徹底解説!
更新日 : 2019年8月7日

また、クラス変数については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】static変数(クラス変数)の使い方
更新日 : 2019年4月4日

定数については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】static final修飾子でクラス定数を使う方法まとめ
更新日 : 2019年10月14日

copyOfメソッドの追加

List、Map、Setなどのコレクションクラスに対して、copyOfメソッドが追加されました。

copyOfメソッドを使うことで、実際にコピーせずに参照を返すことができます。

なお、copyOfメソッドで作成されたオブジェクトは変更できません

ofメソッドで作成されたオブジェクトも変更できませんが、これと同様です。

変更する場合はUnsupportedOperationExceptionの例外が発生します。

それではcopyOfメソッドの使い方をサンプルコードで確認しましょう。

import java.util.List;
import java.util.Map;

public class Java10Sample {
    public static void main(String[] args) {
        var list1 = List.of("a", "b", "c", "d");
        var list2 = List.copyOf(list1);

        System.out.println(list2);

        var map1 = Map.of("key1", "val1");
        var map2 = Map.copyOf(map1);

        System.out.println(map2);
    }
}

実行結果:

[a, b, c, d]
{key1=val1}

ofメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

Java9とは?開発者に嬉しい9つの新機能を徹底解説!
更新日 : 2019年8月7日

ListやMapの使い方については、こちらのサイトで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】ListインターフェースとArrayListクラスの使い方
更新日 : 2019年10月14日
【Java入門】Mapの使い方総まとめ(HashMapで初期化、値のソート)
更新日 : 2019年5月22日

orElseThrowメソッドの追加

Java8でOptionalクラスが追加されました。

値のない状態を「null」と言いますが、開発中はnullが原因で意図しないエラーが起こることがよくあります。

そのためif文などを使ってnullチェックの処理を書く必要がありましたが、Optionalクラスを使うと簡潔に書くことができます

Java10ではこのOptionalクラスにさらにorElseThrowメソッドが追加されました。

import java.util.Exception;
import java.util.Optional;

public class Java10Sample {
    public static void main(String[] args) {
        Optional<String> opt = Optional.empty();
        try {
            String str = opt.orElseThrow();
        } catch (NoSuchElementException ex) {
            // empty()の場合の処理
        }
    }
}

Optionalクラスの使い方についてはこちらのサイトで詳しく解説していますので、参考にしてください。

Java8の新機能を徹底解説!(ラムダ式、Streamなど)
更新日 : 2017年12月20日

OptionalクラスのメソッドについてはJava9でも追加がありました。

こちらで詳しく解説していますので、ぜひ参考にしてください。

Java9とは?開発者に嬉しい9つの新機能を徹底解説!
更新日 : 2019年8月7日

まとめ

今回はJava10の主な新機能について解説してきましたが、いかがでしたか?

Javaのリリースが6ヶ月ごとになり、追加された機能はそれほど多くはないですが、これらの機能を使いより楽をして品質の高いコードをかけるといいですね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説