原文はこちら。
https://blogs.oracle.com/java/prepare-for-java-se-9
Java 9では、これは今日のモノリシックなJava SEプラットフォームから離れる、モジュラーシステムが導入されています。後方互換性は重要な優先事項の一つであり、OracleエンジニアリングチームはスムーズにJava 9へ移行できるよう取り組んできましたが、数多くの重要な変更点がありますので、理解しておく必要があります。Alan Batemanのプレゼンテーション"Prepare for JDK 9"からの情報を身につけ、さらにこのエントリの情報を知っておけばフラストレーションを感じることはなくなるでしょう。
JDK 9では、JDK内の6個のJava EEライブラリはデフォルトでは共有されません。これらの非推奨Java EE APIは以下のものです。
ほとんどの内部APIはデフォルトではアクセスできなくなりますが、一部の重要かつ広く使用されている内部APIは、サポート対象となる置き換えのAPIが出てくるまでアクセス可能の状態になっています。ほとんどの内部APIをカプセル化に関するJEP 260では、どの重要な内部APIが引き続きアクセス可能であるかを説明しています。
例えば、そのようなAPIを使用する3rdパーティのライブラリに依存しているために、アプリケーションがJDK内部APIを使用していることに気づかないかもしれません。Java依存性分析ツールのjdepsを使用して、こうしたAPIを識別できます。このツールでは、利用可能な場合に置換候補をも提示します。Jdepsのメインページを確認してください。
https://blogs.oracle.com/java/prepare-for-java-se-9
Java 9では、これは今日のモノリシックなJava SEプラットフォームから離れる、モジュラーシステムが導入されています。後方互換性は重要な優先事項の一つであり、OracleエンジニアリングチームはスムーズにJava 9へ移行できるよう取り組んできましたが、数多くの重要な変更点がありますので、理解しておく必要があります。Alan Batemanのプレゼンテーション"Prepare for JDK 9"からの情報を身につけ、さらにこのエントリの情報を知っておけばフラストレーションを感じることはなくなるでしょう。
Chapters
- Other smaller changes in JDK 9 - (23:59)
- There is a new runtime version API, which can help you avoid parsing the Java version string. (24:11)
- New binary structure for JRE and JDK - JEP 220 (26:35)
- Class loader minor changes (29:28)
- Multi-release JAR files - JEP 238 (32:48)
- Compile for older platform versions - JEP 247 (37:09)
- jdeprscan, a tool to scan classes for deprecated APIs (38:26)
- Summary of steps to prepare for JDK 9 (39:04)
6 Steps to Prepare for JDK 9
- Upgrade tools and libraries to the newest versions that support JDK 9
(JDK 9をサポートする最新バージョンにツールやライブラリをアップグレードする) - Decide how you can migrate your Java EE functionalities in the JDK
(JDK内のJava EE機能をどのように移行できるかを決定する) - Run jdeps to check whether your or third party code use any internal APIs
(jdepsを実行して自身のコードや3rdパーティのコードが内部APIを利用しているかどうかをチェックする) - Look for “illegal reflective access” warnings, submit bugs
(「不正なリフレクションでのアクセス」の警告を探し、バグを提出する) - Audit code that parses the version string
(バージョン文字列をパースするコードをチェックする) - Read the release notes
(リリースノートを読む)
JDK 9では、JDK内の6個のJava EEライブラリはデフォルトでは共有されません。これらの非推奨Java EE APIは以下のものです。
- java.corba
- java.transaction
- java.activation
- java.xml.bind
- java.xml.ws
- java.xml.ws.annotation
Java Platform, Standard Edition Oracle JDK 9 Migration Guide Release 9ただ、将来のリリースで削除される予定のため、これは一時的な解決策であることを認識しておく必要があります。
Modules Shared with Java EE Not Resolved by Default
https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-F640FA9D-FB66-4D85-AD2B-D931174C09A3
ほとんどの内部APIはデフォルトではアクセスできなくなりますが、一部の重要かつ広く使用されている内部APIは、サポート対象となる置き換えのAPIが出てくるまでアクセス可能の状態になっています。ほとんどの内部APIをカプセル化に関するJEP 260では、どの重要な内部APIが引き続きアクセス可能であるかを説明しています。
JEP 260: Encapsulate Most Internal APIs
http://openjdk.java.net/jeps/260
例えば、そのようなAPIを使用する3rdパーティのライブラリに依存しているために、アプリケーションがJDK内部APIを使用していることに気づかないかもしれません。Java依存性分析ツールのjdepsを使用して、こうしたAPIを識別できます。このツールでは、利用可能な場合に置換候補をも提示します。Jdepsのメインページを確認してください。
Java Dependency Analysis Tool内部APIを直接参照してコードをコンパイルすると、コンパイルに失敗します。ランタイムでは、将来すべての内部APIをカプセル化することが目標です。コマンドラインオプション--illegalを使用すると、より深くデバッグしたり、将来の動作をテストするために不正なアクセスを拒否したりすることができます。これにより、今後リリースされるJavaにて削除対象のAPIによる影響を知ることができます。
Jdepshttps://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
Additional links to bookmark:
- JEP 277: Enhanced Deprecation
http://openjdk.java.net/jeps/277 - JEP 260: Encapsulate Most Internal APIs
http://openjdk.java.net/jeps/260 - JDeps tool
https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
Related Blogs:
- Prepare for JDK 9
https://blogs.oracle.com/java/get-ready-jdk9 - Looking at JDK 9 with Categories
https://blogs.oracle.com/java/jdk-9-categories
https://orablogs-jp.blogspot.jp/2017/07/looking-at-jdk-9-with-categories.html