Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
70
Help us understand the problem. What is going on with this article?
@kawasima

【随時更新】JDK9の非互換ポイント

More than 5 years have passed since last update.

JDK9でいくつかImcompatibleな問題に直面したので、ここにGitHubのIssueから、各プロダクトで挙がっているJDK9の不具合ポイントをまとめていきます。

java.specification.versionの体系変更

JDK9からは、JEP 223にともない、バージョン番号の表記が変わりました。そして、システムプロパティjava.specification.versionの返す値も従来の「1.8」みたいな値から「9-ea」が返ってくるようになっています。

このため、HibernateValidatorでは、以下の箇所でArrayIndexOutOfRangeExceptionが出てしまっていました。

String[] specificationVersion = System.getProperty( "java.specification.version" ).split( "\\." );

return Integer.parseInt( specificationVersion[1] );

sun.misc.VMの廃止

Intellij IDEAで発生していた問題ですが、sun.*パッケージのいくつかはjdk.internalパッケージに移され、本当にJDK内部でしかアクセスできないクラスになりました。(ちょっと前に廃止か?との噂があったsun.misc.Unsafeは、そのままアクセスできます。)

String内部のデータ表現がchar[]からbyte[]になった

JEP 254にしたがい、内部表現がUTF-16のchar配列だったのが、1バイトのみで扱えるものは1バイトで、それ以外は従来どおりUTF-16で持つように変更になりました。

String#toCharArrayでは、新しいchar[]に値がコピーされるので、その分の性能ロスを嫌って、直接Stringのvalueフィールドにアクセスしているようなプロダクトは影響を受けることになります。

AppClassLoaderがURLClassLoaderを継承しなくなった

Jigsaw対応のため、たいていの場合システムクラスローダーとして使われるAppClassLoaderが、URLClassLoaderを継承しなくなりました。

システムクラスローダーのクラスパスをURLClassLoaderにキャストして取得しているところは、ClassCastExceptionになるので、対応が必要になります。

((URLClassLoader) getClass().getClassLoader()).getURLs()

-XX:PermSize, -XX:MaxPermSizeの廃止

JDK8ですでに警告が出て無視されていましたが、JDK9ではオプション自体が削除されエラーになるようになりました。

その他

まだそれが原因で問題が出ているIssueは見当たりませんが…以下の変更があります。

70
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kawasima
Clojure関連のことをブログがわりに書き綴ります。 ※ここでの発言はシステムエンジニアを代表するものであって、所属する組織は二の次です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
70
Help us understand the problem. What is going on with this article?