Java 9 新機能

Java 9 は 2017 年 9 月 22 日にリリースされ、多くの新機能がもたらされました。その中で最も主要な変更は、すでに実装されたモジュール化システムです。次に、Java 9 の新機能を詳しく紹介します。

Java 9 新機能

  • モジュールシステム:モジュールはパッケージのコンテナであり、Java 9 の最大の変更の一つはモジュールシステム(Jigsaw プロジェクト)の導入です。
  • REPL (JShell):対話型プログラミング環境。
  • HTTP 2 クライアント:HTTP/2 標準は HTTP プロトコルの最新バージョンです。新しい HTTPClient API は WebSocket と HTTP2 ストリーム、およびサーバープッシュ機能をサポートします。
  • 改良された Javadoc:Javadoc は API ドキュメント内での検索をサポートするようになりました。さらに、Javadoc の出力は現在 HTML5 標準に準拠しています。
  • マルチリリース対応 JAR パッケージ:マルチリリース対応 JAR 機能を使用すると、特定のバージョンの Java 環境でライブラリプログラムを実行する際にのみ選択される class バージョンを作成できます。
  • コレクションファクトリメソッド:List、Set、Map インターフェースでは、新しい静的ファクトリメソッドを使用して、これらのコレクションの不変インスタンスを作成できます。
  • プライベートインターフェースメソッド:インターフェースで private メソッドを使用できます。private アクセス修飾子を使用して、インターフェース内にプライベートメソッドを記述できます。
  • プロセス API: オペレーティングシステムプロセスを制御および管理するための改良された API。java.lang.ProcessHandle とそのネストされたインターフェース Info が導入され、開発者はローカルプロセスの PID を取得するためにしばしばネイティブコードを使用しなければならないという窮地から解放されます。
  • 改良された Stream API:改良された Stream API には、ストリーム処理を容易にし、コレクタを使用して複雑なクエリを記述するための便利なメソッドが追加されました。
  • 改良された try-with-resources:すでに final または final と同等の変数であるリソースがある場合、try-with-resources 文でその変数を使用でき、try-with-resources 文内で新しい変数を宣言する必要はありません。
  • 改良された非推奨アノテーション @Deprecated:@Deprecated アノテーションは Java API の状態をマークでき、マークされた API が削除される予定であることや、すでに壊れていることを示すことができます。
  • 改良されたダイヤモンド演算子(Diamond Operator):匿名クラスはダイヤモンド演算子(Diamond Operator)を使用できます。
  • 改良された Optional クラス:java.util.Optional には多くの新しい便利なメソッドが追加されました。Optional は直接 stream に変換できます。
  • マルチ解像度画像 API:マルチ解像度画像 API が定義され、開発者は異なる解像度の画像を簡単に操作および表示できるようになりました。
  • 改良された CompletableFuture API: CompletableFuture クラスの非同期メカニズムは、ProcessHandle.onExit メソッドの終了時に操作を実行できます。
  • 軽量な JSON API:軽量な JSON API が組み込まれています。
  • リアクティブストリーム(Reactive Streams)API: Java 9 のリアクティブプログラミングをサポートするために、新しいリアクティブストリーム API が Java 9 に導入されました。

より多くの新機能については、公式サイトを参照してください:What's New in JDK 9

JDK 9 ダウンロードアドレス:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-doc-downloads-3850606.html

Java 9 に関する記事のサンプルでは、すべて jdk 1.9 環境を使用しています。以下のコマンドで現在の jdk のバージョンを確認できます:

$ java -version
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+163)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+163, mixed mode)
次に、Java 9 の新機能について詳しく紹介します:
番号 機能
1 モジュールシステム
2 REPL (JShell)
3 改良された Javadoc
4 マルチリリース対応 JAR パッケージ
5 コレクションファクトリメソッド
6 プライベートインターフェースメソッド
7 プロセス API
8 Stream API
9 try-with-resources
10 @Deprecated
11 内部クラスのダイヤモンド演算子(Diamond Operator)
12 Optional クラス
13 マルチ解像度画像 API
14 CompletableFuture API
その他の拡張