Java SE 9では、今までのJavaでは考えられなかった機構が取り入れられました。Java SE 8までは非公式に行われていた実験的なAPIの実装を、Java SE 9では「JEP 11: Incubator Modules」として公式にできるようになったのです。

 今までJava SEで公開されたAPIは、表向きにはすべて標準化されたAPIという扱いになっています。しかし、sun.misc.Unsafeクラスやsun.misc.BASE64Encoderクラスのように、標準化されていないAPIも存在しました。これらの非標準のAPIはドキュメントもそろっていないことが多く、知っている人だけが使えるAPIになっていました。

 ところがJava SE 9は、Project Jigsawの導入に伴い、パッケージ名がsunで始まるほとんどのAPIが使用できなくなっています。sun.misc.Unsafeクラスなど影響の大きいAPIは引き続き使用できますが、今後のリリースでは使えなくなる可能性が高いです。今まで抜け穴になっていた非標準のAPIを提供するすべがなくなってしまったわけです。

 とはいうものの、標準化は完了していないが、実験的に提供したいというAPIもあるかもしれません。例えば、BASE64Encoderクラスは非公開APIでしたが、その後標準化が進められ、Java SE 8からは標準のAPIとなっています*1

 このように、標準化されていないAPIを実験的にJava SEに含めることは、使用者からのフィードバックを集めやすくなり、使いやすいAPIにするためには有効です。Java SE 9では、HTTP/2 ClientがIncubator Moduleとして提供されます。そこで、今回からIncubator ModuleとHTTP/2 Clientを紹介していきます。

*1 もっとも、クラス名はjava.util.Base64.Encoderクラスに変更され、使い方も若干変わりました。

この先は会員の登録が必要です。今なら有料会員(月額プラン)登録で6月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら