2 Java言語の変更
この項では、Java SE 9以降のリリースで更新された言語機能の概要を示します。
Java SE 11のJava言語の変更
| 機能 | 説明 | JEP | 
|---|---|---|
| ローカル変数の型推論: スタイル・ガイドラインも参照してください。 | Java SE 10で導入されました。このリリースでは、暗黙的に型指定されるラムダ式の仮パラメータを宣言するときに ローカル変数の型推論は、初期化子を伴うローカル変数宣言に型推論を拡張します。 | 
Java SE 10のJava言語の変更
| 機能 | 説明 | JEP | 
|---|---|---|
| ローカル変数の型推論: スタイル・ガイドラインも参照してください。 | このリリースで導入されました。 ローカル変数の型推論は、初期化子を伴うローカル変数宣言に型推論を拡張します。 | JEP 286: ローカル変数の型推論 | 
Java SE 9のJava言語の変更
| 機能 | 説明 | JEP | 
|---|---|---|
| Javaプラットフォーム・モジュール・システム。OpenJDKのProject Jigsawを参照してください。 | このリリースで導入されました。 Java Platformモジュール・システムでは、モジュールという新しい種類のJavaプログラミング・コンポーネントが導入されています。モジュールは名前付きで自己記述型のコードとデータのコレクションです。タイプ(Javaのクラスとインタフェース)を含むパッケージのセットとしてコードが編成されており、リソースおよび他の種類の静的情報がデータに含まれます。モジュールはパッケージをエクスポートまたはカプセル化でき、他のモジュールに対する依存関係を明示的に表現できます。 | |
| 言語の小さな機能拡張(Project Coin): | Java SE 7では、Project Coinとして導入されました。これはいくつかの修正で拡張されています。 | 
さらに簡潔になったtry-with-resources文
finalとしてのリソースがすでにあるか、実質的にfinalの変数がある場合、新しい変数を宣言せずにその変数をtry-with-resources文で使用できます。「事実上final」の変数とは、初期化された後に値が変更されることがない変数のことです。
                     
たとえば、次の2つのリソースを宣言したとします。
        // A final resource
        final Resource resource1 = new Resource("resource1");
        // An effectively final resource
        Resource resource2 = new Resource("resource2");Java SE 7または8では、次のように新しい変数を宣言します。
        try (Resource r1 = resource1;
             Resource r2 = resource2) {
            ...
        }Java SE 9では、r1およびr2を宣言する必要はありません。
                     
// New and improved try-with-resources statement in Java SE 9
        try (resource1;
             resource2) {
            ...
        }the try-with-resources文の詳細な説明は、Javaチュートリアル(Java SE 8以前)を参照してください。
プライベート・インスタンス・メソッドで許可される@SafeVarargsの注釈
@SafeVarargsの注釈がプライベート・インスタンス・メソッドで許可されます。これは、オーバーライドできないメソッドのみに適用できます。これらには、静的メソッド、finalインスタンスのメソッド、およびプライベート・インスタンスのメソッド(Java SE 9の新機能)が含まれます。