Java 11での主な機能追加点
Java 11での変更は、主に以下のような変更が追加されています。
- ラムダ式でのvarを用いた型推論
- 新しいHTTP Client(正式版)
- シングルJavaファイルからの即時Java実行
- Unicode 10のサポート
- 新しいガベージコレクション方式の追加
- セキュリティ機能・APIの強化(TLS1.3のサポート・暗号・署名機能の強化)
- Javaのモニタリング機能の強化(Flight Recorderの追加等)
Java 10でのvarによる型推論ではラムダ式でvarの利用ができませんでしたが、Java 11ではできるようになります。
また、当初Java 9でリリースされる予定だったHTTP Client APIがJava 9、Java 10の実験的ステータスを経て正式リリースとなっています。
また、Java 9でJShellを利用した学習環境や簡易的なJavaの実行環境における改善がありましたが、今回のバージョンでも改善があり、1つのJavaファイルであれば、コンパイルすることなく直接javaコマンドで実行もできるようになりました。
そして、Oracle版JDKはJava 11から無償公開されませんが、Oracle版JDKにあったJavaのモニタリング機能などがOpenJDK側にも取り込まれ、新しいガベージコレクションなど、JVMの最適化や改善も行われています。
Java 11で削除される注意すべき変更点
追加される機能がある一方、Java 11では削除、もしくは非推奨になるAPIも多くあり、注意が必要です。
Java 8まではリリースされるごとにカバー範囲を広めている感じがありましたが、Java 11になりカバー範囲の再整理をした印象を受けます。以下の機能が削除、もしくは非推奨になっています。
- CORBA関連モジュールの削除
- Java EE関連モジュールの削除
- JavaFX関連モジュールの削除
- Java Script Engine (Nashorn)を非推奨レベルに変更
- Pack200形式の圧縮ツールとAPIを非推奨レベルに変更
もっとも多くの方に影響を与えると思われるのが、Java EE関連モジュールの削除です。Java EEのモジュールの削除では以下のライブラリとパッケージが削除されます。
- JAXB (XMLとJavaとのバインディングAPI) - java.xml.bind
- JAX-WS (XMLベースのWEBサービス用API) - java.xml.ws
- JAF (JavaBeans Activation Framework ) - java.activation
- Common Annotations - java.xml.ws.annotation
- CORBA - java.corba
- JTA (Java Transaction API ) - java.transaction
ただし、CORBA以外についてはMaven Artifactなどを利用して外部のライブラリとして取得可能であり、代替案があるため大きな心配はいりません。
また、これらのAPIはアプリケーションサーバ上で利用しているケースが多いので、フレームワークを開発しているエンジニア以外は大きな問題にぶつかることはないかもしれません。
そして、JavaFXについても非推奨となり、Java Web Startも利用できません。Javaでデスクトップアプリケーションを開発しているエンジニアはあまり多くないかもしれませんが、JavaFXがなくなってしまうのは、Javaにおけるリッチインターネットアプリケーション(RIA)の衰退を想像させ、少々寂しさを感じてしまいます。
これらのソリューションは、HTML5で多くの部分をカバーできるようになってきたとはいえ、それでも不十分なケースがあるので、JavaFXのようなソリューションが残ればJavaエンジニアにとってはありがたいことです。
JavaFXはOpenJFXとして継続されます。
また、JavaScriptエンジンとしてJavaを使っていた方にも大きな影響があります。
現在は非推奨レベルですので利用は可能ですが、JavaScript(ECMAScript)の急速な変化のため、継続的な開発が難しくなっていることが理由だそうで、使っている方は代替策を考える必要があります。