JDK11へのバージョンアップについて

開発部のS.Kです。 だいぶ久しぶりの投稿となります。

今回はJDKの移行で少々苦戦したので、その話を少々。 OracleJDKのリリースサイクルを変え、長期サポート版が無償では公開されなくなるという話題が、ずいぶん前からありました。 実際に、OracleJDK8の無償公開版の更新は、先月(2019年1月)で停止しています。 そのため、OpenJDK11への移行を行ってみました。

所感としては、OracleJDKからOpenJDKにすることでの問題はあまり無さそうです。 ただ、そもそもJDKを11へバージョンアップするというところでは、色々と気をつけなければいけない感じです。

JDK11では、非推奨となっていた様々なモジュールが削除されています。 個人的に一番影響がありそうに思えるのは、JAXBでしょうか。 スキーマが定義された設定ファイルを、Javaプログラムから簡単に読み書きするためのモジュールです。 JDKに同梱されなくなっただけなので、別途追加することも出来るのですが、そうするとクラスローダー絡みと思われる問題が起きることがありました。 これまではJava本体と同時に読み込まれていたクラスが、もう少し後のタイミングで読まれることになるため、思わぬところでClassNotFoundExceptionが発生したりします。 クラスの読み込みに関しては結構Javaの深い知識が要求されるので、原因を調べるのが大変でした。

今後もJDKのバージョンアップは定期的に必要となる作業なので、この知見を今後に活かしたいと思います。