Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Java 11の変更点を押さえよう! 標準機能になったHTTP Client API

Java 11の変更点と新しいAPI 第1回

2018/09/21 14:00

 Java 9、Java 10と6カ月ごとのリリースを終え、予定通り9月にJava 11がリリースされます。Java 10の連載でも紹介しましたが、Java 11ではサポート面の変更や既存モジュールの一部廃止などが行われます。また、Java 11はLTS版(長期サポート)であり、本格的に利用を始めようと思う方も多いのではないでしょうか。実は筆者もJava 11の状況を見てから現行で動いているシステムの移行対応をしようと思っています。特にJava 8以前の資産を維持しなければいけない開発者にとっては、影響がどのくらい生じるのか興味があるでしょう。また、新しいAPI面では、Java 9から長く待たされているHTTP関連のAPIが大きな変更点です。今回はJava 11での主な変更点の紹介と標準機能になったHTTP Client APIを中心に紹介します。

目次

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)の急速な変化のため、継続的な開発が難しくなっていることが理由だそうで、使っている方は代替策を考える必要があります。


著者プロフィール

  • WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5