From 5762849458956f9877485a642603b8fccdeffb34 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Fri, 24 Oct 2025 16:32:04 +0200 Subject: [PATCH 1/6] refactor: flatten JEP JSON structure and add jdk field - Remove nested 'info' object from JEP JSON structure - Add 'jdk' field to JEPData record - Update all JDK*Info.json files with flattened format - Simplify JEPInfo.java parsing logic Prepares for future metadata extensions (link, code fields). --- .../java/org/javademos/commons/JEPInfo.java | 11 +- src/main/resources/JDK14Info.json | 24 ++- src/main/resources/JDK15Info.json | 29 ++-- src/main/resources/JDK16Info.json | 76 ++++----- src/main/resources/JDK17Info.json | 84 +++++----- src/main/resources/JDK18Info.json | 63 ++++---- src/main/resources/JDK19Info.json | 51 +++--- src/main/resources/JDK20Info.json | 49 +++--- src/main/resources/JDK21Info.json | 107 ++++++------ src/main/resources/JDK22Info.json | 84 +++++----- src/main/resources/JDK23Info.json | 93 +++++------ src/main/resources/JDK24Info.json | 153 ++++++++---------- src/main/resources/JDK25Info.json | 128 +++++++-------- 13 files changed, 413 insertions(+), 539 deletions(-) diff --git a/src/main/java/org/javademos/commons/JEPInfo.java b/src/main/java/org/javademos/commons/JEPInfo.java index 65d13727..8b170bb1 100644 --- a/src/main/java/org/javademos/commons/JEPInfo.java +++ b/src/main/java/org/javademos/commons/JEPInfo.java @@ -10,13 +10,12 @@ public class JEPInfo { private JEPInfo() {} - public record JEPDataInfo(String name, String dscr) {} - public record JEPData(int jep, JEPDataInfo info) {} + public record JEPData(int jep, int jdk, String name, String dscr) {} - public static Map JEP_INFO = getAllEntries(); + public static Map JEP_INFO = getAllEntries(); - private static Map getAllEntries() { - var jeps = new HashMap(); + private static Map getAllEntries() { + var jeps = new HashMap(); var sources = Arrays.asList(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); for (Integer src : sources) { @@ -28,7 +27,7 @@ private static Map getAllEntries() { }.getType(); var gson = new Gson(); List data = gson.fromJson(br, JEPListType); - data.forEach(d -> jeps.put(d.jep(), d.info())); + data.forEach(d -> jeps.put(d.jep(), d)); } catch (IOException e) { e.printStackTrace(System.out); } diff --git a/src/main/resources/JDK14Info.json b/src/main/resources/JDK14Info.json index e5eec091..fb5b2184 100644 --- a/src/main/resources/JDK14Info.json +++ b/src/main/resources/JDK14Info.json @@ -1,22 +1,20 @@ -[ { +[ + { "jep": 305, - "info": { - "name": "JEP 305 - Pattern Matching for instanceof (Preview)", - "dscr": "Preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." - } + "jdk": 14, + "name": "JEP 305 - Pattern Matching for instanceof (Preview)", + "dscr": "Preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." }, { - "jep": 359, - "info": { + "jep": 359, + "jdk": 14, "name": "JEP 359 - Records (Preview)", "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)" - } - }, + }, { "jep": 370, - "info": { - "name": "JEP 370 - Foreign-Memory Access API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 14, + "name": "JEP 370 - Foreign-Memory Access API (Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" } ] \ No newline at end of file diff --git a/src/main/resources/JDK15Info.json b/src/main/resources/JDK15Info.json index 6a4adf71..7b1591d6 100644 --- a/src/main/resources/JDK15Info.json +++ b/src/main/resources/JDK15Info.json @@ -1,4 +1,5 @@ -[ { +[ + { "jep": 371, "info": { "name": "JEP 371 - Hidden Classes", @@ -14,30 +15,26 @@ }, { "jep": 375, - "info": { - "name": "JEP 375 - Pattern Matching for instanceof (Second Preview)", - "dscr": "Second preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." - } + "jdk": 15, + "name": "JEP 375 - Pattern Matching for instanceof (Second Preview)", + "dscr": "Second preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." }, { "jep": 381, - "info": { - "name": "JEP 381 - Remove the Solaris and SPARC Ports", - "dscr": "Removed the source code and build support for Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. No code demo applicable." - } + "jdk": 15, + "name": "JEP 381 - Remove the Solaris and SPARC Ports", + "dscr": "Removed the source code and build support for Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. No code demo applicable." }, { "jep": 383, - "info": { - "name": "JEP 383 - Foreign-Memory Access API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 15, + "name": "JEP 383 - Foreign-Memory Access API (Second Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { - "jep": 384, - "info": { + "jep": 384, + "jdk": 15, "name": "JEP 384 - Records (Second Preview)", "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)" } -} ] \ No newline at end of file diff --git a/src/main/resources/JDK16Info.json b/src/main/resources/JDK16Info.json index a995b029..027656ea 100644 --- a/src/main/resources/JDK16Info.json +++ b/src/main/resources/JDK16Info.json @@ -1,84 +1,74 @@ [ { "jep": 338, - "info": { - "name": "JEP 338 - Vector API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 16, + "name": "JEP 338 - Vector API (Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 380, - "info": { - "name": "JEP 380 - Unix-Domain Socket Channels", - "desc": "Add support for Unix-domain sockets, commonly used for inter-process communication on the same host." - } + "jdk": 16, + "name": "JEP 380 - Unix-Domain Socket Channels", + "dscr": "Add support for Unix-domain sockets, commonly used for inter-process communication on the same host." }, - { "jep": 386, - "info": { - "name": "JEP 386 - Alpine Linux Port", - "dscr": "Ports the JDK to Alpine Linux and other Linux distributions using musl as their primary C library on x64 and AArch64." - } + "jdk": 16, + "name": "JEP 386 - Alpine Linux Port", + "dscr": "Ports the JDK to Alpine Linux and other Linux distributions using musl as their primary C library on x64 and AArch64." }, { "jep": 388, - "info": { - "name": "JEP 388 - Windows/AArch64 Port", - "desc": "Port the JDK to Windows/AArch64 (ARM64)." - } + "jdk": 16, + "name": "JEP 388 - Windows/AArch64 Port", + "dscr": "Port the JDK to Windows/AArch64 (ARM64)." }, { "jep": 389, - "info": { - "name": "JEP 389 - Foreign Linker API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 16, + "name": "JEP 389 - Foreign Linker API (Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 390, + "jdk": 16, "name": "JEP 390 - Warnings for Value-Based Classes", - "desc": "Designate wrapper classes as value-based and add warnings about attempts to synchronize on them." + "dscr": "Designate wrapper classes as value-based and add warnings about attempts to synchronize on them." }, { "jep": 392, - "info": { - "name": "JEP 392 - Packaging Tool", - "dscr": "Finalizes the jpackage tool for creating native application installers (MSI, EXE, DMG, PKG, DEB, RPM)." - } + "jdk": 16, + "name": "JEP 392 - Packaging Tool", + "dscr": "Finalizes the jpackage tool for creating native application installers (MSI, EXE, DMG, PKG, DEB, RPM)." }, { "jep": 393, - "info": { - "name": "JEP 393 - Foreign-Memory Access API (Third Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 16, + "name": "JEP 393 - Foreign-Memory Access API (Third Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, - { "jep": 394, - "info": { - "name": "JEP 394 - Pattern Matching for instanceof", - "dscr": "Enhances instanceof operator to perform pattern matching, reducing boilerplate code." - } + "jdk": 16, + "name": "JEP 394 - Pattern Matching for instanceof", + "dscr": "Enhances instanceof operator to perform pattern matching, reducing boilerplate code." }, { "jep": 396, - "name": "Strongly Encapsulate JDK Internals by Default", - "desc": "Strongly encapsulate all internal elements of the JDK by default, allowing access only via the `--illegal-access` option." + "jdk": 16, + "name": "JEP 396 - Strongly Encapsulate JDK Internals by Default", + "dscr": "Strongly encapsulate all internal elements of the JDK by default, allowing access only via the `--illegal-access` option." }, { - "jep": 395, - "info": { + "jep": 395, + "jdk": 16, "name": "JEP 395 - Records", "dscr": "Finalizes Records, transparent carriers for immutable data; see RecordDemo.java" - } }, { - "jep": 397, - "info": { + "jep": 397, + "jdk": 16, "name": "JEP 397 - Sealed Classes (Second Preview)", "dscr": "Up-to-date demo moved to org.javademos.java17.jep409.SealedDemo (JEP 409)" } - } ] \ No newline at end of file diff --git a/src/main/resources/JDK17Info.json b/src/main/resources/JDK17Info.json index cd948f2c..ad8dabf9 100644 --- a/src/main/resources/JDK17Info.json +++ b/src/main/resources/JDK17Info.json @@ -1,86 +1,74 @@ [ { "jep": 403, - "info": { - "name": "JEP 403 - Strongly Encapsulate JDK Internals", - "dscr": "Restricts access to most internal JDK APIs by default, improving security and maintainability. Access requires explicit command-line flags like --add-opens." - } + "jdk": 17, + "name": "JEP 403 - Strongly Encapsulate JDK Internals", + "dscr": "Restricts access to most internal JDK APIs by default, improving security and maintainability. Access requires explicit command-line flags like --add-opens." }, { "jep": 306, - "info": { - "name": "JEP 306 - Restore Always-Strict Floating-Point Semantics", - "dscr": "Make all floating-point operations consistently strict, removing the difference between strictfp and default modes." - } + "jdk": 17, + "name": "JEP 306 - Restore Always-Strict Floating-Point Semantics", + "dscr": "Make all floating-point operations consistently strict, removing the difference between strictfp and default modes." }, { "jep": 382, - "info": { - "name": "JEP 382 - New macOS Rendering Pipeline", - "dscr": "Replaces the internal OpenGL-based rendering pipeline for Java 2D on macOS with Apple's Metal API for better performance and future compatibility." - } + "jdk": 17, + "name": "JEP 382 - New macOS Rendering Pipeline", + "dscr": "Replaces the internal OpenGL-based rendering pipeline for Java 2D on macOS with Apple's Metal API for better performance and future compatibility." }, { - "jep": 391, - "info": { + "jep": 391, + "jdk": 17, "name": "JEP 391 - macOS/AArch64 Port", "dscr": "Explains the port of the JDK to macOS on ARM64 (Apple Silicon); see MacOsAarch64PortDemo.java" - } - }, + }, { "jep": 406, - "info": { - "name": "JEP 406 - Pattern Matching for switch (Preview)", - "dscr": "The first preview of Pattern Matching for switch. The final implementation is in JEP 441." - } + "jdk": 17, + "name": "JEP 406 - Pattern Matching for switch (Preview)", + "dscr": "The first preview of Pattern Matching for switch. The final implementation is in JEP 441." }, { "jep": 407, - "info": { - "name": "JEP 407 - Remove RMI Activation", - "dscr": "Removes the obsolete RMI Activation mechanism, including the `java.rmi.activation` package and the `rmid` tool. Core RMI is unaffected." - } + "jdk": 17, + "name": "JEP 407 - Remove RMI Activation", + "dscr": "Removes the obsolete RMI Activation mechanism, including the `java.rmi.activation` package and the `rmid` tool. Core RMI is unaffected." }, { "jep": 409, - "info": { - "name": "JEP 409 - Sealed Classes", - "dscr": "Control which classes or interfaces can extend or implement them; see SealedDemo.java" - } + "jdk": 17, + "name": "JEP 409 - Sealed Classes", + "dscr": "Control which classes or interfaces can extend or implement them; see SealedDemo.java" }, { "jep": 410, - "info": { - "name": "JEP 410 - Remove the Experimental AOT and JIT Compiler", - "dscr": "Explains the removal of experimental jaotc and Graal JIT modules; see RemoveAotJitDemo.java" - } + "jdk": 17, + "name": "JEP 410 - Remove the Experimental AOT and JIT Compiler", + "dscr": "Explains the removal of experimental jaotc and Graal JIT modules; see RemoveAotJitDemo.java" }, { "jep": 411, - "info": { - "name": "JEP 411 - Deprecate the Security Manager for Removal", - "dscr": "Up-to-date demo moved to org.javademos.java24.jep486.DisableSecurityManager (JEP 486)" - } + "jdk": 17, + "name": "JEP 411 - Deprecate the Security Manager for Removal", + "dscr": "Up-to-date demo moved to org.javademos.java24.jep486.DisableSecurityManager (JEP 486)" }, { "jep": 412, - "info": { - "name": "JEP 412 - Foreign Function & Memory API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 17, + "name": "JEP 412 - Foreign Function & Memory API (Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 414, - "info": { - "name": "JEP 414 - Vector API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 17, + "name": "JEP 414 - Vector API (Second Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 415, - "info": { - "name": "JEP 415 - Context-Specific Deserialization Filters", - "dscr": "Configure context-specific filters via a JVM-wide filter factory; see ContextSpecificDeserializationFiltersDemo.java" - } + "jdk": 17, + "name": "JEP 415 - Context-Specific Deserialization Filters", + "dscr": "Configure context-specific filters via a JVM-wide filter factory; see ContextSpecificDeserializationFiltersDemo.java" } ] \ No newline at end of file diff --git a/src/main/resources/JDK18Info.json b/src/main/resources/JDK18Info.json index 8fe06c13..8ebc6c9e 100644 --- a/src/main/resources/JDK18Info.json +++ b/src/main/resources/JDK18Info.json @@ -1,65 +1,56 @@ [ { "jep": 400, - "info": { - "name": "JEP 400 - UTF-8 by Default", - "dscr": "Sets the default charset to UTF-8 for Java applications, improving compatibility and reducing bugs related to character encoding." - } + "jdk": 18, + "name": "JEP 400 - UTF-8 by Default", + "dscr": "Sets the default charset to UTF-8 for Java applications, improving compatibility and reducing bugs related to character encoding." }, { "jep": 408, - "info": { - "name": "JEP 408 - Simple Web Server", - "dscr": "Command-line tool and API to start a minimal HTTP server for serving static files. Useful for prototyping, testing, and educational purposes." - } + "jdk": 18, + "name": "JEP 408 - Simple Web Server", + "dscr": "Command-line tool and API to start a minimal HTTP server for serving static files. Useful for prototyping, testing, and educational purposes." }, { "jep": 413, - "info": { - "name": "JEP 413 - Code Snippets in Java API Documentation", - "dscr": "Introduces the @snippet tag for JavaDoc to simplify the inclusion of example source code in API documentation." - } + "jdk": 18, + "name": "JEP 413 - Code Snippets in Java API Documentation", + "dscr": "Introduces the @snippet tag for JavaDoc to simplify the inclusion of example source code in API documentation." }, { "jep": 416, - "info": { - "name": "JEP 416 - Reimplement Core Reflection with Method Handles", - "dscr": "An internal reimplementation of Core Reflection to use method handles, unifying the platform's reflective mechanisms. This change improves performance for constant-folded reflection calls and reduces JDK maintenance costs." - } + "jdk": 18, + "name": "JEP 416 - Reimplement Core Reflection with Method Handles", + "dscr": "An internal reimplementation of Core Reflection to use method handles, unifying the platform's reflective mechanisms. This change improves performance for constant-folded reflection calls and reduces JDK maintenance costs." }, { "jep": 417, - "info": { - "name": "JEP 417 - Vector API (Third Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 18, + "name": "JEP 417 - Vector API (Third Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 418, - "info": { - "name": "JEP 418 - Internet-Address Resolution SPI", - "dscr": "Defines a service-provider interface (SPI) for host name and address resolution, allowing `java.net.InetAddress` to use custom resolvers." - } + "jdk": 18, + "name": "JEP 418 - Internet-Address Resolution SPI", + "dscr": "Defines a service-provider interface (SPI) for host name and address resolution, allowing `java.net.InetAddress` to use custom resolvers." }, { "jep": 419, - "info": { - "name": "JEP 419 - Foreign Function & Memory API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 18, + "name": "JEP 419 - Foreign Function & Memory API (Second Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 420, - "info": { - "name": "JEP 420 - Pattern Matching for switch (Second Preview)", - "dscr": "The second preview of Pattern Matching for switch. The final implementation is in JEP 441." - } + "jdk": 18, + "name": "JEP 420 - Pattern Matching for switch (Second Preview)", + "dscr": "The second preview of Pattern Matching for switch. The final implementation is in JEP 441." }, { "jep": 421, - "info": { - "name": "JEP 421 - Deprecate Finalization for Removal", - "dscr": "Deprecates the finalization mechanism for removal in a future release due to its inherent flaws." - } + "jdk": 18, + "name": "JEP 421 - Deprecate Finalization for Removal", + "dscr": "Deprecates the finalization mechanism for removal in a future release due to its inherent flaws." } ] \ No newline at end of file diff --git a/src/main/resources/JDK19Info.json b/src/main/resources/JDK19Info.json index 70bfb3c9..4397ff52 100644 --- a/src/main/resources/JDK19Info.json +++ b/src/main/resources/JDK19Info.json @@ -1,51 +1,44 @@ [ { "jep": 405, - "info": { - "name": "JEP 405 - Record Patterns (Preview)", - "dscr": "The preview of Record Patterns. The final implementation is in JEP 440." - } + "jdk": 19, + "name": "JEP 405 - Record Patterns (Preview)", + "dscr": "The preview of Record Patterns. The final implementation is in JEP 440." }, { "jep": 422, - "info": { - "name": "JEP 422 – Linux/RISC-V Port", - "dscr": "No executable code, see LinuxRiscVPort.java for further info" - } + "jdk": 19, + "name": "JEP 422 – Linux/RISC-V Port", + "dscr": "No executable code, see LinuxRiscVPort.java for further info" }, { "jep": 424, - "info": { - "name": "JEP 424 - Foreign Function & Memory API (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 19, + "name": "JEP 424 - Foreign Function & Memory API (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 425, - "info": { - "name": "JEP 425 - Virtual Threads (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" - } + "jdk": 19, + "name": "JEP 425 - Virtual Threads (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" }, { "jep": 426, - "info": { - "name": "JEP 426 - Vector API (Fourth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 19, + "name": "JEP 426 - Vector API (Fourth Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 427, - "info": { - "name": "JEP 427 - Pattern Matching for switch (Third Preview)", - "dscr": "The third preview of Pattern Matching for switch. The final implementation is in JEP 441." - } + "jdk": 19, + "name": "JEP 427 - Pattern Matching for switch (Third Preview)", + "dscr": "The third preview of Pattern Matching for switch. The final implementation is in JEP 441." }, { "jep": 428, - "info": { - "name": "JEP 428 - Structured Concurrency (Incubator)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 19, + "name": "JEP 428 - Structured Concurrency (Incubator)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" } -] +] \ No newline at end of file diff --git a/src/main/resources/JDK20Info.json b/src/main/resources/JDK20Info.json index 76d20dbb..83ed5ef6 100644 --- a/src/main/resources/JDK20Info.json +++ b/src/main/resources/JDK20Info.json @@ -1,51 +1,44 @@ [ { "jep": 429, - "info": { - "name": "JEP 429 - Scoped Values (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" - } + "jdk": 20, + "name": "JEP 429 - Scoped Values (Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" }, { "jep": 432, - "info": { - "name": "JEP 432 - Record Patterns (Second Preview)", - "dscr": "The second preview of Record Patterns. The final implementation is in JEP 440." - } + "jdk": 20, + "name": "JEP 432 - Record Patterns (Second Preview)", + "dscr": "The second preview of Record Patterns. The final implementation is in JEP 440." }, { "jep": 433, - "info": { - "name": "JEP 433 - Pattern Matching for switch (Fourth Preview)", - "dscr": "The fourth preview of Pattern Matching for switch. The final implementation is in JEP 441." - } + "jdk": 20, + "name": "JEP 433 - Pattern Matching for switch (Fourth Preview)", + "dscr": "The fourth preview of Pattern Matching for switch. The final implementation is in JEP 441." }, { "jep": 434, - "info": { - "name": "JEP 434 - Foreign Function & Memory API (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 20, + "name": "JEP 434 - Foreign Function & Memory API (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 436, - "info": { - "name": "JEP 436 - Virtual Threads (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" - } + "jdk": 20, + "name": "JEP 436 - Virtual Threads (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" }, { "jep": 437, - "info": { - "name": "JEP 437 - Structured Concurrency (Second Incubator)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 20, + "name": "JEP 437 - Structured Concurrency (Second Incubator)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" }, { "jep": 438, - "info": { - "name": "JEP 438 - Vector API (Fifth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 20, + "name": "JEP 438 - Vector API (Fifth Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" } ] \ No newline at end of file diff --git a/src/main/resources/JDK21Info.json b/src/main/resources/JDK21Info.json index 873143c3..1ae492a9 100644 --- a/src/main/resources/JDK21Info.json +++ b/src/main/resources/JDK21Info.json @@ -1,107 +1,92 @@ -[ +[ { "jep": 430, - "info": { - "name": "JEP 430 - String Templates (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep459.StringTemplatesSecondPreview` (JEP 459)" - } + "jdk": 21, + "name": "JEP 430 - String Templates (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep459.StringTemplatesSecondPreview` (JEP 459)" }, { "jep": 431, - "info": { - "name": "JEP 431 - Sequenced Collections", - "dscr": "Adds sequenced collections to the Java Collections Framework, providing a new way to handle ordered collections." - } + "jdk": 21, + "name": "JEP 431 - Sequenced Collections", + "dscr": "Adds sequenced collections to the Java Collections Framework, providing a new way to handle ordered collections." }, { "jep": 439, - "info": { - "name": "JEP 439 - Generational ZGC", - "dscr": "No executable code, see GenerationalZGC21.java for further info" - } + "jdk": 21, + "name": "JEP 439 - Generational ZGC", + "dscr": "No executable code, see GenerationalZGC21.java for further info" }, { "jep": 440, - "info": { - "name": "JEP 440 - Record Patterns", - "dscr": "Simplifying the destructuring of records and improving code readability." - } + "jdk": 21, + "name": "JEP 440 - Record Patterns", + "dscr": "Simplifying the destructuring of records and improving code readability." }, { "jep": 441, - "info": { - "name": "JEP 441 - Pattern Matching for switch", - "dscr": "Enhancing the switch expression with pattern matching capabilities." - } + "jdk": 21, + "name": "JEP 441 - Pattern Matching for switch", + "dscr": "Enhancing the switch expression with pattern matching capabilities." }, { "jep": 442, - "info": { - "name": "JEP 442 - Foreign Function & Memory API (Third Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" - } + "jdk": 21, + "name": "JEP 442 - Foreign Function & Memory API (Third Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" }, { "jep": 443, - "info": { - "name": "JEP 443 - Unnamed Patterns and Variables (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep456.UnnamedPatternsAndVariables` (JEP 456)" - } + "jdk": 21, + "name": "JEP 443 - Unnamed Patterns and Variables (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep456.UnnamedPatternsAndVariables` (JEP 456)" }, { "jep": 444, - "info": { - "name": "JEP 444 - Virtual Threads", - "dscr": "Simplifying the handling of concurrency in Java applications by being no longer limited by the OS threads." - } + "jdk": 21, + "name": "JEP 444 - Virtual Threads", + "dscr": "Simplifying the handling of concurrency in Java applications by being no longer limited by the OS threads." }, { "jep": 445, - "info": { - "name": "JEP 445 - Unnamed Classes and Instance Main Methods (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" - } + "jdk": 21, + "name": "JEP 445 - Unnamed Classes and Instance Main Methods (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" }, { "jep": 446, - "info": { - "name": "JEP 446 - Scoped Values (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" - } + "jdk": 21, + "name": "JEP 446 - Scoped Values (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" }, { "jep": 448, - "info": { - "name": "JEP 448 - Vector API (Sixth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 21, + "name": "JEP 448 - Vector API (Sixth Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 449, - "info": { - "name": "JEP 449 - Deprecate the 32-bit x86 Windows Port for Removal", - "dscr": "Deprecated the Windows 32-bit x86 port in JDK 21, signaling its future removal." - } + "jdk": 21, + "name": "JEP 449 - Deprecate the 32-bit x86 Windows Port for Removal", + "dscr": "Deprecated the Windows 32-bit x86 port in JDK 21, signaling its future removal." }, { "jep": 451, - "info": { - "name": "JEP 451 - Prepare to Disallow the Dynamic Loading of Agents", - "dscr": "Issues warnings when agents are loaded dynamically into a running JVM to prepare for disallowing this by default in a future release." - } + "jdk": 21, + "name": "JEP 451 - Prepare to Disallow the Dynamic Loading of Agents", + "dscr": "Issues warnings when agents are loaded dynamically into a running JVM to prepare for disallowing this by default in a future release." }, { "jep": 452, - "info": { - "name": "JEP 452 - Key Encapsulation Mechanism", - "dscr": "Introduces a Key Encapsulation Mechanism API, aiming to improve cryptographic capabilities." - } + "jdk": 21, + "name": "JEP 452 - Key Encapsulation Mechanism", + "dscr": "Introduces a Key Encapsulation Mechanism API, aiming to improve cryptographic capabilities." }, { "jep": 453, - "info": { - "name": "JEP 453 - Structured Concurrency (Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 21, + "name": "JEP 453 - Structured Concurrency (Preview)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" } ] \ No newline at end of file diff --git a/src/main/resources/JDK22Info.json b/src/main/resources/JDK22Info.json index 60b14f1a..e7993073 100644 --- a/src/main/resources/JDK22Info.json +++ b/src/main/resources/JDK22Info.json @@ -1,86 +1,74 @@ [ { "jep": 423, - "info": { - "name": "JEP 423 - Region Pinning for G1", - "dscr": "No executable code, see RegionPinningForG1 class for further info" - } + "jdk": 22, + "name": "JEP 423 - Region Pinning for G1", + "dscr": "No executable code, see RegionPinningForG1 class for further info" }, { "jep": 447, - "info": { - "name": "JEP 447 - Statements before super(...) (Preview)", - "dscr": "Implementation moved into `org.javademos.java23.jep482.FlexibleConstructorBodies` (JEP 482)" - } + "jdk": 22, + "name": "JEP 447 - Statements before super(...) (Preview)", + "dscr": "Implementation moved into `org.javademos.java23.jep482.FlexibleConstructorBodies` (JEP 482)" }, { "jep": 454, - "info": { - "name": "JEP 454 - Foreign Function & Memory API", - "dscr": "Demonstrates calling C library function 'strlen' using Java's Foreign Function & Memory API." - } + "jdk": 22, + "name": "JEP 454 - Foreign Function & Memory API", + "dscr": "Demonstrates calling C library function 'strlen' using Java's Foreign Function & Memory API." }, { "jep": 456, - "info": { - "name": "JEP 456 - Unnamed Patterns and Variables", - "dscr": "Finalizes the feature to use an underscore `_` for unnamed variables and patterns, improving code clarity when a variable's value is not needed." - } + "jdk": 22, + "name": "JEP 456 - Unnamed Patterns and Variables", + "dscr": "Finalizes the feature to use an underscore `_` for unnamed variables and patterns, improving code clarity when a variable's value is not needed." }, { "jep": 457, - "info": { - "name": "JEP 457 - Class-File API (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" - } + "jdk": 22, + "name": "JEP 457 - Class-File API (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" }, { "jep": 458, - "info": { - "name": "JEP 458 - Launch Multi-File Source-Code Programs", - "dscr": "Demonstrates launching multi-file source-code programs directly with java; see LaunchMultiFileSourceDemo.java" - } + "jdk": 22, + "name": "JEP 458 - Launch Multi-File Source-Code Programs", + "dscr": "Demonstrates launching multi-file source-code programs directly with java; see LaunchMultiFileSourceDemo.java" }, { "jep": 459, - "info": { - "name": "JEP 459 - String Templates (Second Preview)", - "dscr": "A second preview of the String Templates feature. This feature was later removed in JDK 23." - } + "jdk": 22, + "name": "JEP 459 - String Templates (Second Preview)", + "dscr": "A second preview of the String Templates feature. This feature was later removed in JDK 23." }, { "jep": 460, - "info": { - "name": "JEP 460 - Vector API (Seventh Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 22, + "name": "JEP 460 - Vector API (Seventh Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 461, - "info": { - "name": "JEP 461 - Stream Gatherers (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" - } + "jdk": 22, + "name": "JEP 461 - Stream Gatherers (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" }, { "jep": 462, - "info": { - "name": "JEP 462 - Structured Concurrency (Second Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 22, + "name": "JEP 462 - Structured Concurrency (Second Preview)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" }, { "jep": 463, - "info": { - "name": "JEP 463 - Implicitly Declared Classes and Instance Main Methods (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" - } + "jdk": 22, + "name": "JEP 463 - Implicitly Declared Classes and Instance Main Methods (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" }, { "jep": 464, - "info": { - "name": "JEP 464 - Scoped Values (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" - } + "jdk": 22, + "name": "JEP 464 - Scoped Values (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" } ] \ No newline at end of file diff --git a/src/main/resources/JDK23Info.json b/src/main/resources/JDK23Info.json index fa2904d0..be7a1d49 100644 --- a/src/main/resources/JDK23Info.json +++ b/src/main/resources/JDK23Info.json @@ -1,93 +1,80 @@ [ { "jep": 455, - "info": { - "name": "JEP 455 - Primitive Types in Patterns, instanceof, and switch (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" - } + "jdk": 23, + "name": "JEP 455 - Primitive Types in Patterns, instanceof, and switch (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" }, { "jep": 462, - "info": { - "name": "JEP 462 - Structured Concurrency (Second Preview)", - "dscr": "Simplifies multithreaded programming by managing tasks in a structured scope. Demonstrates using StructuredTaskScope to manage subtasks as a single unit of work." - } + "jdk": 23, + "name": "JEP 462 - Structured Concurrency (Second Preview)", + "dscr": "Simplifies multithreaded programming by managing tasks in a structured scope. Demonstrates using StructuredTaskScope to manage subtasks as a single unit of work." }, { "jep": 466, - "info": { - "name": "JEP 466 - Class-File API (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" - } + "jdk": 23, + "name": "JEP 466 - Class-File API (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" }, { "jep": 467, - "info": { - "name": "JEP 467 - Markdown Documentation Comments", - "dscr": "Markdown is now allowed in Java comments. See MarkdownComments.java class for further info" - } + "jdk": 23, + "name": "JEP 467 - Markdown Documentation Comments", + "dscr": "Markdown is now allowed in Java comments. See MarkdownComments.java class for further info" }, { "jep": 469, - "info": { - "name": "JEP 469 - Vector API (Eighth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 23, + "name": "JEP 469 - Vector API (Eighth Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 471, - "info": { - "name": "JEP 471 - Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal", - "dscr": "No executable code, see DeprecateMemoryAccessMethods class for further info" - } + "jdk": 23, + "name": "JEP 471 - Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal", + "dscr": "No executable code, see DeprecateMemoryAccessMethods class for further info" }, { "jep": 473, - "info": { - "name": "JEP 473 - Stream Gatherers (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" - } + "jdk": 23, + "name": "JEP 473 - Stream Gatherers (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" }, { "jep": 474, - "info": { - "name": "JEP 474 - ZGC: Generational Mode by Default", - "dscr": "No executable code, see GenerationalZGC23.java for further info" - } + "jdk": 23, + "name": "JEP 474 - ZGC: Generational Mode by Default", + "dscr": "No executable code, see GenerationalZGC23.java for further info" }, { "jep": 476, - "info": { - "name": "JEP 476 - Module Import Declarations (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" - } + "jdk": 23, + "name": "JEP 476 - Module Import Declarations (Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" }, { "jep": 477, - "info": { - "name": "JEP 477 - Implicitly Declared Classes and Instance Main Methods (Third Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" - } + "jdk": 23, + "name": "JEP 477 - Implicitly Declared Classes and Instance Main Methods (Third Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" }, { "jep": 480, - "info": { - "name": "JEP 480 - Structured Concurrency (Third Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 23, + "name": "JEP 480 - Structured Concurrency (Third Preview)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" }, { "jep": 481, - "info": { - "name": "JEP 481 - Scoped Values (Third Preview)", - "dscr": "Scoped Values enable a method to share immutable data both within a thread and in child threads" - } + "jdk": 23, + "name": "JEP 481 - Scoped Values (Third Preview)", + "dscr": "Scoped Values enable a method to share immutable data both within a thread and in child threads" }, { "jep": 482, - "info": { - "name": "JEP 482 - Flexible Constructor Bodies (Second Preview)", - "dscr": "Since Java 22, super() is no longer required to be placed as first statement in constructor" - } + "jdk": 23, + "name": "JEP 482 - Flexible Constructor Bodies (Second Preview)", + "dscr": "Since Java 22, super() is no longer required to be placed as first statement in constructor" } -] +] \ No newline at end of file diff --git a/src/main/resources/JDK24Info.json b/src/main/resources/JDK24Info.json index 07ad5f28..09fba1e6 100644 --- a/src/main/resources/JDK24Info.json +++ b/src/main/resources/JDK24Info.json @@ -1,157 +1,140 @@ [ { "jep": 404, + "jdk": 24, "name": "JEP 404 - Generational Shenandoah (Experimental)", "dscr": "Up-to-date demo moved to `org.javademos.java25.jep521.GenerationalShenandoahDemo` (JEP 521)" }, { - "jep": "450", + "jep": 450, + "jdk": 24, "name": "JEP 450 - Compact Object Headers (Experimental)", "dscr": "An experimental version of Compact Object Headers. The final demo is in JEP 519." }, { "jep": 472, - "info": { - "name": "JEP 472 - Prepare to Restrict the Use of JNI", - "dscr": "Issues warnings on uses of the Java Native Interface (JNI) to prepare for future restrictions, enhancing platform integrity by requiring explicit opt-in." - } + "jdk": 24, + "name": "JEP 472 - Prepare to Restrict the Use of JNI", + "dscr": "Issues warnings on uses of the Java Native Interface (JNI) to prepare for future restrictions, enhancing platform integrity by requiring explicit opt-in." }, { "jep": 475, - "info": { - "name": "JEP 475 - Late Barrier Expansion for G1", - "dscr": "Moves G1 garbage collector barrier expansion to the code emission phase in C2 JIT to reduce overhead and improve maintainability." - } + "jdk": 24, + "name": "JEP 475 - Late Barrier Expansion for G1", + "dscr": "Moves G1 garbage collector barrier expansion to the code emission phase in C2 JIT to reduce overhead and improve maintainability." }, { "jep": 478, - "info": { - "name": "JEP 478 - Key Derivation Function API (Preview)", - "dscr": "A preview of the KDF API. The final implementation is in JEP 510 for Java 25." - } + "jdk": 24, + "name": "JEP 478 - Key Derivation Function API (Preview)", + "dscr": "A preview of the KDF API. The final implementation is in JEP 510 for Java 25." }, { "jep": 479, - "info": { - "name": "JEP 479 - Remove the 32-bit x86 Windows Port", - "dscr": "Removed support for the 32-bit x86 port on Windows in JDK 24, while keeping other OS ports available." - } + "jdk": 24, + "name": "JEP 479 - Remove the 32-bit x86 Windows Port", + "dscr": "Removed support for the 32-bit x86 port on Windows in JDK 24, while keeping other OS ports available." }, { - "jep": "483", + "jep": 483, + "jdk": 24, "name": "JEP 483 - Ahead-of-Time Class Loading & Linking", "dscr": "An experimental AOT feature. The final demos are in JEP 514 and JEP 515." }, { "jep": 484, - "info": { - "name": "JEP 484 - Class-File API", - "dscr": "Finalizes the API for parsing, generating, and transforming Java class files." - } + "jdk": 24, + "name": "JEP 484 - Class-File API", + "dscr": "Finalizes the API for parsing, generating, and transforming Java class files." }, { "jep": 485, - "info": { - "name": "JEP 485 - Stream Gatherers", - "dscr": "Enhance the Stream API to support custom intermediate operations. This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations." - } + "jdk": 24, + "name": "JEP 485 - Stream Gatherers", + "dscr": "Enhance the Stream API to support custom intermediate operations. This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations." }, { "jep": 486, - "info": { - "name": "JEP 486 - Permanently Disable the Security Manager", - "dscr": "The Security Manager API, deprecated for removal in earlier releases, has now been permanently disabled. Any attempt to set a Security Manager will result in an UnsupportedOperationException." - } + "jdk": 24, + "name": "JEP 486 - Permanently Disable the Security Manager", + "dscr": "The Security Manager API, deprecated for removal in earlier releases, has now been permanently disabled. Any attempt to set a Security Manager will result in an UnsupportedOperationException." }, { "jep": 487, - "info": { - "name": "JEP 487 - Scoped Values (Fourth Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" - } + "jdk": 24, + "name": "JEP 487 - Scoped Values (Fourth Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" }, { - "jep": "488", - "info": { - "name": "JEP 488 - Primitive Types in Patterns, instanceof, and switch (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" - } + "jep": 488, + "jdk": 24, + "name": "JEP 488 - Primitive Types in Patterns, instanceof, and switch (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" }, { "jep": 489, - "info": { - "name": "JEP 489 - Vector API (Ninth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" - } + "jdk": 24, + "name": "JEP 489 - Vector API (Ninth Incubator)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" }, { "jep": 490, - "info": { - "name": "JEP 490 - ZGC: Remove the Non-Generational Mode", - "dscr": "Removes the non-generational mode of the Z Garbage Collector (ZGC), making the generational mode the only option. This change simplifies long-term maintenance and focuses development efforts on the more efficient generational model." - } + "jdk": 24, + "name": "JEP 490 - ZGC: Remove the Non-Generational Mode", + "dscr": "Removes the non-generational mode of the Z Garbage Collector (ZGC), making the generational mode the only option. This change simplifies long-term maintenance and focuses development efforts on the more efficient generational model." }, { "jep": 491, - "info": { - "name": "JEP 491 - Synchronize Virtual Threads without Pinning", - "dscr": "Improves scalability by allowing virtual threads to unmount from their carrier platform thread when blocked in 'synchronized' methods, eliminating a major source of thread pinning." - } + "jdk": 24, + "name": "JEP 491 - Synchronize Virtual Threads without Pinning", + "dscr": "Improves scalability by allowing virtual threads to unmount from their carrier platform thread when blocked in 'synchronized' methods, eliminating a major source of thread pinning." }, { "jep": 493, - "info": { - "name": "JEP 493 - Linking Run-Time Images without JMODs", - "dscr": "Simplifies jlink by removing the need for JMOD files. Developers can now link custom runtime images directly from modular JARs, streamlining the build process." - } + "jdk": 24, + "name": "JEP 493 - Linking Run-Time Images without JMODs", + "dscr": "Simplifies jlink by removing the need for JMOD files. Developers can now link custom runtime images directly from modular JARs, streamlining the build process." }, { - "jep": "494", - "info": { - "name": "JEP 494 - Module Import Declarations (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" - } + "jep": 494, + "jdk": 24, + "name": "JEP 494 - Module Import Declarations (Second Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" }, { "jep": 495, - "info": { - "name": "JEP 495 - Simple Source Files and Instance Main Methods (Fourth Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" - } + "jdk": 24, + "name": "JEP 495 - Simple Source Files and Instance Main Methods (Fourth Preview)", + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" }, { "jep": 496, - "info": { - "name": "JEP 496 - Quantum Resistant Algorithm - Lattice-based Key Encapsulation", - "dscr": "Provides a lattice-based key encapsulation mechanism to support quantum-resistant key exchanges; see QuantumResistantModuleLatticeBasedKeyEncapsulation.java" - } + "jdk": 24, + "name": "JEP 496 - Quantum Resistant Algorithm - Lattice-based Key Encapsulation", + "dscr": "Provides a lattice-based key encapsulation mechanism to support quantum-resistant key exchanges; see QuantumResistantModuleLatticeBasedKeyEncapsulation.java" }, { "jep": 497, - "info": { - "name": "JEP 497 - Quantum Resistant Algorithm - Lattice-based Digital Signature (Preview)", - "dscr": "Provides a lattice-based digital signature algorithm to support quantum-resistant signatures; see QuantumResistantModule.java" - } + "jdk": 24, + "name": "JEP 497 - Quantum Resistant Algorithm - Lattice-based Digital Signature (Preview)", + "dscr": "Provides a lattice-based digital signature algorithm to support quantum-resistant signatures; see QuantumResistantModule.java" }, { "jep": 498, - "info": { - "name": "JEP 498 - Warn upon Use of Memory-Access Methods in sun.misc.Unsafe", - "dscr": "Showing runtime warnings for methods that are already deprecated" - } + "jdk": 24, + "name": "JEP 498 - Warn upon Use of Memory-Access Methods in sun.misc.Unsafe", + "dscr": "Showing runtime warnings for methods that are already deprecated" }, { "jep": 499, - "info": { - "name": "JEP 499 - Structured Concurrency (Fourth Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" - } + "jdk": 24, + "name": "JEP 499 - Structured Concurrency (Fourth Preview)", + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" }, { "jep": 501, - "info": { - "name": "JEP 501 - Deprecate the 32-bit x86 Port for Removal", - "dscr": "Deprecated the entire 32-bit x86 port in JDK 24, warning of its complete removal in JDK 25." - } + "jdk": 24, + "name": "JEP 501 - Deprecate the 32-bit x86 Port for Removal", + "dscr": "Deprecated the entire 32-bit x86 port in JDK 24, warning of its complete removal in JDK 25." } -] +] \ No newline at end of file diff --git a/src/main/resources/JDK25Info.json b/src/main/resources/JDK25Info.json index 07a0e259..5b748bd7 100644 --- a/src/main/resources/JDK25Info.json +++ b/src/main/resources/JDK25Info.json @@ -1,128 +1,110 @@ [ { "jep": 470, - "info": { - "name": "JEP 470 - PEM Encodings of Cryptographic Objects (Preview)", - "dscr": "Preview support for reading and writing PEM-encoded cryptographic objects; see PemEncodings.java" - } + "jdk": 25, + "name": "JEP 470 - PEM Encodings of Cryptographic Objects (Preview)", + "dscr": "Preview support for reading and writing PEM-encoded cryptographic objects; see PemEncodings.java" }, { "jep": 502, - "info": { - "name": "JEP 502 - Stable Values (Preview)", - "dscr": "Stable Values offer an immutable data abstraction for performance and safety; see StableValuesDemo.java" - } + "jdk": 25, + "name": "JEP 502 - Stable Values (Preview)", + "dscr": "Stable Values offer an immutable data abstraction for performance and safety; see StableValuesDemo.java" }, { "jep": 503, - "info": { - "name": "JEP 503 - Remove the 32-bit x86 Port", - "dscr": "Removes the legacy 32-bit x86 port from the JDK to reduce maintenance burden; see Remove32BitX86Demo.java" - } + "jdk": 25, + "name": "JEP 503 - Remove the 32-bit x86 Port", + "dscr": "Removes the legacy 32-bit x86 port from the JDK to reduce maintenance burden; see Remove32BitX86Demo.java" }, { "jep": 505, - "info": { - "name": "JEP 505 - Structured Concurrency (Fifth Preview)", - "dscr": "Structured concurrency simplifies concurrent programming by treating multiple tasks as a single unit of work; see StructuredConcurrencyDemo.java" - } + "jdk": 25, + "name": "JEP 505 - Structured Concurrency (Fifth Preview)", + "dscr": "Structured concurrency simplifies concurrent programming by treating multiple tasks as a single unit of work; see StructuredConcurrencyDemo.java" }, { "jep": 506, - "info": { - "name": "JEP 506 - Scoped Values", - "dscr": "Scoped Values provide a safe, immutable alternative to thread-local variables; see ScopedValuesDemo.java" - } + "jdk": 25, + "name": "JEP 506 - Scoped Values", + "dscr": "Scoped Values provide a safe, immutable alternative to thread-local variables; see ScopedValuesDemo.java" }, { "jep": 507, - "info": { - "name": "JEP 507 - Primitive Types in Patterns, instanceof, and switch (Third Preview)", - "dscr": "Demonstrates primitive type patterns in instanceof and switch; see PrimitiveTypesDemo.java" - } + "jdk": 25, + "name": "JEP 507 - Primitive Types in Patterns, instanceof, and switch (Third Preview)", + "dscr": "Demonstrates primitive type patterns in instanceof and switch; see PrimitiveTypesDemo.java" }, { "jep": 508, - "info": { - "name": "JEP 508 - Vector API (Tenth Incubator)", - "dscr": "API for expressing vector computations that reliably compile at runtime to optimal vector instructions on supported CPUs to achieve better performance" - } + "jdk": 25, + "name": "JEP 508 - Vector API (Tenth Incubator)", + "dscr": "API for expressing vector computations that reliably compile at runtime to optimal vector instructions on supported CPUs to achieve better performance" }, { "jep": 509, - "info": { - "name": "JEP 509 - JFR CPU-Time Profiling", - "dscr": "Demonstrates experimental CPU-Time Profiling using JFR; see CpuTimeProfilingDemo.java" - } + "jdk": 25, + "name": "JEP 509 - JFR CPU-Time Profiling", + "dscr": "Demonstrates experimental CPU-Time Profiling using JFR; see CpuTimeProfilingDemo.java" }, { "jep": 510, - "info": { - "name": "JEP 510 - Key Derivation Function API", - "dscr": "Standard API for Key Derivation Functions (KDFs) in Java; see KeyDerivationFunctionDemo.java for usage." - } + "jdk": 25, + "name": "JEP 510 - Key Derivation Function API", + "dscr": "Standard API for Key Derivation Functions (KDFs) in Java; see KeyDerivationFunctionDemo.java for usage." }, { "jep": 511, - "info": { - "name": "JEP 511 - Module Import Declarations", - "dscr": "Java 25 finalizes module import declarations; see ModuleImportDeclarations.java for details" - } + "jdk": 25, + "name": "JEP 511 - Module Import Declarations", + "dscr": "Java 25 finalizes module import declarations; see ModuleImportDeclarations.java for details" }, { "jep": 512, - "info": { - "name": "JEP 512 - Compact Source Files and Instance Main Methods", - "dscr": "Finalizes the 'on-ramp' features for beginners. Allows instance main methods, implicitly declared classes for single-file programs, and introduces a standard IO class, making it easier to write simple Java programs." - } + "jdk": 25, + "name": "JEP 512 - Compact Source Files and Instance Main Methods", + "dscr": "Finalizes the 'on-ramp' features for beginners. Allows instance main methods, implicitly declared classes for single-file programs, and introduces a standard IO class, making it easier to write simple Java programs." }, { "jep": 513, - "info": { - "name": "JEP 513 - Flexible Constructor Bodies", - "dscr": "It shows the best practises for explicit constructor invocation, see FlexibleConstructorBodiesDemo.java for details" - } + "jdk": 25, + "name": "JEP 513 - Flexible Constructor Bodies", + "dscr": "It shows the best practises for explicit constructor invocation, see FlexibleConstructorBodiesDemo.java for details" }, { "jep": 514, - "info": { - "name": "JEP 514 - Ahead-of-Time Command-Line Ergonomics", - "dscr": "Shows simplified and ergonomic CLI commands for Ahead-of-Time compilation; see AheadOfTimeCLI.java" - } + "jdk": 25, + "name": "JEP 514 - Ahead-of-Time Command-Line Ergonomics", + "dscr": "Shows simplified and ergonomic CLI commands for Ahead-of-Time compilation; see AheadOfTimeCLI.java" }, { "jep": 515, - "info": { - "name": "JEP 515 - Ahead-of-Time Method Profiling", - "dscr": "Demonstrates Ahead-of-Time Method Profiling which improves warmup time; see AheadOfTimeMethodProfiling.java" - } + "jdk": 25, + "name": "JEP 515 - Ahead-of-Time Method Profiling", + "dscr": "Demonstrates Ahead-of-Time Method Profiling which improves warmup time; see AheadOfTimeMethodProfiling.java" }, { "jep": 518, - "info": { - "name": "JEP 518 - JFR Cooperative Sampling", - "dscr": "Introduce cooperative sampling in Java Flight Recorder to reduce bias and overhead; see JFRCooperativeSampling.java" - } + "jdk": 25, + "name": "JEP 518 - JFR Cooperative Sampling", + "dscr": "Introduce cooperative sampling in Java Flight Recorder to reduce bias and overhead; see JFRCooperativeSampling.java" }, { "jep": 519, - "info": { - "name": "JEP 519 - Compact Object Headers", - "dscr": "Adds a demo for JEP 519 — Class-File API, showcasing how to parse, inspect, and generate Java class files programmatically; see CompactObjectHeaderDemo.java" - } + "jdk": 25, + "name": "JEP 519 - Compact Object Headers", + "dscr": "Adds a demo for JEP 519 — Class-File API, showcasing how to parse, inspect, and generate Java class files programmatically; see CompactObjectHeaderDemo.java" }, { "jep": 520, - "info": { - "name": "JEP 520 - JFR Method Timing & Tracing", - "dscr": "Introduces method timing and tracing capabilities to JFR, allowing for low-overhead method invocation tracing; see Jep520MethodTracingDemo.java" - } + "jdk": 25, + "name": "JEP 520 - JFR Method Timing & Tracing", + "dscr": "Introduces method timing and tracing capabilities to JFR, allowing for low-overhead method invocation tracing; see Jep520MethodTracingDemo.java" }, { "jep": 521, - "info": { - "name": "JEP 521 - Generational Shenandoah", - "dscr": "Enhances Shenandoah GC with generational collection, improving performance and pause times by treating short-lived and long-lived objects differently; see GenerationalShenandoahDemo.java" - } + "jdk": 25, + "name": "JEP 521 - Generational Shenandoah", + "dscr": "Enhances Shenandoah GC with generational collection, improving performance and pause times by treating short-lived and long-lived objects differently; see GenerationalShenandoahDemo.java" } -] +] \ No newline at end of file From 7a131536ce92f8275c2aedddd9aa953a439033a6 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Fri, 24 Oct 2025 22:56:59 +0200 Subject: [PATCH 2/6] feat: add link and code fields to JEPData --- .../java/org/javademos/commons/JEPInfo.java | 2 +- .../jep478/KeyDerivationApiPreview.java | 1 - src/main/resources/JDK14Info.json | 12 ++- src/main/resources/JDK15Info.json | 40 ++++--- src/main/resources/JDK16Info.json | 56 +++++++--- src/main/resources/JDK17Info.json | 58 +++++++--- src/main/resources/JDK18Info.json | 36 +++++-- src/main/resources/JDK19Info.json | 28 +++-- src/main/resources/JDK20Info.json | 28 +++-- src/main/resources/JDK21Info.json | 60 ++++++++--- src/main/resources/JDK22Info.json | 48 ++++++--- src/main/resources/JDK23Info.json | 52 ++++++--- src/main/resources/JDK24Info.json | 100 ++++++++++++++---- src/main/resources/JDK25Info.json | 72 +++++++++---- 14 files changed, 439 insertions(+), 154 deletions(-) diff --git a/src/main/java/org/javademos/commons/JEPInfo.java b/src/main/java/org/javademos/commons/JEPInfo.java index 8b170bb1..68c9acad 100644 --- a/src/main/java/org/javademos/commons/JEPInfo.java +++ b/src/main/java/org/javademos/commons/JEPInfo.java @@ -10,7 +10,7 @@ public class JEPInfo { private JEPInfo() {} - public record JEPData(int jep, int jdk, String name, String dscr) {} + public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} public static Map JEP_INFO = getAllEntries(); diff --git a/src/main/java/org/javademos/java24/jep478/KeyDerivationApiPreview.java b/src/main/java/org/javademos/java24/jep478/KeyDerivationApiPreview.java index 40a1353d..94d807e5 100644 --- a/src/main/java/org/javademos/java24/jep478/KeyDerivationApiPreview.java +++ b/src/main/java/org/javademos/java24/jep478/KeyDerivationApiPreview.java @@ -14,6 +14,5 @@ public class KeyDerivationApiPreview implements IDemo { @Override public void demo() { info(478); - System.out.println("This was a preview JEP. Please see the final implementation in JEP 510."); } } \ No newline at end of file diff --git a/src/main/resources/JDK14Info.json b/src/main/resources/JDK14Info.json index fb5b2184..c35247ce 100644 --- a/src/main/resources/JDK14Info.json +++ b/src/main/resources/JDK14Info.json @@ -3,18 +3,24 @@ "jep": 305, "jdk": 14, "name": "JEP 305 - Pattern Matching for instanceof (Preview)", - "dscr": "Preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." + "dscr": "Preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16).", + "link": true, + "code": false }, { "jep": 359, "jdk": 14, "name": "JEP 359 - Records (Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)" + "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)", + "link": true, + "code": false }, { "jep": 370, "jdk": 14, "name": "JEP 370 - Foreign-Memory Access API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK15Info.json b/src/main/resources/JDK15Info.json index 7b1591d6..9d310073 100644 --- a/src/main/resources/JDK15Info.json +++ b/src/main/resources/JDK15Info.json @@ -1,23 +1,35 @@ [ + { + "jep": 360, + "jdk": 15, + "name": "JEP 360 - Sealed Classes (Preview)", + "dscr": "Preview of Sealed Classes. Finalized in JEP 409 (JDK 17).", + "link": true, + "code": false + }, { "jep": 371, - "info": { - "name": "JEP 371 - Hidden Classes", - "dscr": "Introduces hidden classes that cannot be used directly by bytecode of other classes and can be unloaded independently" - } + "jdk": 15, + "name": "JEP 371 - Hidden Classes", + "dscr": "Introduces hidden classes that cannot be used directly by bytecode of other classes and can be unloaded independently", + "link": true, + "code": false }, { "jep": 372, - "info": { - "name": "JEP 372 - Remove the Nashorn JavaScript Engine", - "dscr": "Remove the Nashorn JavaScript script engine, APIs, and the jjs tool. No code demo applicable as the feature was removed." - } + "jdk": 15, + "name": "JEP 372 - Remove the Nashorn JavaScript Engine", + "dscr": "Remove the Nashorn JavaScript script engine, APIs, and the jjs tool. No code demo applicable as the feature was removed.", + "link": true, + "code": false }, -{ + { "jep": 375, "jdk": 15, "name": "JEP 375 - Pattern Matching for instanceof (Second Preview)", - "dscr": "Second preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16)." + "dscr": "Second preview of Pattern Matching for instanceof. Finalized in JEP 394 (JDK 16).", + "link": true, + "code": false }, { "jep": 381, @@ -29,12 +41,16 @@ "jep": 383, "jdk": 15, "name": "JEP 383 - Foreign-Memory Access API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 384, "jdk": 15, "name": "JEP 384 - Records (Second Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)" + "dscr": "Up-to-date demo moved to org.javademos.java16.jep395.RecordDemo (JEP 395)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK16Info.json b/src/main/resources/JDK16Info.json index 027656ea..a8bdcdc4 100644 --- a/src/main/resources/JDK16Info.json +++ b/src/main/resources/JDK16Info.json @@ -3,72 +3,96 @@ "jep": 338, "jdk": 16, "name": "JEP 338 - Vector API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 380, "jdk": 16, "name": "JEP 380 - Unix-Domain Socket Channels", - "dscr": "Add support for Unix-domain sockets, commonly used for inter-process communication on the same host." + "dscr": "Add support for Unix-domain sockets, commonly used for inter-process communication on the same host.", + "link": false, + "code": true }, { "jep": 386, "jdk": 16, "name": "JEP 386 - Alpine Linux Port", - "dscr": "Ports the JDK to Alpine Linux and other Linux distributions using musl as their primary C library on x64 and AArch64." + "dscr": "Ports the JDK to Alpine Linux and other Linux distributions using musl as their primary C library on x64 and AArch64.", + "link": false, + "code": false }, { "jep": 388, "jdk": 16, "name": "JEP 388 - Windows/AArch64 Port", - "dscr": "Port the JDK to Windows/AArch64 (ARM64)." + "dscr": "Port the JDK to Windows/AArch64 (ARM64).", + "link": false, + "code": false }, { "jep": 389, "jdk": 16, "name": "JEP 389 - Foreign Linker API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 390, "jdk": 16, "name": "JEP 390 - Warnings for Value-Based Classes", - "dscr": "Designate wrapper classes as value-based and add warnings about attempts to synchronize on them." + "dscr": "Designate wrapper classes as value-based and add warnings about attempts to synchronize on them.", + "link": false, + "code": true }, { "jep": 392, "jdk": 16, "name": "JEP 392 - Packaging Tool", - "dscr": "Finalizes the jpackage tool for creating native application installers (MSI, EXE, DMG, PKG, DEB, RPM)." + "dscr": "Finalizes the jpackage tool for creating native application installers (MSI, EXE, DMG, PKG, DEB, RPM).", + "link": false, + "code": false }, { "jep": 393, "jdk": 16, "name": "JEP 393 - Foreign-Memory Access API (Third Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 394, "jdk": 16, "name": "JEP 394 - Pattern Matching for instanceof", - "dscr": "Enhances instanceof operator to perform pattern matching, reducing boilerplate code." + "dscr": "Enhances instanceof operator to perform pattern matching, reducing boilerplate code.", + "link": false, + "code": true }, { - "jep": 396, + "jep": 395, "jdk": 16, - "name": "JEP 396 - Strongly Encapsulate JDK Internals by Default", - "dscr": "Strongly encapsulate all internal elements of the JDK by default, allowing access only via the `--illegal-access` option." + "name": "JEP 395 - Records", + "dscr": "Finalizes Records, transparent carriers for immutable data; see RecordDemo.java", + "link": false, + "code": true }, { - "jep": 395, + "jep": 396, "jdk": 16, - "name": "JEP 395 - Records", - "dscr": "Finalizes Records, transparent carriers for immutable data; see RecordDemo.java" + "name": "JEP 396 - Strongly Encapsulate JDK Internals by Default", + "dscr": "Strongly encapsulate all internal elements of the JDK by default, allowing access only via the `--illegal-access` option.", + "link": false, + "code": true }, { "jep": 397, "jdk": 16, "name": "JEP 397 - Sealed Classes (Second Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java17.jep409.SealedDemo (JEP 409)" + "dscr": "Up-to-date demo moved to org.javademos.java17.jep409.SealedDemo (JEP 409)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK17Info.json b/src/main/resources/JDK17Info.json index ad8dabf9..afd8556d 100644 --- a/src/main/resources/JDK17Info.json +++ b/src/main/resources/JDK17Info.json @@ -1,74 +1,98 @@ [ - { - "jep": 403, - "jdk": 17, - "name": "JEP 403 - Strongly Encapsulate JDK Internals", - "dscr": "Restricts access to most internal JDK APIs by default, improving security and maintainability. Access requires explicit command-line flags like --add-opens." - }, { "jep": 306, "jdk": 17, "name": "JEP 306 - Restore Always-Strict Floating-Point Semantics", - "dscr": "Make all floating-point operations consistently strict, removing the difference between strictfp and default modes." + "dscr": "Make all floating-point operations consistently strict, removing the difference between strictfp and default modes.", + "link": false, + "code": true }, { "jep": 382, "jdk": 17, "name": "JEP 382 - New macOS Rendering Pipeline", - "dscr": "Replaces the internal OpenGL-based rendering pipeline for Java 2D on macOS with Apple's Metal API for better performance and future compatibility." + "dscr": "Replaces the internal OpenGL-based rendering pipeline for Java 2D on macOS with Apple's Metal API for better performance and future compatibility.", + "link": false, + "code": false }, { "jep": 391, "jdk": 17, "name": "JEP 391 - macOS/AArch64 Port", - "dscr": "Explains the port of the JDK to macOS on ARM64 (Apple Silicon); see MacOsAarch64PortDemo.java" + "dscr": "Explains the port of the JDK to macOS on ARM64 (Apple Silicon); see MacOsAarch64PortDemo.java", + "link": false, + "code": false + }, + { + "jep": 403, + "jdk": 17, + "name": "JEP 403 - Strongly Encapsulate JDK Internals", + "dscr": "Restricts access to most internal JDK APIs by default, improving security and maintainability. Access requires explicit command-line flags like --add-opens.", + "link": false, + "code": true }, { "jep": 406, "jdk": 17, "name": "JEP 406 - Pattern Matching for switch (Preview)", - "dscr": "The first preview of Pattern Matching for switch. The final implementation is in JEP 441." + "dscr": "The first preview of Pattern Matching for switch. The final implementation is in JEP 441.", + "link": true, + "code": false }, { "jep": 407, "jdk": 17, "name": "JEP 407 - Remove RMI Activation", - "dscr": "Removes the obsolete RMI Activation mechanism, including the `java.rmi.activation` package and the `rmid` tool. Core RMI is unaffected." + "dscr": "Removes the obsolete RMI Activation mechanism, including the `java.rmi.activation` package and the `rmid` tool. Core RMI is unaffected.", + "link": false, + "code": false }, { "jep": 409, "jdk": 17, "name": "JEP 409 - Sealed Classes", - "dscr": "Control which classes or interfaces can extend or implement them; see SealedDemo.java" + "dscr": "Control which classes or interfaces can extend or implement them; see SealedDemo.java", + "link": false, + "code": true }, { "jep": 410, "jdk": 17, "name": "JEP 410 - Remove the Experimental AOT and JIT Compiler", - "dscr": "Explains the removal of experimental jaotc and Graal JIT modules; see RemoveAotJitDemo.java" + "dscr": "Explains the removal of experimental jaotc and Graal JIT modules; see RemoveAotJitDemo.java", + "link": false, + "code": false }, { "jep": 411, "jdk": 17, "name": "JEP 411 - Deprecate the Security Manager for Removal", - "dscr": "Up-to-date demo moved to org.javademos.java24.jep486.DisableSecurityManager (JEP 486)" + "dscr": "Up-to-date demo moved to org.javademos.java24.jep486.DisableSecurityManager (JEP 486)", + "link": true, + "code": false }, { "jep": 412, "jdk": 17, "name": "JEP 412 - Foreign Function & Memory API (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 414, "jdk": 17, "name": "JEP 414 - Vector API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 415, "jdk": 17, "name": "JEP 415 - Context-Specific Deserialization Filters", - "dscr": "Configure context-specific filters via a JVM-wide filter factory; see ContextSpecificDeserializationFiltersDemo.java" + "dscr": "Configure context-specific filters via a JVM-wide filter factory; see ContextSpecificDeserializationFiltersDemo.java", + "link": false, + "code": true } ] \ No newline at end of file diff --git a/src/main/resources/JDK18Info.json b/src/main/resources/JDK18Info.json index 8ebc6c9e..da7ca08b 100644 --- a/src/main/resources/JDK18Info.json +++ b/src/main/resources/JDK18Info.json @@ -3,54 +3,72 @@ "jep": 400, "jdk": 18, "name": "JEP 400 - UTF-8 by Default", - "dscr": "Sets the default charset to UTF-8 for Java applications, improving compatibility and reducing bugs related to character encoding." + "dscr": "Sets the default charset to UTF-8 for Java applications, improving compatibility and reducing bugs related to character encoding.", + "link": false, + "code": true }, { "jep": 408, "jdk": 18, "name": "JEP 408 - Simple Web Server", - "dscr": "Command-line tool and API to start a minimal HTTP server for serving static files. Useful for prototyping, testing, and educational purposes." + "dscr": "Command-line tool and API to start a minimal HTTP server for serving static files. Useful for prototyping, testing, and educational purposes.", + "link": false, + "code": true }, { "jep": 413, "jdk": 18, "name": "JEP 413 - Code Snippets in Java API Documentation", - "dscr": "Introduces the @snippet tag for JavaDoc to simplify the inclusion of example source code in API documentation." + "dscr": "Introduces the @snippet tag for JavaDoc to simplify the inclusion of example source code in API documentation.", + "link": false, + "code": false }, { "jep": 416, "jdk": 18, "name": "JEP 416 - Reimplement Core Reflection with Method Handles", - "dscr": "An internal reimplementation of Core Reflection to use method handles, unifying the platform's reflective mechanisms. This change improves performance for constant-folded reflection calls and reduces JDK maintenance costs." + "dscr": "An internal reimplementation of Core Reflection to use method handles, unifying the platform's reflective mechanisms. This change improves performance for constant-folded reflection calls and reduces JDK maintenance costs.", + "link": false, + "code": true }, { "jep": 417, "jdk": 18, "name": "JEP 417 - Vector API (Third Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 418, "jdk": 18, "name": "JEP 418 - Internet-Address Resolution SPI", - "dscr": "Defines a service-provider interface (SPI) for host name and address resolution, allowing `java.net.InetAddress` to use custom resolvers." + "dscr": "Defines a service-provider interface (SPI) for host name and address resolution, allowing `java.net.InetAddress` to use custom resolvers.", + "link": false, + "code": true }, { "jep": 419, "jdk": 18, "name": "JEP 419 - Foreign Function & Memory API (Second Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 420, "jdk": 18, "name": "JEP 420 - Pattern Matching for switch (Second Preview)", - "dscr": "The second preview of Pattern Matching for switch. The final implementation is in JEP 441." + "dscr": "The second preview of Pattern Matching for switch. The final implementation is in JEP 441.", + "link": true, + "code": false }, { "jep": 421, "jdk": 18, "name": "JEP 421 - Deprecate Finalization for Removal", - "dscr": "Deprecates the finalization mechanism for removal in a future release due to its inherent flaws." + "dscr": "Deprecates the finalization mechanism for removal in a future release due to its inherent flaws.", + "link": false, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK19Info.json b/src/main/resources/JDK19Info.json index 4397ff52..74528d11 100644 --- a/src/main/resources/JDK19Info.json +++ b/src/main/resources/JDK19Info.json @@ -3,42 +3,56 @@ "jep": 405, "jdk": 19, "name": "JEP 405 - Record Patterns (Preview)", - "dscr": "The preview of Record Patterns. The final implementation is in JEP 440." + "dscr": "The preview of Record Patterns. The final implementation is in JEP 440.", + "link": true, + "code": false }, { "jep": 422, "jdk": 19, "name": "JEP 422 – Linux/RISC-V Port", - "dscr": "No executable code, see LinuxRiscVPort.java for further info" + "dscr": "No executable code, see LinuxRiscVPort.java for further info", + "link": false, + "code": false }, { "jep": 424, "jdk": 19, "name": "JEP 424 - Foreign Function & Memory API (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 425, "jdk": 19, "name": "JEP 425 - Virtual Threads (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" + "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)", + "link": true, + "code": false }, { "jep": 426, "jdk": 19, "name": "JEP 426 - Vector API (Fourth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 427, "jdk": 19, "name": "JEP 427 - Pattern Matching for switch (Third Preview)", - "dscr": "The third preview of Pattern Matching for switch. The final implementation is in JEP 441." + "dscr": "The third preview of Pattern Matching for switch. The final implementation is in JEP 441.", + "link": true, + "code": false }, { "jep": 428, "jdk": 19, "name": "JEP 428 - Structured Concurrency (Incubator)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK20Info.json b/src/main/resources/JDK20Info.json index 83ed5ef6..1398d5e1 100644 --- a/src/main/resources/JDK20Info.json +++ b/src/main/resources/JDK20Info.json @@ -3,42 +3,56 @@ "jep": 429, "jdk": 20, "name": "JEP 429 - Scoped Values (Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)", + "link": true, + "code": false }, { "jep": 432, "jdk": 20, "name": "JEP 432 - Record Patterns (Second Preview)", - "dscr": "The second preview of Record Patterns. The final implementation is in JEP 440." + "dscr": "The second preview of Record Patterns. The final implementation is in JEP 440.", + "link": true, + "code": false }, { "jep": 433, "jdk": 20, "name": "JEP 433 - Pattern Matching for switch (Fourth Preview)", - "dscr": "The fourth preview of Pattern Matching for switch. The final implementation is in JEP 441." + "dscr": "The fourth preview of Pattern Matching for switch. The final implementation is in JEP 441.", + "link": true, + "code": false }, { "jep": 434, "jdk": 20, "name": "JEP 434 - Foreign Function & Memory API (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 436, "jdk": 20, "name": "JEP 436 - Virtual Threads (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)" + "dscr": "Up-to-date demo moved to `org.javademos.java21.jep444.VirtualThreadsDemo` (JEP 444)", + "link": true, + "code": false }, { "jep": 437, "jdk": 20, "name": "JEP 437 - Structured Concurrency (Second Incubator)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false }, { "jep": 438, "jdk": 20, "name": "JEP 438 - Vector API (Fifth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK21Info.json b/src/main/resources/JDK21Info.json index 1ae492a9..a27b65ca 100644 --- a/src/main/resources/JDK21Info.json +++ b/src/main/resources/JDK21Info.json @@ -3,90 +3,120 @@ "jep": 430, "jdk": 21, "name": "JEP 430 - String Templates (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep459.StringTemplatesSecondPreview` (JEP 459)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep459.StringTemplatesSecondPreview` (JEP 459)", + "link": true, + "code": false }, { "jep": 431, "jdk": 21, "name": "JEP 431 - Sequenced Collections", - "dscr": "Adds sequenced collections to the Java Collections Framework, providing a new way to handle ordered collections." + "dscr": "Adds sequenced collections to the Java Collections Framework, providing a new way to handle ordered collections.", + "link": false, + "code": true }, { "jep": 439, "jdk": 21, "name": "JEP 439 - Generational ZGC", - "dscr": "No executable code, see GenerationalZGC21.java for further info" + "dscr": "No executable code, see GenerationalZGC21.java for further info", + "link": false, + "code": false }, { "jep": 440, "jdk": 21, "name": "JEP 440 - Record Patterns", - "dscr": "Simplifying the destructuring of records and improving code readability." + "dscr": "Simplifying the destructuring of records and improving code readability.", + "link": false, + "code": true }, { "jep": 441, "jdk": 21, "name": "JEP 441 - Pattern Matching for switch", - "dscr": "Enhancing the switch expression with pattern matching capabilities." + "dscr": "Enhancing the switch expression with pattern matching capabilities.", + "link": false, + "code": true }, { "jep": 442, "jdk": 21, "name": "JEP 442 - Foreign Function & Memory API (Third Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep454.ForeignFunctionMemoryDemo` (JEP 454)", + "link": true, + "code": false }, { "jep": 443, "jdk": 21, "name": "JEP 443 - Unnamed Patterns and Variables (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java22.jep456.UnnamedPatternsAndVariables` (JEP 456)" + "dscr": "Up-to-date demo moved to `org.javademos.java22.jep456.UnnamedPatternsAndVariables` (JEP 456)", + "link": true, + "code": false }, { "jep": 444, "jdk": 21, "name": "JEP 444 - Virtual Threads", - "dscr": "Simplifying the handling of concurrency in Java applications by being no longer limited by the OS threads." + "dscr": "Simplifying the handling of concurrency in Java applications by being no longer limited by the OS threads.", + "link": false, + "code": true }, { "jep": 445, "jdk": 21, "name": "JEP 445 - Unnamed Classes and Instance Main Methods (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)", + "link": true, + "code": false }, { "jep": 446, "jdk": 21, "name": "JEP 446 - Scoped Values (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)", + "link": true, + "code": false }, { "jep": 448, "jdk": 21, "name": "JEP 448 - Vector API (Sixth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 449, "jdk": 21, "name": "JEP 449 - Deprecate the 32-bit x86 Windows Port for Removal", - "dscr": "Deprecated the Windows 32-bit x86 port in JDK 21, signaling its future removal." + "dscr": "Deprecated the Windows 32-bit x86 port in JDK 21, signaling its future removal.", + "link": false, + "code": false }, { "jep": 451, "jdk": 21, "name": "JEP 451 - Prepare to Disallow the Dynamic Loading of Agents", - "dscr": "Issues warnings when agents are loaded dynamically into a running JVM to prepare for disallowing this by default in a future release." + "dscr": "Issues warnings when agents are loaded dynamically into a running JVM to prepare for disallowing this by default in a future release.", + "link": false, + "code": false }, { "jep": 452, "jdk": 21, "name": "JEP 452 - Key Encapsulation Mechanism", - "dscr": "Introduces a Key Encapsulation Mechanism API, aiming to improve cryptographic capabilities." + "dscr": "Introduces a Key Encapsulation Mechanism API, aiming to improve cryptographic capabilities.", + "link": false, + "code": true }, { "jep": 453, "jdk": 21, "name": "JEP 453 - Structured Concurrency (Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK22Info.json b/src/main/resources/JDK22Info.json index e7993073..e39486c6 100644 --- a/src/main/resources/JDK22Info.json +++ b/src/main/resources/JDK22Info.json @@ -3,72 +3,96 @@ "jep": 423, "jdk": 22, "name": "JEP 423 - Region Pinning for G1", - "dscr": "No executable code, see RegionPinningForG1 class for further info" + "dscr": "No executable code, see RegionPinningForG1 class for further info", + "link": false, + "code": false }, { "jep": 447, "jdk": 22, "name": "JEP 447 - Statements before super(...) (Preview)", - "dscr": "Implementation moved into `org.javademos.java23.jep482.FlexibleConstructorBodies` (JEP 482)" + "dscr": "Implementation moved into `org.javademos.java23.jep482.FlexibleConstructorBodies` (JEP 482)", + "link": true, + "code": false }, { "jep": 454, "jdk": 22, "name": "JEP 454 - Foreign Function & Memory API", - "dscr": "Demonstrates calling C library function 'strlen' using Java's Foreign Function & Memory API." + "dscr": "Demonstrates calling C library function 'strlen' using Java's Foreign Function & Memory API.", + "link": false, + "code": true }, { "jep": 456, "jdk": 22, "name": "JEP 456 - Unnamed Patterns and Variables", - "dscr": "Finalizes the feature to use an underscore `_` for unnamed variables and patterns, improving code clarity when a variable's value is not needed." + "dscr": "Finalizes the feature to use an underscore `_` for unnamed variables and patterns, improving code clarity when a variable's value is not needed.", + "link": false, + "code": true }, { "jep": 457, "jdk": 22, "name": "JEP 457 - Class-File API (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)", + "link": true, + "code": false }, { "jep": 458, "jdk": 22, "name": "JEP 458 - Launch Multi-File Source-Code Programs", - "dscr": "Demonstrates launching multi-file source-code programs directly with java; see LaunchMultiFileSourceDemo.java" + "dscr": "Demonstrates launching multi-file source-code programs directly with java; see LaunchMultiFileSourceDemo.java", + "link": false, + "code": false }, { "jep": 459, "jdk": 22, "name": "JEP 459 - String Templates (Second Preview)", - "dscr": "A second preview of the String Templates feature. This feature was later removed in JDK 23." + "dscr": "A second preview of the String Templates feature. This feature was later removed in JDK 23.", + "link": false, + "code": false }, { "jep": 460, "jdk": 22, "name": "JEP 460 - Vector API (Seventh Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 461, "jdk": 22, "name": "JEP 461 - Stream Gatherers (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)", + "link": true, + "code": false }, { "jep": 462, "jdk": 22, "name": "JEP 462 - Structured Concurrency (Second Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false }, { "jep": 463, "jdk": 22, "name": "JEP 463 - Implicitly Declared Classes and Instance Main Methods (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)", + "link": true, + "code": false }, { "jep": 464, "jdk": 22, "name": "JEP 464 - Scoped Values (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK23Info.json b/src/main/resources/JDK23Info.json index be7a1d49..011dda5a 100644 --- a/src/main/resources/JDK23Info.json +++ b/src/main/resources/JDK23Info.json @@ -3,78 +3,104 @@ "jep": 455, "jdk": 23, "name": "JEP 455 - Primitive Types in Patterns, instanceof, and switch (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)", + "link": true, + "code": false }, { "jep": 462, "jdk": 23, "name": "JEP 462 - Structured Concurrency (Second Preview)", - "dscr": "Simplifies multithreaded programming by managing tasks in a structured scope. Demonstrates using StructuredTaskScope to manage subtasks as a single unit of work." + "dscr": "Simplifies multithreaded programming by managing tasks in a structured scope. Demonstrates using StructuredTaskScope to manage subtasks as a single unit of work.", + "link": true, + "code": false }, { "jep": 466, "jdk": 23, "name": "JEP 466 - Class-File API (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)" + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep484.ClassFileAPIDemo` (JEP 484)", + "link": true, + "code": false }, { "jep": 467, "jdk": 23, "name": "JEP 467 - Markdown Documentation Comments", - "dscr": "Markdown is now allowed in Java comments. See MarkdownComments.java class for further info" + "dscr": "Markdown is now allowed in Java comments. See MarkdownComments.java class for further info", + "link": false, + "code": false }, { "jep": 469, "jdk": 23, "name": "JEP 469 - Vector API (Eighth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 471, "jdk": 23, "name": "JEP 471 - Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal", - "dscr": "No executable code, see DeprecateMemoryAccessMethods class for further info" + "dscr": "No executable code, see DeprecateMemoryAccessMethods class for further info", + "link": false, + "code": false }, { "jep": 473, "jdk": 23, "name": "JEP 473 - Stream Gatherers (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)" + "dscr": "Up-to-date demo moved to `org.javademos.java24.jep485.StreamGatherersDemo` (JEP 485)", + "link": true, + "code": false }, { "jep": 474, "jdk": 23, "name": "JEP 474 - ZGC: Generational Mode by Default", - "dscr": "No executable code, see GenerationalZGC23.java for further info" + "dscr": "No executable code, see GenerationalZGC23.java for further info", + "link": false, + "code": false }, { "jep": 476, "jdk": 23, "name": "JEP 476 - Module Import Declarations (Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)", + "link": true, + "code": false }, { "jep": 477, "jdk": 23, "name": "JEP 477 - Implicitly Declared Classes and Instance Main Methods (Third Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)", + "link": true, + "code": false }, { "jep": 480, "jdk": 23, "name": "JEP 480 - Structured Concurrency (Third Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false }, { "jep": 481, "jdk": 23, "name": "JEP 481 - Scoped Values (Third Preview)", - "dscr": "Scoped Values enable a method to share immutable data both within a thread and in child threads" + "dscr": "Scoped Values enable a method to share immutable data both within a thread and in child threads", + "link": true, + "code": false }, { "jep": 482, "jdk": 23, "name": "JEP 482 - Flexible Constructor Bodies (Second Preview)", - "dscr": "Since Java 22, super() is no longer required to be placed as first statement in constructor" + "dscr": "Since Java 22, super() is no longer required to be placed as first statement in constructor", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK24Info.json b/src/main/resources/JDK24Info.json index 09fba1e6..db4e51ce 100644 --- a/src/main/resources/JDK24Info.json +++ b/src/main/resources/JDK24Info.json @@ -3,138 +3,192 @@ "jep": 404, "jdk": 24, "name": "JEP 404 - Generational Shenandoah (Experimental)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep521.GenerationalShenandoahDemo` (JEP 521)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep521.GenerationalShenandoahDemo` (JEP 521)", + "link": true, + "code": false }, { "jep": 450, "jdk": 24, "name": "JEP 450 - Compact Object Headers (Experimental)", - "dscr": "An experimental version of Compact Object Headers. The final demo is in JEP 519." + "dscr": "An experimental version of Compact Object Headers. The final demo is in JEP 519.", + "link": true, + "code": false }, { "jep": 472, "jdk": 24, "name": "JEP 472 - Prepare to Restrict the Use of JNI", - "dscr": "Issues warnings on uses of the Java Native Interface (JNI) to prepare for future restrictions, enhancing platform integrity by requiring explicit opt-in." + "dscr": "Issues warnings on uses of the Java Native Interface (JNI) to prepare for future restrictions, enhancing platform integrity by requiring explicit opt-in.", + "link": false, + "code": false }, { "jep": 475, "jdk": 24, "name": "JEP 475 - Late Barrier Expansion for G1", - "dscr": "Moves G1 garbage collector barrier expansion to the code emission phase in C2 JIT to reduce overhead and improve maintainability." + "dscr": "Moves G1 garbage collector barrier expansion to the code emission phase in C2 JIT to reduce overhead and improve maintainability.", + "link": false, + "code": false }, { "jep": 478, "jdk": 24, "name": "JEP 478 - Key Derivation Function API (Preview)", - "dscr": "A preview of the KDF API. The final implementation is in JEP 510 for Java 25." + "dscr": "A preview of the KDF API. The final implementation is in JEP 510 for Java 25.", + "link": true, + "code": false }, { "jep": 479, "jdk": 24, "name": "JEP 479 - Remove the 32-bit x86 Windows Port", - "dscr": "Removed support for the 32-bit x86 port on Windows in JDK 24, while keeping other OS ports available." + "dscr": "Removed support for the 32-bit x86 port on Windows in JDK 24, while keeping other OS ports available.", + "link": true, + "code": false }, { "jep": 483, "jdk": 24, "name": "JEP 483 - Ahead-of-Time Class Loading & Linking", - "dscr": "An experimental AOT feature. The final demos are in JEP 514 and JEP 515." + "dscr": "An experimental AOT feature. The final demos are in JEP 514 and JEP 515.", + "link": true, + "code": false }, { "jep": 484, "jdk": 24, "name": "JEP 484 - Class-File API", - "dscr": "Finalizes the API for parsing, generating, and transforming Java class files." + "dscr": "Finalizes the API for parsing, generating, and transforming Java class files.", + "link": false, + "code": true }, { "jep": 485, "jdk": 24, "name": "JEP 485 - Stream Gatherers", - "dscr": "Enhance the Stream API to support custom intermediate operations. This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations." + "dscr": "Enhance the Stream API to support custom intermediate operations. This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations.", + "link": false, + "code": true }, { "jep": 486, "jdk": 24, "name": "JEP 486 - Permanently Disable the Security Manager", - "dscr": "The Security Manager API, deprecated for removal in earlier releases, has now been permanently disabled. Any attempt to set a Security Manager will result in an UnsupportedOperationException." + "dscr": "The Security Manager API, deprecated for removal in earlier releases, has now been permanently disabled. Any attempt to set a Security Manager will result in an UnsupportedOperationException.", + "link": false, + "code": true }, { "jep": 487, "jdk": 24, "name": "JEP 487 - Scoped Values (Fourth Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep506.ScopedValuesDemo` (JEP 506)", + "link": true, + "code": false }, { "jep": 488, "jdk": 24, "name": "JEP 488 - Primitive Types in Patterns, instanceof, and switch (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep507.PrimitiveTypesDemo` (JEP 507)", + "link": true, + "code": false }, { "jep": 489, "jdk": 24, "name": "JEP 489 - Vector API (Ninth Incubator)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep508.VectorAPIDemo` (JEP 508)", + "link": true, + "code": false }, { "jep": 490, "jdk": 24, "name": "JEP 490 - ZGC: Remove the Non-Generational Mode", - "dscr": "Removes the non-generational mode of the Z Garbage Collector (ZGC), making the generational mode the only option. This change simplifies long-term maintenance and focuses development efforts on the more efficient generational model." + "dscr": "Removes the non-generational mode of the Z Garbage Collector (ZGC), making the generational mode the only option. This change simplifies long-term maintenance and focuses development efforts on the more efficient generational model.", + "link": false, + "code": false }, { "jep": 491, "jdk": 24, "name": "JEP 491 - Synchronize Virtual Threads without Pinning", - "dscr": "Improves scalability by allowing virtual threads to unmount from their carrier platform thread when blocked in 'synchronized' methods, eliminating a major source of thread pinning." + "dscr": "Improves scalability by allowing virtual threads to unmount from their carrier platform thread when blocked in 'synchronized' methods, eliminating a major source of thread pinning.", + "link": false, + "code": false + }, + { + "jep": 492, + "jdk": 24, + "name": "JEP 492 - Flexible Constructor Bodies (Third Preview)", + "dscr": "Allow statements to appear before an explicit constructor invocation, i.e., super(..) or this(..)", + "link": true, + "code": false }, { "jep": 493, "jdk": 24, "name": "JEP 493 - Linking Run-Time Images without JMODs", - "dscr": "Simplifies jlink by removing the need for JMOD files. Developers can now link custom runtime images directly from modular JARs, streamlining the build process." + "dscr": "Simplifies jlink by removing the need for JMOD files. Developers can now link custom runtime images directly from modular JARs, streamlining the build process.", + "link": false, + "code": false }, { "jep": 494, "jdk": 24, "name": "JEP 494 - Module Import Declarations (Second Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep511.ModuleImportDeclarationsDemo` (JEP 511)", + "link": true, + "code": false }, { "jep": 495, "jdk": 24, "name": "JEP 495 - Simple Source Files and Instance Main Methods (Fourth Preview)", - "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)" + "dscr": "Up-to-date demo moved to `org.javademos.java25.jep512.CompactSourceFilesDemo` (JEP 512)", + "link": true, + "code": false }, { "jep": 496, "jdk": 24, "name": "JEP 496 - Quantum Resistant Algorithm - Lattice-based Key Encapsulation", - "dscr": "Provides a lattice-based key encapsulation mechanism to support quantum-resistant key exchanges; see QuantumResistantModuleLatticeBasedKeyEncapsulation.java" + "dscr": "Provides a lattice-based key encapsulation mechanism to support quantum-resistant key exchanges; see QuantumResistantModuleLatticeBasedKeyEncapsulation.java", + "link": false, + "code": true }, { "jep": 497, "jdk": 24, "name": "JEP 497 - Quantum Resistant Algorithm - Lattice-based Digital Signature (Preview)", - "dscr": "Provides a lattice-based digital signature algorithm to support quantum-resistant signatures; see QuantumResistantModule.java" + "dscr": "Provides a lattice-based digital signature algorithm to support quantum-resistant signatures; see QuantumResistantModule.java", + "link": false, + "code": true }, { "jep": 498, "jdk": 24, "name": "JEP 498 - Warn upon Use of Memory-Access Methods in sun.misc.Unsafe", - "dscr": "Showing runtime warnings for methods that are already deprecated" + "dscr": "Showing runtime warnings for methods that are already deprecated", + "link": false, + "code": true }, { "jep": 499, "jdk": 24, "name": "JEP 499 - Structured Concurrency (Fourth Preview)", - "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)" + "dscr": "Up-to-date demo moved to org.javademos.java25.jep505.StructuredConcurrencyDemo (JEP 505)", + "link": true, + "code": false }, { "jep": 501, "jdk": 24, "name": "JEP 501 - Deprecate the 32-bit x86 Port for Removal", - "dscr": "Deprecated the entire 32-bit x86 port in JDK 24, warning of its complete removal in JDK 25." + "dscr": "Deprecated the entire 32-bit x86 port in JDK 24, warning of its complete removal in JDK 25.", + "link": true, + "code": false } ] \ No newline at end of file diff --git a/src/main/resources/JDK25Info.json b/src/main/resources/JDK25Info.json index 5b748bd7..36d3ca2a 100644 --- a/src/main/resources/JDK25Info.json +++ b/src/main/resources/JDK25Info.json @@ -3,108 +3,144 @@ "jep": 470, "jdk": 25, "name": "JEP 470 - PEM Encodings of Cryptographic Objects (Preview)", - "dscr": "Preview support for reading and writing PEM-encoded cryptographic objects; see PemEncodings.java" + "dscr": "Preview support for reading and writing PEM-encoded cryptographic objects; see PemEncodings.java", + "link": false, + "code": false }, { "jep": 502, "jdk": 25, "name": "JEP 502 - Stable Values (Preview)", - "dscr": "Stable Values offer an immutable data abstraction for performance and safety; see StableValuesDemo.java" + "dscr": "Stable Values offer an immutable data abstraction for performance and safety; see StableValuesDemo.java", + "link": false, + "code": true }, { "jep": 503, "jdk": 25, "name": "JEP 503 - Remove the 32-bit x86 Port", - "dscr": "Removes the legacy 32-bit x86 port from the JDK to reduce maintenance burden; see Remove32BitX86Demo.java" + "dscr": "Removes the legacy 32-bit x86 port from the JDK to reduce maintenance burden; see Remove32BitX86Demo.java", + "link": false, + "code": false }, { "jep": 505, "jdk": 25, "name": "JEP 505 - Structured Concurrency (Fifth Preview)", - "dscr": "Structured concurrency simplifies concurrent programming by treating multiple tasks as a single unit of work; see StructuredConcurrencyDemo.java" + "dscr": "Structured concurrency simplifies concurrent programming by treating multiple tasks as a single unit of work; see StructuredConcurrencyDemo.java", + "link": false, + "code": true }, { "jep": 506, "jdk": 25, "name": "JEP 506 - Scoped Values", - "dscr": "Scoped Values provide a safe, immutable alternative to thread-local variables; see ScopedValuesDemo.java" + "dscr": "Scoped Values provide a safe, immutable alternative to thread-local variables; see ScopedValuesDemo.java", + "link": false, + "code": true }, { "jep": 507, "jdk": 25, "name": "JEP 507 - Primitive Types in Patterns, instanceof, and switch (Third Preview)", - "dscr": "Demonstrates primitive type patterns in instanceof and switch; see PrimitiveTypesDemo.java" + "dscr": "Demonstrates primitive type patterns in instanceof and switch; see PrimitiveTypesDemo.java", + "link": false, + "code": true }, { "jep": 508, "jdk": 25, "name": "JEP 508 - Vector API (Tenth Incubator)", - "dscr": "API for expressing vector computations that reliably compile at runtime to optimal vector instructions on supported CPUs to achieve better performance" + "dscr": "API for expressing vector computations that reliably compile at runtime to optimal vector instructions on supported CPUs to achieve better performance", + "link": false, + "code": true }, { "jep": 509, "jdk": 25, "name": "JEP 509 - JFR CPU-Time Profiling", - "dscr": "Demonstrates experimental CPU-Time Profiling using JFR; see CpuTimeProfilingDemo.java" + "dscr": "Demonstrates experimental CPU-Time Profiling using JFR; see CpuTimeProfilingDemo.java", + "link": false, + "code": true }, { "jep": 510, "jdk": 25, "name": "JEP 510 - Key Derivation Function API", - "dscr": "Standard API for Key Derivation Functions (KDFs) in Java; see KeyDerivationFunctionDemo.java for usage." + "dscr": "Standard API for Key Derivation Functions (KDFs) in Java; see KeyDerivationFunctionDemo.java for usage.", + "link": false, + "code": true }, { "jep": 511, "jdk": 25, "name": "JEP 511 - Module Import Declarations", - "dscr": "Java 25 finalizes module import declarations; see ModuleImportDeclarations.java for details" + "dscr": "Java 25 finalizes module import declarations; see ModuleImportDeclarations.java for details", + "link": false, + "code": true }, { "jep": 512, "jdk": 25, "name": "JEP 512 - Compact Source Files and Instance Main Methods", - "dscr": "Finalizes the 'on-ramp' features for beginners. Allows instance main methods, implicitly declared classes for single-file programs, and introduces a standard IO class, making it easier to write simple Java programs." + "dscr": "Finalizes the 'on-ramp' features for beginners. Allows instance main methods, implicitly declared classes for single-file programs, and introduces a standard IO class, making it easier to write simple Java programs.", + "link": false, + "code": true }, { "jep": 513, "jdk": 25, "name": "JEP 513 - Flexible Constructor Bodies", - "dscr": "It shows the best practises for explicit constructor invocation, see FlexibleConstructorBodiesDemo.java for details" + "dscr": "It shows the best practises for explicit constructor invocation, see FlexibleConstructorBodiesDemo.java for details", + "link": false, + "code": true }, { "jep": 514, "jdk": 25, "name": "JEP 514 - Ahead-of-Time Command-Line Ergonomics", - "dscr": "Shows simplified and ergonomic CLI commands for Ahead-of-Time compilation; see AheadOfTimeCLI.java" + "dscr": "Shows simplified and ergonomic CLI commands for Ahead-of-Time compilation; see AheadOfTimeCLI.java", + "link": false, + "code": true }, { "jep": 515, "jdk": 25, "name": "JEP 515 - Ahead-of-Time Method Profiling", - "dscr": "Demonstrates Ahead-of-Time Method Profiling which improves warmup time; see AheadOfTimeMethodProfiling.java" + "dscr": "Demonstrates Ahead-of-Time Method Profiling which improves warmup time; see AheadOfTimeMethodProfiling.java", + "link": false, + "code": true }, { "jep": 518, "jdk": 25, "name": "JEP 518 - JFR Cooperative Sampling", - "dscr": "Introduce cooperative sampling in Java Flight Recorder to reduce bias and overhead; see JFRCooperativeSampling.java" + "dscr": "Introduce cooperative sampling in Java Flight Recorder to reduce bias and overhead; see JFRCooperativeSampling.java", + "link": false, + "code": false }, { "jep": 519, "jdk": 25, "name": "JEP 519 - Compact Object Headers", - "dscr": "Adds a demo for JEP 519 — Class-File API, showcasing how to parse, inspect, and generate Java class files programmatically; see CompactObjectHeaderDemo.java" + "dscr": "Adds a demo for JEP 519 — Class-File API, showcasing how to parse, inspect, and generate Java class files programmatically; see CompactObjectHeaderDemo.java", + "link": false, + "code": true }, { "jep": 520, "jdk": 25, "name": "JEP 520 - JFR Method Timing & Tracing", - "dscr": "Introduces method timing and tracing capabilities to JFR, allowing for low-overhead method invocation tracing; see Jep520MethodTracingDemo.java" + "dscr": "Introduces method timing and tracing capabilities to JFR, allowing for low-overhead method invocation tracing; see Jep520MethodTracingDemo.java", + "link": false, + "code": true }, { "jep": 521, "jdk": 25, "name": "JEP 521 - Generational Shenandoah", - "dscr": "Enhances Shenandoah GC with generational collection, improving performance and pause times by treating short-lived and long-lived objects differently; see GenerationalShenandoahDemo.java" + "dscr": "Enhances Shenandoah GC with generational collection, improving performance and pause times by treating short-lived and long-lived objects differently; see GenerationalShenandoahDemo.java", + "link": false, + "code": true } ] \ No newline at end of file From 8d82ebb52aa66bf47db931e243e1c8f388d6a8c8 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Fri, 24 Oct 2025 23:18:11 +0200 Subject: [PATCH 3/6] docs: update CONTRIBUTING.md for clarity on extended JEP JSON resource --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60e849ea..918123cd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,7 +36,7 @@ Originally, there were only a few cherry-picked demos for features I find most i **NOTE:** Due to transition period, some information here may not correspond with the current state of the source code. Feel free to ask when in doubt. [`IDemo` interface](/src/main/java/org/javademos/commons/IDemo.java) prescribes two methods: -- `info()` - unified header, that only needs to be supplied with JEP number. Then it looks up the text info in Map defined in [`DemoInfo` class](/src/main/java/org/javademos/commons/DemoInfo.java) and prints it in a standardized way. +- `info()` - unified header, that only needs to be supplied with JEP number. Then it looks up the text info in Map defined in [`JEPInfo` class](/src/main/java/org/javademos/commons/JEPInfo.java) and prints it in a standardized way. - `demo()` - this is the actual implementation of whatever can be shown to demonstrate tne new features introduced with the given JEP. The code part in `demo()` method can contain little to no actual code. For many JEPs that are altering the internals of JVM or implementations of JDK library classes, only printing out some text summary may be enough to cover it. @@ -78,7 +78,7 @@ We can always discuss under each individual issue/PR, how to turn your invaluabl - If your implementation creates any files, save them under the repository-local `tmp/` folder. This folder is gitignored to prevent untracked artifacts. - Follow the markdown style comments to describe the class. - Do not hesitate to use (standard) comments inside your code - remember the desired usecase is future users will check the code to figure out how the feature works. - - Do not forget to add required record to the respective JSON resource file (JEP name and brief, but meaningful description). **Keep the records ordered by JEP number ascending.** + - Do not forget to add required record to the respective JSON resource file. **Keep the records ordered by JEP number ascending.** This record should follow this structure: JEP number, JDK version, name, brief description, link (true if this JEP is replaced by another JEP), code (true if it contains code and not only comments describing JEP). - Do not forget to add your new demo into the respective helper class for the JDK version, so it gets executed from `Main.java`. Always add comment with JEP number for better clarity. **Keep the demos ordered by JEP number ascending.** - Make sure you are not accidentally submitting some other files or changes that are not related to PR topic. - Because this project might be quite active with multiple contributors working on same files, please make sure your fork is in sync with the `master` branch of the original repository before submitting the PR. Double-check the "Files changed" tab of your PR and avoid posting anything not relevant to your changes. From 6e27835e16d878023893200988a65c968ceb31a5 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Fri, 24 Oct 2025 23:30:07 +0200 Subject: [PATCH 4/6] docs: update CONTRIBUTING.md correct spelling mistakes --- CONTRIBUTING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 918123cd..9cb2ce8d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ Originally, there were only a few cherry-picked demos for features I find most i - Folder [`org.javademos.init`](https://github.com/AloisSeckar/demos-java/tree/master/src/main/java/org/javademos/init) contains helper classes, one for every JDK version, that were introduced mostly to reduce number of imports per class. Also it allows to turn on/off whole sub-set for given JDK version, if needed. - Last but not least, [`Main.java`](https://github.com/AloisSeckar/demos-java/blob/master/src/main/java/org/javademos/Main.java) class is the main entrypoint - it starts by displaying current JVM info, then loads all demos from the helper files and runs them one by one. The output depends on their implementation. -**Note:** Currently, there is a transition period, when JDK 22 and older files are not yet fully transferred to the new structure. Once you get familiar with this project better, you can also help with that aside from implementing new demos for lates JEPs. +**Note:** Currently, there is a transition period, when JDK 22 and older files are not yet fully transferred to the new structure. Once you get familiar with this project better, you can also help with that aside from implementing new demos for latest JEPs. ## Demo implementation @@ -51,11 +51,11 @@ Current referential implementation is [MarkdownComments.java for JEP 467](/src/m ## Contributions -**If you want to help with some issue, please check if it not assigned yet first!** Lets avoid unncessesary conflicts and disappointments before they can happen. +**If you want to help with some issue, please check if it is not assigned yet first!** Let's avoid unnecessary conflicts and disappointments before they can happen. -Currently, the focus is on implementing demos for all features of JDK versions going down from 25. Focused issues are being opened. However, if you feel like creating demo for some other JEP, which doesn't have issue yet, you are very much welcome to do so! Just let me know by opening an issue, so it can be properly tracked and your contribution can be recognized. Rememeber, many JEPs are not covered yet. +Currently, the focus is on implementing demos for all features of JDK versions going down from 25. Focused issues are being opened. However, if you feel like creating demo for some other JEP, which doesn't have issue yet, you are very much welcome to do so! Just let me know by opening an issue, so it can be properly tracked and your contribution can be recognized. Remember, many JEPs are not covered yet. -Issues are tagged with labels. If you are here for the first time, look for `good first issue` label which indicates relatively smaller and simplier tasks. Tasks labeled with `advanced` will require better understanding of this project structure and they are recommended to users who already have some PRs accepted. Before starting to work on any issue, be sure you understand the task clearly to avoid unnecessary re-work. If in doubt, please, ask in the issue comments. +Issues are tagged with labels. If you are here for the first time, look for `good first issue` label which indicates relatively smaller and simpler tasks. Tasks labeled with `advanced` will require better understanding of this project structure, and they are recommended to users who already have some PRs accepted. Before starting to work on any issue, be sure you understand the task clearly to avoid unnecessary re-work. If in doubt, please, ask in the issue comments. A number of JEP demos exist already, but they're not fully transferred to the new style (with Markdown comments) or there are some inconsistencies with the majority of the project. So this is also an option for your contributions. @@ -77,8 +77,8 @@ We can always discuss under each individual issue/PR, how to turn your invaluabl - Place the new file accordingly into the project structure (correct JDK and JEP folder). - If your implementation creates any files, save them under the repository-local `tmp/` folder. This folder is gitignored to prevent untracked artifacts. - Follow the markdown style comments to describe the class. - - Do not hesitate to use (standard) comments inside your code - remember the desired usecase is future users will check the code to figure out how the feature works. - - Do not forget to add required record to the respective JSON resource file. **Keep the records ordered by JEP number ascending.** This record should follow this structure: JEP number, JDK version, name, brief description, link (true if this JEP is replaced by another JEP), code (true if it contains code and not only comments describing JEP). + - Do not hesitate to use (standard) comments inside your code - remember the desired use case is future users will check the code to figure out how the feature works. + - Do not forget to add required record to the respective JSON resource file. **Keep the records ordered by JEP number ascending.** This record should follow next structure: JEP number, JDK version, name, brief description, link (true if this JEP is replaced by another JEP), code (true if it contains code and not only comments describing JEP). - Do not forget to add your new demo into the respective helper class for the JDK version, so it gets executed from `Main.java`. Always add comment with JEP number for better clarity. **Keep the demos ordered by JEP number ascending.** - Make sure you are not accidentally submitting some other files or changes that are not related to PR topic. - Because this project might be quite active with multiple contributors working on same files, please make sure your fork is in sync with the `master` branch of the original repository before submitting the PR. Double-check the "Files changed" tab of your PR and avoid posting anything not relevant to your changes. From 8b6ca7be7d3421cd0c64fafac0842a985df17533 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Fri, 24 Oct 2025 23:58:54 +0200 Subject: [PATCH 5/6] merge: add mising attributes to JEP371 JEP372 --- src/main/resources/JDK15Info.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/JDK15Info.json b/src/main/resources/JDK15Info.json index 9d310073..56d2bb37 100644 --- a/src/main/resources/JDK15Info.json +++ b/src/main/resources/JDK15Info.json @@ -12,15 +12,15 @@ "jdk": 15, "name": "JEP 371 - Hidden Classes", "dscr": "Introduces hidden classes that cannot be used directly by bytecode of other classes and can be unloaded independently", - "link": true, - "code": false + "link": false, + "code": true }, { "jep": 372, "jdk": 15, "name": "JEP 372 - Remove the Nashorn JavaScript Engine", "dscr": "Remove the Nashorn JavaScript script engine, APIs, and the jjs tool. No code demo applicable as the feature was removed.", - "link": true, + "link": false, "code": false }, { From 75b3bfdde73847191d013e4aba8a5e0ca99e4a10 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sat, 25 Oct 2025 00:01:02 +0200 Subject: [PATCH 6/6] merge: add mising attributes to JEP371 JEP372 JEP381 --- src/main/resources/JDK15Info.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/JDK15Info.json b/src/main/resources/JDK15Info.json index 56d2bb37..167aeac7 100644 --- a/src/main/resources/JDK15Info.json +++ b/src/main/resources/JDK15Info.json @@ -35,7 +35,9 @@ "jep": 381, "jdk": 15, "name": "JEP 381 - Remove the Solaris and SPARC Ports", - "dscr": "Removed the source code and build support for Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. No code demo applicable." + "dscr": "Removed the source code and build support for Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. No code demo applicable.", + "link": false, + "code": false }, { "jep": 383,