Skip to content

Instantly share code, notes, and snippets.

@koduki
Created May 7, 2025 11:24
Show Gist options
  • Save koduki/39219bb8429ac2d6979ea4072b98d736 to your computer and use it in GitHub Desktop.
Save koduki/39219bb8429ac2d6979ea4072b98d736 to your computer and use it in GitHub Desktop.
JDK 8 → JDK 21 非互換一覧(ChatGPTのDeekResearchで抽出)

JDK 8 → JDK 21 非互換一覧

JEP / Issue 番号 非互換が追加された JDK バージョン 概要 問題の発生タイミング 非互換の詳細 発生し得る主な問題 改修案 重要度
JEP 261 9 Java モジュールシステム導入で JDK をモジュール化、内部 API を封鎖 コンパイル / デプロイ / 実行 非公開 API への反射が警告→エラー、標準外モジュールは解決されず ClassNotFound、IllegalAccessError、スプリットパッケージ衝突 --add-modules / --add-opens で公開、ライブラリ更新
JEP 396 / 403 16 / 17 内部 API の強力なカプセル化と --illegal-access モード廃止 実行 JDK 16+ で反射アクセスは InaccessibleObjectException フレームワーク初期化失敗 --add-opens 指定、最新ライブラリへ移行
JEP 220 ほか 9 モジュラーランタイムイメージ、rt.jarlib/ext・endorsed 機構廃止 デプロイ / 実行 自動クラスパス読込不可、レイアウト変更 JAR 不検出、スクリプトがパス誤認 JAR をクラスパス/モジュールパスに明示、スクリプト修正
JEP 320 11 Java EE / CORBA モジュール完全削除 コンパイル / デプロイ / 実行 JAXB・JAX‑WS など javax.* が JDK から消滅 NoClassDefFoundError、SOAP エンドポイント起動失敗 Jakarta 版ライブラリ同梱、GlassFish 最新版
JEP 289 11 Applet・Java Web Start 削除 クライアント実行 javaws・plugin・appletviewer 不在 アプレット/JNLP 起動不可 Web 技術へ移行、OpenWebStart 代替
JEP 372 15 Nashorn JavaScript エンジン削除 コンパイル / 実行 jdk.nashorn.*jjs なし ScriptEngine が "nashorn" を取得不可 GraalJS / Rhino 導入、スクリプト改修
JEP 407 17 RMI Activation 削除 コンパイル / 実行 java.rmi.activation.*rmid 排除 Activatable 利用コードがエラー 標準 RMI へ置換、設計変更
JEP 367 14 Pack200 圧縮サポート削除 ビルド / 実行 pack200 / unpack200 コマンド・API 削除 Ant などの Pack200 タスク失敗 通常 JAR 使用、再圧縮
JDK‑8179909 11 JVM SNMP エージェント削除 実行 com.sun.management.snmp 消滅 SNMP 監視不能 JMX / Prometheus ブリッジへ移行
JEP 410 16 実験的 AOT / Graal JIT 削除 デプロイ jaotc-XX:+UseJVMCICompiler 不認識 起動スクリプトがエラー オプション削除、GraalVM 外部利用
(Policy) 9 強力暗号がデフォルト有効 (JCE 無制限) 実行 crypto.policy=unlimited が既定 例外ハンドリング差異、法規制確認 必要なら limited に変更、法令遵守
JEP 229 9 既定 KeyStore 形式が PKCS#12 実行 / デプロイ KeyStore.getDefaultType() が "pkcs12" JKS 読込失敗、誤形式生成 -storetype JKS 指定、PKCS12 へ移行
JEP 332 11 TLS 1.3 実装と旧暗号スイート無効化 実行 TLS1.3 優先、RSA KeyExchange 廃止 古いサーバー接続失敗 エンドポイント更新、jdk.tls.client.protocols 設定
多数 11+ 弱いアルゴリズム・旧 CA の無効化 実行 SHA‑1 / 1024bit RSA / 一部 ECC 曲線不可 SSL ハンドシェイク失敗、署名検証失敗 証明書更新、java.security 調整
JEP 411 17 / 18 SecurityManager 廃止方向 実行 JDK 18 からデフォルト無効化 ポリシー型サンドボックス機能喪失 -Djava.security.manager=allow で暫定、OS 隔離へ 高*
JEP 421 18 finalize() 将来削除予定 実行 非推奨警告、今後無効化 リソース解放遅延・漏洩 Cleaner / AutoCloseable へ移行 低→将来高
JEP 252 9 既定ロケールデータを CLDR へ変更 実行 日付・数値などの表示が変化 テスト差分、UI 表示差異 java.locale.providers=COMPAT 指定、表示確認
(Regex) 9 正規表現ネストクラス ^ 挙動変更 実行 特定パターンの一致結果が変化 バリデーション誤動作 パターン修正
JEP 400 18 デフォルト文字セットを UTF‑8 に固定 実行 Windows 等 CP1252→UTF‑8 へ ファイル文字化け、デコード例外 文字セット明示、-Dfile.encoding=COMPAT
CSR 等 21 古い API / 機能の削除 (ThreadGroup.allowThreadSuspension 等) コンパイル / 実行 当該メソッド・JAR Index 等削除 古ライブラリで NoSuchMethodError 依存削除、代替 API 利用

注: 印の「高」は SecurityManager を使用しているシステムに限り高リスクを示す。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment