Enhanced Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
356 Enhanced Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
356 Enhanced Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
and Jakarta EE 9 baseline for Spring Framework 6 Java SE (JDK) Java EE Jakarta EE Spring Framework 5.3.x Spring Boot 2.x Java 8~ Java 17 Java EE 7、8 Spring Framework 6 Spring Boot 3 Java 17+ Jakarta EE 9+
サポート期間 (To) Oracle Oracle JDK 2021/9 2026/9 (Premier) 2029/9 (Extended) OpenJDK built by Oracle 2021/9 2022/3 Red Hat Red Hat OpenJDK 2021/11 (リリース予定) Eclipse Foundation Adoptium (Temurin) 2021/9 TBD Azul Systems Azul Zulu 2021/9 2029/9 Amazon Web Services Amazon Corretto 2021/9 TBD Bellsoft Bellsoft Liberica JDK 2021/9 2030/3 SAP SapMachine 2021/9 2026/9 Microsoft Microsoft Build of OpenJDK 2021/9 2027/9 (at least)
Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
Semantics 356 Enhanced Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
exponent value set) を許可する浮動小数点モード の実行禁止 strictfp 修飾子の不必要な使用に対して新たな lint警告を出すためのjavacのアップデート strictfp public class FloatingPointSample { public FloatingPointSample() { } public static void main(String... args) { FloatingPointSample fp = new FloatingPointSample(); fp.sayHello(); } public strictfp void sayHello() { System.out.println("Hello!"); } } $ javac FloatingPointSample.java FloatingPointSample.java:1: warning: [strictfp] as of release 17, all floating- point expressions are evaluated strictly and 'strictfp' is not required strictfp public class FloatingPointSample { ^ FloatingPointSample.java:11: warning: [strictfp] as of release 17, all floating- point expressions are evaluated strictly and 'strictfp' is not required public strictfp void sayHello() { ^ 2 warnings
Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
2トランスレーターを使って、AArch64ベースのシステム上でmacOS/x64ビ ルドのJDKを実行することも可能だが、パフォーマンスに難がある 移植にあたり、既存のAArch64コードを再利用 Linux : JEP 237: Linux/AArch64 Port (java.net) Windows: JEP 388: Windows/AArch64 Port (java.net)
Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
static String formatterPatternSwitch(Object o) { return switch (o) { case null -> String.format("null"); case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; } static void test(Object o) { switch (o) { case Character c -> { if (c.charValue() == 7) { System.out.println("Ding!"); } System.out.println("Character"); } case Integer i -> throw new IllegalStateException( "Invalid Integer argument of value " + i.intValue()); default -> { break; } } }
OpenJDK: Panama (java.net) 2個のAPI仕様をまとめたもの (FFM API) Foreign Function API JNIを置き換え、ネイティブライブラリをシンプルかつ性能よく呼び出すためのAPI JEP 389: Foreign Linker API (Incubator) (java.net) Foreign Memory Access API ヒープ外の外部メモリへの安全かつ効率的なアクセスをするための API JEP 370: Foreign-Memory Access API (Incubator) (java.net) JEP 383: Foreign-Memory Access API (Second Incubator) (java.net) JEP 393: Foreign-Memory Access API (Third Incubator) (java.net)
Enhanced Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
Pseudo-Random Number Generators 382 New macOS Rendering Pipeline 391 macOS/AArch64 Port 398 Deprecate the Applet API for Removal 403 Strongly Encapsulate JDK Internals 406 Pattern Matching for switch (Preview) 407 Remove RMI Activation 409 Sealed Classes 410 Remove the Experimental AOT and JIT Compiler 411 Deprecate the Security Manager for Removal 412 Foreign Function & Memory API (Incubator) 414 Vector API (Second Incubator) 415 Context-Specific Deserialization Filters
dynamically select the number of concurrent GC threads used - Java Bug System Mark stackのメモリ使用量を大幅に削減 [JDK-8260267] ZGC: Reduce mark stack usage - Java Bug System
Full GC should use parallel WeakProcessor - Java Bug System Parallel GCのFull GCにおけるadjust rootsフェーズの並列化 (work gangの利用) [JDK-8248314] Parallel: Parallelize parallel full gc Adjust Roots phase - Java Bug System
Enable G1 to use large pages on Windows when region size is larger than 2m - Java Bug System G1 Full GCでのMarkSweepDeadRatioオプションのサポート [JDK-8262068] Improve G1 Full GC by skipping compaction for regions with high survival ratio - Java Bug System コレクションセットの早期刈り込みによるメモリ節減 [JDK-8262185] G1: Prune collection set candidates early - Java Bug System 退避後GCフェーズの一部を並列化してパフォーマンス向上 [JDK-8214237] Join parallel phases post evacuation - Java Bug System
to KW - Java Bug System [JDK-8023980] JCE doesn't provide any class to handle RSA private key in PKCS#1 - Java Bug System [JDK-8255410] Add ChaCha20 and Poly1305 support to SunPKCS11 provider - Java Bug System PKI [JDK-8256895] Add support for RFC 8954: Online Certificate Status Protocol (OCSP) Nonce Extension - Java Bug System [JDK-8179503] Java should support GET OCSP calls - Java Bug System [JDK-8256421] Add 2 HARICA roots to cacerts truststore - Java Bug System
properties - Java Bug System Kerberos [JDK-8139348] Deprecate 3DES and RC4 in Kerberos - Java Bug System XML Signature [JDK-8259575] Add SignatureMethodParameterSpec subclass for RSASSA-PSS params - Java Bug System [JDK-8259709] Disable SHA-1 XML Signatures - Java Bug System [JDK-8259801] Enable XML Signature secure validation mode by default - Java Bug System
- CLOVER🍀 (hatenablog.com) yoshioterada/Java-Update-From-JavaSE9-to-Java17: This is all of the list of the Java Update from Java SE 9 to Java 17. (github.com)
エラーが出たら、依存関係をチェックし、必要に応じてアップデート 内部APIや廃止APIを使っていたら書き換えて再ビルド(彼のケースは不使用) その後、Java 16/17へも移行したが、基本の流れは同じ ... When I joined Netflix, no one told me it was impossible to upgrade from Java 8 to 11. I just started using it. When things didn’t work (and they definitely didn’t!) on 11, I went and checked if I needed to update the library. I did this as a back-burner project, on my own machine, separate from the main repo. One by one, all the non-working libraries were updated to the working ones. When a library was not Java 11 compatible, I filed a PR on GitHub to fix it. And, plain as it sounds, when there are no more broken things, only working things are left! ... - The Impossible Java 11 by Carl Mastrangelo https://carlmastrangelo.com/blog/the-impossible-java-11
VM option のあとに該当のオプションを明示 非推奨オプション 警告メッセージを出す (warning) VM Warning: Option <option> was deprecated : サポートしているが将来削除の可能性あり VM Warning: Ignoring option : サポートしていないので無視 VM Option Explorer Differences between HotSpot VM Versions (chriswhocodes.com)