From 881cc5bc73419c53bc11cf5a82049795901f9b22 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 14:20:41 +0100 Subject: [PATCH 1/8] refactor: move demos into a Map with jep key to enable future filtering --- src/main/java/org/javademos/Main.java | 33 +-- .../java/org/javademos/commons/IDemo.java | 6 +- .../java/org/javademos/commons/JEPInfo.java | 45 --- src/main/java/org/javademos/init/JEPInfo.java | 259 ++++++++++++++++++ src/main/java/org/javademos/init/Java11.java | 29 -- src/main/java/org/javademos/init/Java12.java | 26 -- src/main/java/org/javademos/init/Java13.java | 23 -- src/main/java/org/javademos/init/Java14.java | 29 -- src/main/java/org/javademos/init/Java15.java | 49 ---- src/main/java/org/javademos/init/Java16.java | 62 ----- src/main/java/org/javademos/init/Java17.java | 74 ----- src/main/java/org/javademos/init/Java18.java | 47 ---- src/main/java/org/javademos/init/Java19.java | 39 --- src/main/java/org/javademos/init/Java20.java | 39 --- src/main/java/org/javademos/init/Java21.java | 66 ----- src/main/java/org/javademos/init/Java22.java | 54 ---- src/main/java/org/javademos/init/Java23.java | 58 ---- src/main/java/org/javademos/init/Java24.java | 87 ------ src/main/java/org/javademos/init/Java25.java | 74 ----- 19 files changed, 267 insertions(+), 832 deletions(-) delete mode 100644 src/main/java/org/javademos/commons/JEPInfo.java create mode 100644 src/main/java/org/javademos/init/JEPInfo.java delete mode 100644 src/main/java/org/javademos/init/Java11.java delete mode 100644 src/main/java/org/javademos/init/Java12.java delete mode 100644 src/main/java/org/javademos/init/Java13.java delete mode 100644 src/main/java/org/javademos/init/Java14.java delete mode 100644 src/main/java/org/javademos/init/Java15.java delete mode 100644 src/main/java/org/javademos/init/Java16.java delete mode 100644 src/main/java/org/javademos/init/Java17.java delete mode 100644 src/main/java/org/javademos/init/Java18.java delete mode 100644 src/main/java/org/javademos/init/Java19.java delete mode 100644 src/main/java/org/javademos/init/Java20.java delete mode 100644 src/main/java/org/javademos/init/Java21.java delete mode 100644 src/main/java/org/javademos/init/Java22.java delete mode 100644 src/main/java/org/javademos/init/Java23.java delete mode 100644 src/main/java/org/javademos/init/Java24.java delete mode 100644 src/main/java/org/javademos/init/Java25.java diff --git a/src/main/java/org/javademos/Main.java b/src/main/java/org/javademos/Main.java index 13bea96d..773021d1 100644 --- a/src/main/java/org/javademos/Main.java +++ b/src/main/java/org/javademos/Main.java @@ -1,9 +1,8 @@ package org.javademos; import org.javademos.commons.IDemo; -import org.javademos.init.*; -import java.util.ArrayList; +import static org.javademos.init.JEPInfo.JEP_DEMO; /** * This application helps to show some new features from Java 11 to Java 21. @@ -36,34 +35,10 @@ public static void main(String[] args) { System.out.println(System.getProperty("java.vendor")); System.out.println(System.getProperty("java.version")); System.out.println(System.getProperty("java.specification.vendor")); - // - - var demoPool = new ArrayList(); - - // you may find useful to comment out other JDKs except the one - // you are about to examine - // it may be confusing to search the actual output of particular - // demo class implementation you are currently interested in - demoPool.addAll(Java11.getDemos()); - demoPool.addAll(Java12.getDemos()); - demoPool.addAll(Java13.getDemos()); - demoPool.addAll(Java14.getDemos()); - demoPool.addAll(Java15.getDemos()); - demoPool.addAll(Java16.getDemos()); - demoPool.addAll(Java17.getDemos()); - demoPool.addAll(Java18.getDemos()); - demoPool.addAll(Java19.getDemos()); - demoPool.addAll(Java20.getDemos()); - demoPool.addAll(Java21.getDemos()); - demoPool.addAll(Java22.getDemos()); - demoPool.addAll(Java23.getDemos()); - demoPool.addAll(Java24.getDemos()); - demoPool.addAll(Java25.getDemos()); - + JEP_DEMO.values().forEach(IDemo::demo); + // run method .demo() on each entry to see the output - demoPool.forEach(IDemo::demo); - + JEP_DEMO.values().forEach(IDemo::demo); } - } diff --git a/src/main/java/org/javademos/commons/IDemo.java b/src/main/java/org/javademos/commons/IDemo.java index 1ca76b41..b142a59b 100644 --- a/src/main/java/org/javademos/commons/IDemo.java +++ b/src/main/java/org/javademos/commons/IDemo.java @@ -1,5 +1,7 @@ package org.javademos.commons; +import org.javademos.init.JEPInfo; + /// Simple interface to unify the demo building process. /// /// Override method 'demo()' in your implementation and include new instance @@ -44,9 +46,9 @@ default void info(String demoName, String demoDscr) { /// This method accepts intended number of JEP and looks for data in DEMO_INFO map. /// /// @param jepNumber JEP number to be displayed - /// @see JEPInfo#JEP_INFO + /// @see JEPInfo#JEP_DATA default void info (int jepNumber) { - var demoInfo = JEPInfo.JEP_INFO.get(jepNumber); + var demoInfo = JEPInfo.JEP_DATA.get(jepNumber); if (demoInfo != null) { info(demoInfo.name(), demoInfo.dscr()); } else { diff --git a/src/main/java/org/javademos/commons/JEPInfo.java b/src/main/java/org/javademos/commons/JEPInfo.java deleted file mode 100644 index 68c9acad..00000000 --- a/src/main/java/org/javademos/commons/JEPInfo.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.javademos.commons; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import java.io.*; -import java.text.MessageFormat; -import java.util.*; - -public class JEPInfo { - - private JEPInfo() {} - - public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} - - public static Map JEP_INFO = getAllEntries(); - - 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) { - var srcFile = MessageFormat.format("/JDK{0}Info.json", src); - try (InputStream inputStream = JEPInfo.class.getResourceAsStream(srcFile)) { - if (inputStream != null) { - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - var JEPListType = new TypeToken>() { - }.getType(); - var gson = new Gson(); - List data = gson.fromJson(br, JEPListType); - data.forEach(d -> jeps.put(d.jep(), d)); - } catch (IOException e) { - e.printStackTrace(System.out); - } - } else { - System.err.println(MessageFormat.format("InputStream {0} is null", src)); - } - } catch (IOException e) { - e.printStackTrace(System.out); - } - } - - return jeps; - } - -} diff --git a/src/main/java/org/javademos/init/JEPInfo.java b/src/main/java/org/javademos/init/JEPInfo.java new file mode 100644 index 00000000..ec69deee --- /dev/null +++ b/src/main/java/org/javademos/init/JEPInfo.java @@ -0,0 +1,259 @@ +package org.javademos.init; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.javademos.commons.IDemo; + +import java.io.*; +import java.text.MessageFormat; +import java.util.*; + +public class JEPInfo { + + private JEPInfo() {} + + public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} + + public static final Map JEP_DATA = getAllInfos(); + public static final Map JEP_DEMO = getAllDemos(); + + private static Map getAllInfos() { + var jeps = new HashMap(); + + var sources = Arrays.asList(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); + for (Integer src : sources) { + var srcFile = MessageFormat.format("/JDK{0}Info.json", src); + try (InputStream inputStream = JEPInfo.class.getResourceAsStream(srcFile)) { + if (inputStream != null) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { + var JEPListType = new TypeToken>() { + }.getType(); + var gson = new Gson(); + List data = gson.fromJson(br, JEPListType); + data.forEach(d -> jeps.put(d.jep(), d)); + } catch (IOException e) { + e.printStackTrace(System.out); + } + } else { + System.err.println(MessageFormat.format("InputStream {0} is null", src)); + } + } catch (IOException e) { + e.printStackTrace(System.out); + } + } + + return jeps; + } + + private static Map getAllDemos() { + var demos = new HashMap(); + + getJava11Demos(demos); + getJava12Demos(demos); + getJava14Demos(demos); + getJava15Demos(demos); + getJava16Demos(demos); + getJava17Demos(demos); + getJava18Demos(demos); + getJava19Demos(demos); + getJava20Demos(demos); + getJava21Demos(demos); + getJava22Demos(demos); + getJava23Demos(demos); + getJava24Demos(demos); + getJava25Demos(demos); + + return demos; + } + + private static void getJava11Demos(Map demos) { + //TODO align old demos and add necessary JDKInfo.json + + // Java 11 +// demos.put(11, new J9Demo()); +// demos.put(11, new VarDemo()); +// demos.put(11, new HttpDemo()); +// demos.put(11, new String11Demo()); + } + + private static void getJava12Demos(Map demos) { + //TODO align old demos and add necessary JDKInfo.json + + // Java 12 +// demos.put(12, new String12Demo()); + } + + private static void getJava14Demos(Map demos) { + demos.put(305, new org.javademos.java14.jep305.InstanceofPatternMatchingPreview()); + demos.put(359, new org.javademos.java14.jep359.RecordsPreviewDemo()); + demos.put(370, new org.javademos.java14.jep370.ForeignMemoryAccessDemo()); + } + + private static void getJava15Demos(Map demos) { + demos.put(360, new org.javademos.java15.jep360.SealedClassesDemo()); + demos.put(371, new org.javademos.java15.jep371.HiddenClassesDemo()); + demos.put(372, new org.javademos.java15.jep372.NashornRemovalDemo()); + demos.put(375, new org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview()); + demos.put(381, new org.javademos.java15.jep381.SolarisSparcRemovalDemo()); + demos.put(383, new org.javademos.java15.jep383.ForeignMemoryAccessDemo()); + demos.put(384, new org.javademos.java15.jep384.RecordsSecondPreviewDemo()); + } + + private static void getJava16Demos(Map demos) { + demos.put(338, new org.javademos.java16.jep338.VectorAPIDemo()); + demos.put(347, new org.javademos.java16.jep347.Cpp14FeaturesDemo()); + demos.put(380, new org.javademos.java16.jep380.UnixDomainSocketsDemo()); + demos.put(386, new org.javademos.java16.jep386.AlpineLinuxPortDemo()); + demos.put(388, new org.javademos.java16.jep388.WindowsPortDemo()); + demos.put(389, new org.javademos.java16.jep389.ForeignLinkerDemo()); + demos.put(390, new org.javademos.java16.jep390.ValueBasedClassesDemo()); + demos.put(392, new org.javademos.java16.jep392.PackagingToolDemo()); + demos.put(393, new org.javademos.java16.jep393.ForeignMemoryAccessDemo()); + demos.put(394, new org.javademos.java16.jep394.InstanceofPatternMatchingDemo()); + demos.put(395, new org.javademos.java16.jep395.RecordDemo()); + demos.put(396, new org.javademos.java16.jep396.EncapsulationDemo()); + demos.put(397, new org.javademos.java16.jep397.SealedClassesDemo()); + } + + private static void getJava17Demos(Map demos) { + demos.put(306, new org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo()); + demos.put(382, new org.javademos.java17.jep382.MacosRenderingPipelineDemo()); + demos.put(391, new org.javademos.java17.jep391.MacOsAarch64PortDemo()); + demos.put(403, new org.javademos.java17.jep403.StronglyEncapsulateInternalsDemo()); + demos.put(406, new org.javademos.java17.jep406.PatternMatchingForSwitchPreview()); + demos.put(407, new org.javademos.java17.jep407.RemoveRmiActivationDemo()); + demos.put(409, new org.javademos.java17.jep409.SealedDemo()); + demos.put(410, new org.javademos.java17.jep410.RemoveAotJitDemo()); + demos.put(411, new org.javademos.java17.jep411.DeprecateSecurityManagerDemo()); + demos.put(412, new org.javademos.java17.jep412.ForeignFunctionMemoryDemo()); + demos.put(414, new org.javademos.java17.jep414.VectorAPIDemo()); + demos.put(415, new org.javademos.java17.jep415.ContextSpecificDeserializationFiltersDemo()); + } + + private static void getJava18Demos(Map demos) { + demos.put(400, new org.javademos.java18.jep400.DefaultUTF8Demo()); + demos.put(408, new org.javademos.java18.jep408.SimpleWebServerDemo()); + demos.put(413, new org.javademos.java18.jep413.CodeSnippetsInJavadoc()); + demos.put(416, new org.javademos.java18.jep416.CoreReflectionWithMethodHandles()); + demos.put(417, new org.javademos.java18.jep417.VectorAPIDemo()); + demos.put(418, new org.javademos.java18.jep418.InternetAddressResolutionSPI()); + demos.put(419, new org.javademos.java18.jep419.ForeignFunctionMemoryDemo()); + demos.put(420, new org.javademos.java18.jep420.PatternMatchingForSwitchSecondPreview()); + demos.put(421, new org.javademos.java18.jep421.DeprecateFinalization()); + } + + private static void getJava19Demos(Map demos) { + demos.put(405, new org.javademos.java19.jep405.RecordPatterns()); + demos.put(422, new org.javademos.java19.jep422.LinuxRiscVPort()); + demos.put(424, new org.javademos.java19.jep424.ForeignFunctionMemoryDemo()); + demos.put(425, new org.javademos.java19.jep425.VirtualThreads()); + demos.put(426, new org.javademos.java19.jep426.VectorAPIDemo()); + demos.put(427, new org.javademos.java19.jep427.PatternMatchingForSwitchThirdPreview()); + demos.put(428, new org.javademos.java19.jep428.StructuredConcurrencyDemo()); + } + + private static void getJava20Demos(Map demos) { + demos.put(429, new org.javademos.java20.jep429.ScopedValuesDemo()); + demos.put(432, new org.javademos.java20.jep432.RecordPatterns()); + demos.put(433, new org.javademos.java20.jep433.PatternMatchingForSwitchFourthPreview()); + demos.put(434, new org.javademos.java20.jep434.ForeignFunctionMemoryDemo()); + demos.put(436, new org.javademos.java20.jep436.VirtualThreads()); + demos.put(437, new org.javademos.java20.jep437.StructuredConcurrencyDemo()); + demos.put(438, new org.javademos.java20.jep438.VectorAPIDemo()); + } + + private static void getJava21Demos(Map demos) { + demos.put(430, new org.javademos.java21.jep430.StringTemplatesDemo()); + demos.put(431, new org.javademos.java21.jep431.SequencedCollectionsDemo()); + demos.put(439, new org.javademos.java21.jep439.GenerationalZGC21()); + demos.put(440, new org.javademos.java21.jep440.RecordPatternsDemo()); + demos.put(441, new org.javademos.java21.jep441.PatternMatchingForSwitchDemo()); + demos.put(442, new org.javademos.java21.jep442.ForeignFunctionMemoryDemo()); + demos.put(443, new org.javademos.java21.jep443.UnnamedPatternsAndVariablesPreview()); + demos.put(444, new org.javademos.java21.jep444.VirtualThreadsDemo()); + demos.put(445, new org.javademos.java21.jep445.UnnamedClassesDemo()); + demos.put(446, new org.javademos.java21.jep446.ScopedValuesDemo()); + demos.put(448, new org.javademos.java21.jep448.VectorAPIDemo()); + demos.put(449, new org.javademos.java21.jep449.DeprecateWindows32BitX86Demo()); + demos.put(451, new org.javademos.java21.jep451.DisallowDynamicAgentLoading()); + demos.put(452, new org.javademos.java21.jep452.KeyEncapsulationMechanismAPIDemo()); + demos.put(453, new org.javademos.java21.jep453.StructuredConcurrencyDemo()); + } + + private static void getJava22Demos(Map demos) { + demos.put(423, new org.javademos.java22.jep423.RegionPinningForG1()); + demos.put(447, new org.javademos.java22.jep447.StatementsBeforeSuper()); + demos.put(454, new org.javademos.java22.jep454.ForeignFunctionMemoryDemo()); + demos.put(456, new org.javademos.java22.jep456.UnnamedPatternsAndVariablesDemo()); + demos.put(457, new org.javademos.java22.jep457.ClassFileAPIDemo()); + demos.put(458, new org.javademos.java22.jep458.LaunchMultiFileSourceDemo()); + demos.put(459, new org.javademos.java22.jep459.StringTemplatesSecondPreview()); + demos.put(460, new org.javademos.java22.jep460.VectorAPIDemo()); + demos.put(461, new org.javademos.java22.jep461.StreamGatherersDemo()); + demos.put(462, new org.javademos.java22.jep462.StructuredConcurrencyDemo()); + demos.put(463, new org.javademos.java22.jep463.ImplicitlyDeclaredClassesDemo()); + demos.put(464, new org.javademos.java22.jep464.ScopedValuesDemo()); + } + + private static void getJava23Demos(Map demos) { + demos.put(455, new org.javademos.java23.jep455.PrimitiveTypesInPatterns()); + demos.put(466, new org.javademos.java23.jep466.ClassFileAPIDemo()); + demos.put(467, new org.javademos.java23.jep467.MarkdownComments()); + demos.put(469, new org.javademos.java23.jep469.VectorAPIDemo()); + demos.put(471, new org.javademos.java23.jep471.DeprecateMemoryAccessMethods()); + demos.put(473, new org.javademos.java23.jep473.StreamGatherersDemo()); + demos.put(474, new org.javademos.java23.jep474.GenerationalZGC23()); + demos.put(476, new org.javademos.java23.jep476.ModuleImportDeclarations()); + demos.put(477, new org.javademos.java23.jep477.ImplicitlyDeclaredClassesDemo()); + demos.put(480, new org.javademos.java23.jep480.StructuredConcurrency()); + demos.put(481, new org.javademos.java23.jep481.ScopedValuesDemo()); + demos.put(482, new org.javademos.java23.jep482.FlexibleConstructorBodies()); + } + + private static void getJava24Demos(Map demos) { + demos.put(404, new org.javademos.java24.jep404.GenerationalShenandoahExperimental()); + demos.put(450, new org.javademos.java24.jep450.CompactObjectHeadersExperimental()); + demos.put(472, new org.javademos.java24.jep472.PrepareToRestrictJNI()); + demos.put(475, new org.javademos.java24.jep475.LateBarrierExpansionG1()); + demos.put(478, new org.javademos.java24.jep478.KeyDerivationApiPreview()); + demos.put(479, new org.javademos.java24.jep479.RemovedWindows32BitX86Demo()); + demos.put(483, new org.javademos.java24.jep483.AotLoadingAndLinking()); + demos.put(484, new org.javademos.java24.jep484.ClassFileAPIDemo()); + demos.put(485, new org.javademos.java24.jep485.StreamGatherersDemo()); + demos.put(486, new org.javademos.java24.jep486.DisableSecurityManager()); + demos.put(487, new org.javademos.java24.jep487.ScopedValuesDemo()); + demos.put(488, new org.javademos.java24.jep488.PrimitiveTypesSecondPreview()); + demos.put(489, new org.javademos.java24.jep489.VectorAPIDemo()); + demos.put(490, new org.javademos.java24.jep490.ZgcNonGenerationalModeRemoval()); + demos.put(491, new org.javademos.java24.jep491.SynchronizedNoPinning()); + demos.put(493, new org.javademos.java24.jep493.LinkingRunTimeImages493()); + demos.put(494, new org.javademos.java24.jep494.ModuleImportSecondPreview()); + demos.put(495, new org.javademos.java24.jep495.SimpleSourceFilesDemo()); + demos.put(496, new org.javademos.java24.jep496.QuantumResistantModuleLatticeBasedKeyEncapsulation()); + demos.put(497, new org.javademos.java24.jep497.QuantumResistantModuleLatticeBasedDigitalSignature()); + demos.put(498, new org.javademos.java24.jep498.MemoryAccessMethods()); + demos.put(499, new org.javademos.java24.jep499.StructuredConcurrencyDemo()); + demos.put(501, new org.javademos.java24.jep501.Deprecate32BitX86Demo()); + } + + private static void getJava25Demos(Map demos) { + demos.put(470, new org.javademos.java25.jep470.PemEncodingsDemo()); + demos.put(502, new org.javademos.java25.jep502.StableValuesDemo()); + demos.put(503, new org.javademos.java25.jep503.Remove32BitX86Demo()); + demos.put(505, new org.javademos.java25.jep505.StructuredConcurrencyDemo()); + demos.put(506, new org.javademos.java25.jep506.ScopedValuesDemo()); + demos.put(507, new org.javademos.java25.jep507.PrimitiveTypesDemo()); + demos.put(508, new org.javademos.java25.jep508.VectorAPIDemo()); + demos.put(509, new org.javademos.java25.jep509.CpuTimeProfilingDemo()); + demos.put(510, new org.javademos.java25.jep510.KeyDerivationFunctionDemo()); + demos.put(511, new org.javademos.java25.jep511.ModuleImportDeclarationsDemo()); + demos.put(512, new org.javademos.java25.jep512.CompactSourceFilesDemo()); + demos.put(513, new org.javademos.java25.jep513.FlexibleConstructorBodiesDemo()); + demos.put(514, new org.javademos.java25.jep514.AheadOfTimeCLIDemo()); + demos.put(515, new org.javademos.java25.jep515.AheadOfTimeMethodProfilingDemo()); + demos.put(518, new org.javademos.java25.jep518.JFRCooperativeSamplingDemo()); + demos.put(519, new org.javademos.java25.jep519.CompactObjectHeaderDemo()); + demos.put(520, new org.javademos.java25.jep520.Jep520MethodTracingDemo()); + demos.put(521, new org.javademos.java25.jep521.GenerationalShenandoahDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java11.java b/src/main/java/org/javademos/init/Java11.java deleted file mode 100644 index e775f197..00000000 --- a/src/main/java/org/javademos/init/Java11.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java11.http.HttpDemo; -import org.javademos.java11.j9.J9Demo; -import org.javademos.java11.string11.String11Demo; -import org.javademos.java11.var.VarDemo; - -import java.util.ArrayList; - -public class Java11 { - - /** - * @return list of demos available for JDK 11 - */ - public static ArrayList getDemos() { - var java11DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - java11DemoPool.add(new J9Demo()); - java11DemoPool.add(new VarDemo()); - java11DemoPool.add(new HttpDemo()); - java11DemoPool.add(new String11Demo()); - - return java11DemoPool; - } - -} diff --git a/src/main/java/org/javademos/init/Java12.java b/src/main/java/org/javademos/init/Java12.java deleted file mode 100644 index e280c9b1..00000000 --- a/src/main/java/org/javademos/init/Java12.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java12.extras.String12Demo; - -import java.util.ArrayList; - -public class Java12 { - - /** - * @return list of demos available for JDK 12 - */ - public static ArrayList getDemos() { - var java12DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // extra features not related to any JEP - java12DemoPool.add(new String12Demo()); - // JEP xxx - // java12DemoPool.add(new xyz()); - - return java12DemoPool; - } - -} diff --git a/src/main/java/org/javademos/init/Java13.java b/src/main/java/org/javademos/init/Java13.java deleted file mode 100644 index 4362b02d..00000000 --- a/src/main/java/org/javademos/init/Java13.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; - -import java.util.ArrayList; - -public class Java13 { - - /** - * @return list of demos available for JDK 13 - */ - public static ArrayList getDemos() { - var java13DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // JEP xxx - // java13DemoPool.add(new xyz()); - - return java13DemoPool; - } - -} diff --git a/src/main/java/org/javademos/init/Java14.java b/src/main/java/org/javademos/init/Java14.java deleted file mode 100644 index ce756c81..00000000 --- a/src/main/java/org/javademos/init/Java14.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java14.jep305.InstanceofPatternMatchingPreview; -import org.javademos.java14.jep359.RecordsPreviewDemo; -import org.javademos.java14.jep370.ForeignMemoryAccessDemo; - -public class Java14 { - - /** - * @return list of demos available for JDK 14 - */ - public static ArrayList getDemos() { - var java14DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - //JEP 305 - java14DemoPool.add(new InstanceofPatternMatchingPreview()); - // JEP 359 - java14DemoPool.add(new RecordsPreviewDemo()); - // JEP 370 - java14DemoPool.add(new ForeignMemoryAccessDemo()); - - return java14DemoPool; - } -} diff --git a/src/main/java/org/javademos/init/Java15.java b/src/main/java/org/javademos/init/Java15.java deleted file mode 100644 index c455b526..00000000 --- a/src/main/java/org/javademos/init/Java15.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java15.jep339.EdDSADemo; -import org.javademos.java15.jep360.SealedClassesDemo; -import org.javademos.java15.jep371.HiddenClassesDemo; -import org.javademos.java15.jep372.NashornRemovalDemo; -import org.javademos.java15.jep373.DatagramSocketDemo15; -import org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview; -import org.javademos.java15.jep377.ZGarbageCollectorDemo; -import org.javademos.java15.jep381.SolarisSparcRemovalDemo; -import org.javademos.java15.jep383.ForeignMemoryAccessDemo; -import org.javademos.java15.jep384.RecordsSecondPreviewDemo; -public class Java15 { - - /** - * @return list of demos available for JDK 15 - */ - public static ArrayList getDemos() { - var java15DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // JEP 339 - java15DemoPool.add(new EdDSADemo()); - // JEP 360 - java15DemoPool.add(new SealedClassesDemo()); - // JEP 371 - java15DemoPool.add(new HiddenClassesDemo()); - // JEP 372 - java15DemoPool.add(new NashornRemovalDemo()); - // JEP 373 - java15DemoPool.add(new DatagramSocketDemo15()); - // JEP 375 - java15DemoPool.add(new InstanceofPatternMatchingSecondPreview()); - // JEP 377 - java15DemoPool.add(new ZGarbageCollectorDemo()); - // JEP 381 - java15DemoPool.add(new SolarisSparcRemovalDemo()); - // JEP 383 - java15DemoPool.add(new ForeignMemoryAccessDemo()); - // JEP 384 - java15DemoPool.add(new RecordsSecondPreviewDemo()); - - return java15DemoPool; - } -} diff --git a/src/main/java/org/javademos/init/Java16.java b/src/main/java/org/javademos/init/Java16.java deleted file mode 100644 index df08e22a..00000000 --- a/src/main/java/org/javademos/init/Java16.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java16.extras.J16Demo; -import org.javademos.java16.jep338.VectorAPIDemo; -import org.javademos.java16.jep347.Cpp14FeaturesDemo; -import org.javademos.java16.jep380.UnixDomainSocketsDemo; -import org.javademos.java16.jep386.AlpineLinuxPortDemo; -import org.javademos.java16.jep388.WindowsPortDemo; -import org.javademos.java16.jep389.ForeignLinkerDemo; -import org.javademos.java16.jep390.ValueBasedClassesDemo; -import org.javademos.java16.jep392.PackagingToolDemo; -import org.javademos.java16.jep393.ForeignMemoryAccessDemo; -import org.javademos.java16.jep394.InstanceofPatternMatchingDemo; -import org.javademos.java16.jep395.RecordDemo; -import org.javademos.java16.jep396.EncapsulationDemo; -import org.javademos.java16.jep397.SealedClassesDemo; - -public class Java16 { - - /** - * @return list of demos available for JDK 16 - */ - public static ArrayList getDemos() { - var java16DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // extra features not related to any JEP - java16DemoPool.add(new J16Demo()); - // JEP 338 - java16DemoPool.add(new VectorAPIDemo()); - // JEP 347 - java16DemoPool.add(new Cpp14FeaturesDemo()); - // JEP 380 - java16DemoPool.add(new UnixDomainSocketsDemo()); - // JEP 386 - java16DemoPool.add(new AlpineLinuxPortDemo()); - // JEP 388 - java16DemoPool.add(new WindowsPortDemo()); - // JEP 389 - java16DemoPool.add(new ForeignLinkerDemo()); - // JEP 390 - java16DemoPool.add(new ValueBasedClassesDemo()); - // JEP 392 - java16DemoPool.add(new PackagingToolDemo()); - // JEP 393 - java16DemoPool.add(new ForeignMemoryAccessDemo()); - // JEP 394 - java16DemoPool.add(new InstanceofPatternMatchingDemo()); - // JEP 395 - java16DemoPool.add(new RecordDemo()); - // JEP 396 - java16DemoPool.add(new EncapsulationDemo()); - // JEP 397 - java16DemoPool.add(new SealedClassesDemo()); - - return java16DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java17.java b/src/main/java/org/javademos/init/Java17.java deleted file mode 100644 index 651fe97c..00000000 --- a/src/main/java/org/javademos/init/Java17.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java17.extras.J17DeprecatedDemo; -import org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo; -import org.javademos.java17.jep356.RandomGenerators17; -import org.javademos.java17.jep382.MacosRenderingPipelineDemo; -import org.javademos.java17.jep391.MacOsAarch64PortDemo; -import org.javademos.java17.jep398.DeprecateAppletApiForRemovalDemo; -import org.javademos.java17.jep403.StronglyEncapsulateInternalsDemo; -import org.javademos.java17.jep406.PatternMatchingForSwitchPreview; -import org.javademos.java17.jep407.RemoveRmiActivationDemo; -import org.javademos.java17.jep409.SealedDemo; -import org.javademos.java17.jep410.RemoveAotJitDemo; -import org.javademos.java17.jep411.DeprecateSecurityManagerDemo; -import org.javademos.java17.jep412.ForeignFunctionMemoryDemo; -import org.javademos.java17.jep414.VectorAPIDemo; -import org.javademos.java17.jep415.ContextSpecificDeserializationFiltersDemo; -import org.javademos.java17.newswitch.SwitchDemo; -import org.javademos.java17.nullpointer.NullPointerDemo; -import org.javademos.java17.textblock.TextBlockDemo; - -public class Java17 { - - /** - * @return list of demos available for JDK 17 - */ - public static ArrayList getDemos() { - var java17DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // extra features not related to any JEP - java17DemoPool.add(new J17DeprecatedDemo()); - // JEP 306 - java17DemoPool.add(new RestoreAlwaysStrictFloatingPointSemanticsDemo()); - // JEP 356 - java17DemoPool.add(new RandomGenerators17()); - // JEP 382 - java17DemoPool.add(new MacosRenderingPipelineDemo()); - // JEP 391 - java17DemoPool.add(new MacOsAarch64PortDemo()); - // JEP 398 - java17DemoPool.add(new DeprecateAppletApiForRemovalDemo()); - // JEP 403 - java17DemoPool.add(new StronglyEncapsulateInternalsDemo()); - // JEP 406 - java17DemoPool.add(new PatternMatchingForSwitchPreview()); - // JEP 407 - java17DemoPool.add(new RemoveRmiActivationDemo()); - // JEP 409 - java17DemoPool.add(new SealedDemo()); - // JEP 410 - java17DemoPool.add(new RemoveAotJitDemo()); - // JEP 411 - java17DemoPool.add(new DeprecateSecurityManagerDemo()); - // JEP 412 - java17DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 414 - java17DemoPool.add(new VectorAPIDemo()); - // JEP 415 - java17DemoPool.add(new ContextSpecificDeserializationFiltersDemo()); - - // older demos created with "non-JEP" style - java17DemoPool.add(new SwitchDemo()); - java17DemoPool.add(new NullPointerDemo()); - java17DemoPool.add(new TextBlockDemo()); - - return java17DemoPool; - } - -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java18.java b/src/main/java/org/javademos/init/Java18.java deleted file mode 100644 index bc1cd321..00000000 --- a/src/main/java/org/javademos/init/Java18.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java18.jep400.DefaultUTF8Demo; -import org.javademos.java18.jep408.SimpleWebServerDemo; -import org.javademos.java18.jep413.CodeSnippetsInJavadoc; -import org.javademos.java18.jep416.CoreReflectionWithMethodHandles; -import org.javademos.java18.jep417.VectorAPIDemo; -import org.javademos.java18.jep418.InternetAddressResolutionSPI; -import org.javademos.java18.jep419.ForeignFunctionMemoryDemo; -import org.javademos.java18.jep420.PatternMatchingForSwitchSecondPreview; -import org.javademos.java18.jep421.DeprecateFinalization; - -import java.util.ArrayList; - -public class Java18 { - - /** - * @return list of demos available for JDK 18 - */ - public static ArrayList getDemos() { - var java18DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // JEP 400 - java18DemoPool.add(new DefaultUTF8Demo()); - // JEP 408 - java18DemoPool.add(new SimpleWebServerDemo()); - // JEP 413 - java18DemoPool.add(new CodeSnippetsInJavadoc()); - // JEP 416 - java18DemoPool.add(new CoreReflectionWithMethodHandles()); - // JEP 417 - java18DemoPool.add(new VectorAPIDemo()); - // JEP 418 - java18DemoPool.add(new InternetAddressResolutionSPI()); - // JEP 419 - java18DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 420 - java18DemoPool.add(new PatternMatchingForSwitchSecondPreview()); - // JEP 421 - java18DemoPool.add(new DeprecateFinalization()); - - return java18DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java19.java b/src/main/java/org/javademos/init/Java19.java deleted file mode 100644 index a2b4af52..00000000 --- a/src/main/java/org/javademos/init/Java19.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java19.jep405.RecordPatterns; -import org.javademos.java19.jep422.LinuxRiscVPort; -import org.javademos.java19.jep424.ForeignFunctionMemoryDemo; -import org.javademos.java19.jep425.VirtualThreads; -import org.javademos.java19.jep426.VectorAPIDemo; -import org.javademos.java19.jep427.PatternMatchingForSwitchThirdPreview; -import org.javademos.java19.jep428.StructuredConcurrencyDemo; - -public class Java19 { - - /** - * @return list of demos available for JDK 19 - */ - public static ArrayList getDemos() { - var java19DemoPool = new ArrayList(); - - // JEP 405 - java19DemoPool.add(new RecordPatterns()); - // JEP 422 - java19DemoPool.add(new LinuxRiscVPort()); - // JEP 424 - java19DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 425 - java19DemoPool.add(new VirtualThreads()); - // JEP 426 - java19DemoPool.add(new VectorAPIDemo()); - // JEP 427 - java19DemoPool.add(new PatternMatchingForSwitchThirdPreview()); - // JEP 428 - java19DemoPool.add(new StructuredConcurrencyDemo()); - - return java19DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java20.java b/src/main/java/org/javademos/init/Java20.java deleted file mode 100644 index ed66e2c6..00000000 --- a/src/main/java/org/javademos/init/Java20.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java20.jep432.RecordPatterns; -import org.javademos.java20.jep429.ScopedValuesDemo; -import org.javademos.java20.jep433.PatternMatchingForSwitchFourthPreview; -import org.javademos.java20.jep434.ForeignFunctionMemoryDemo; -import org.javademos.java20.jep436.VirtualThreads; -import org.javademos.java20.jep438.VectorAPIDemo; -import org.javademos.java20.jep437.StructuredConcurrencyDemo; - -public class Java20 { - - /** - * @return list of demos available for JDK 20 - */ - public static ArrayList getDemos() { - var java20DemoPool = new ArrayList(); - - // JEP 429 - java20DemoPool.add(new ScopedValuesDemo()); - // JEP 432 - java20DemoPool.add(new RecordPatterns()); - // JEP 433 - java20DemoPool.add(new PatternMatchingForSwitchFourthPreview()); - // JEP 434 - java20DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 436 - java20DemoPool.add(new VirtualThreads()); - // JEP 437 - java20DemoPool.add(new StructuredConcurrencyDemo()); - // JEP 438 - java20DemoPool.add(new VectorAPIDemo()); - - return java20DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java21.java b/src/main/java/org/javademos/init/Java21.java deleted file mode 100644 index d65c5217..00000000 --- a/src/main/java/org/javademos/init/Java21.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java21.extras.J21Demo; -import org.javademos.java21.jep430.StringTemplatesDemo; -import org.javademos.java21.jep431.SequencedCollectionsDemo; -import org.javademos.java21.jep439.GenerationalZGC21; -import org.javademos.java21.jep440.RecordPatternsDemo; -import org.javademos.java21.jep441.PatternMatchingForSwitchDemo; -import org.javademos.java21.jep442.ForeignFunctionMemoryDemo; -import org.javademos.java21.jep443.UnnamedPatternsAndVariablesPreview; -import org.javademos.java21.jep444.VirtualThreadsDemo; -import org.javademos.java21.jep445.UnnamedClassesDemo; -import org.javademos.java21.jep446.ScopedValuesDemo; -import org.javademos.java21.jep448.VectorAPIDemo; -import org.javademos.java21.jep449.DeprecateWindows32BitX86Demo; -import org.javademos.java21.jep451.DisallowDynamicAgentLoading; -import org.javademos.java21.jep452.KeyEncapsulationMechanismAPIDemo; -import org.javademos.java21.jep453.StructuredConcurrencyDemo; - -import java.util.ArrayList; - -public class Java21 { - - /** - * @return list of demos available for JDK 21 - */ - public static ArrayList getDemos() { - var java21DemoPool = new ArrayList(); - - // extra features not related to any JEP - java21DemoPool.add(new J21Demo()); - // JEP 430 - java21DemoPool.add(new StringTemplatesDemo()); - // JEP 431 - java21DemoPool.add(new SequencedCollectionsDemo()); - // JEP 439 - java21DemoPool.add(new GenerationalZGC21()); - // JEP 440 - java21DemoPool.add(new RecordPatternsDemo()); - // JEP 441 - java21DemoPool.add(new PatternMatchingForSwitchDemo()); - // JEP 442 - java21DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 443 - java21DemoPool.add(new UnnamedPatternsAndVariablesPreview()); - // JEP 444 - java21DemoPool.add(new VirtualThreadsDemo()); - // JEP 445 - java21DemoPool.add(new UnnamedClassesDemo()); - // JEP 446 - java21DemoPool.add(new ScopedValuesDemo()); - // JEP 448 - java21DemoPool.add(new VectorAPIDemo()); - // JEP 449 - java21DemoPool.add(new DeprecateWindows32BitX86Demo()); - // JEP 451 - java21DemoPool.add(new DisallowDynamicAgentLoading()); - // JEP 452 - java21DemoPool.add(new KeyEncapsulationMechanismAPIDemo()); - // JEP 453 - java21DemoPool.add(new StructuredConcurrencyDemo()); - - return java21DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java22.java b/src/main/java/org/javademos/init/Java22.java deleted file mode 100644 index 20016ee5..00000000 --- a/src/main/java/org/javademos/init/Java22.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java22.jep423.RegionPinningForG1; -import org.javademos.java22.jep447.StatementsBeforeSuper; -import org.javademos.java22.jep454.ForeignFunctionMemoryDemo; -import org.javademos.java22.jep456.UnnamedPatternsAndVariablesDemo; -import org.javademos.java22.jep457.ClassFileAPIDemo; -import org.javademos.java22.jep458.LaunchMultiFileSourceDemo; -import org.javademos.java22.jep459.StringTemplatesSecondPreview; -import org.javademos.java22.jep460.VectorAPIDemo; -import org.javademos.java22.jep461.StreamGatherersDemo; -import org.javademos.java22.jep462.StructuredConcurrencyDemo; -import org.javademos.java22.jep463.ImplicitlyDeclaredClassesDemo; -import org.javademos.java22.jep464.ScopedValuesDemo; - -import java.util.ArrayList; - -public class Java22 { - - /** - * @return list of demos available for JDK 22 - */ - public static ArrayList getDemos() { - var java22DemoPool = new ArrayList(); - - // JEP 423 - java22DemoPool.add(new RegionPinningForG1()); - // JEP 447 - java22DemoPool.add(new StatementsBeforeSuper()); - // JEP 454 - java22DemoPool.add(new ForeignFunctionMemoryDemo()); - // JEP 456 - java22DemoPool.add(new UnnamedPatternsAndVariablesDemo()); - // JEP 457 - java22DemoPool.add(new ClassFileAPIDemo()); - // JEP 458 - java22DemoPool.add(new LaunchMultiFileSourceDemo()); - // JEP 459 - java22DemoPool.add(new StringTemplatesSecondPreview()); - // JEP 460 - java22DemoPool.add(new VectorAPIDemo()); - // JEP 461 - java22DemoPool.add(new StreamGatherersDemo()); - // JEP 462 - java22DemoPool.add(new StructuredConcurrencyDemo()); - // JEP 463 - java22DemoPool.add(new ImplicitlyDeclaredClassesDemo()); - // JEP 464 - java22DemoPool.add(new ScopedValuesDemo()); - - return java22DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java23.java b/src/main/java/org/javademos/init/Java23.java deleted file mode 100644 index c7c3055a..00000000 --- a/src/main/java/org/javademos/init/Java23.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java23.jep455.PrimitiveTypesInPatterns; -import org.javademos.java23.jep462.StructuredConcurrencyDemo; -import org.javademos.java23.jep466.ClassFileAPIDemo; -import org.javademos.java23.jep467.MarkdownComments; -import org.javademos.java23.jep469.VectorAPIDemo; -import org.javademos.java23.jep471.DeprecateMemoryAccessMethods; -import org.javademos.java23.jep473.StreamGatherersDemo; -import org.javademos.java23.jep474.GenerationalZGC23; -import org.javademos.java23.jep476.ModuleImportDeclarations; -import org.javademos.java23.jep477.ImplicitlyDeclaredClassesDemo; -import org.javademos.java23.jep480.StructuredConcurrency; -import org.javademos.java23.jep481.ScopedValuesDemo; -import org.javademos.java23.jep482.FlexibleConstructorBodies; - -import java.util.ArrayList; - -public class Java23 { - - /// @return list of demos available for JDK 23 - public static ArrayList getDemos() { - var java23DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // JEP 455 - java23DemoPool.add(new PrimitiveTypesInPatterns()); - // JEP 462 - java23DemoPool.add(new StructuredConcurrencyDemo()); - // JEP 466 - java23DemoPool.add(new ClassFileAPIDemo()); - // JEP 467 - java23DemoPool.add(new MarkdownComments()); - // JEP 469 - java23DemoPool.add(new VectorAPIDemo()); - // JEP 471 - java23DemoPool.add(new DeprecateMemoryAccessMethods()); - // JEP 473 - java23DemoPool.add(new StreamGatherersDemo()); - // JEP 474 - java23DemoPool.add(new GenerationalZGC23()); - // JEP 476 - java23DemoPool.add(new ModuleImportDeclarations()); - // JEP 477 - java23DemoPool.add(new ImplicitlyDeclaredClassesDemo()); - // JEP 480 - java23DemoPool.add(new StructuredConcurrency()); - // JEP 481 - java23DemoPool.add(new ScopedValuesDemo()); - // JEP 482 - java23DemoPool.add(new FlexibleConstructorBodies()); - - return java23DemoPool; - } - -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java24.java b/src/main/java/org/javademos/init/Java24.java deleted file mode 100644 index ad10203e..00000000 --- a/src/main/java/org/javademos/init/Java24.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.javademos.init; - -import java.util.ArrayList; - -import org.javademos.commons.IDemo; -import org.javademos.java24.jep404.GenerationalShenandoahExperimental; -import org.javademos.java24.jep450.CompactObjectHeadersExperimental; -import org.javademos.java24.jep472.PrepareToRestrictJNI; -import org.javademos.java24.jep475.LateBarrierExpansionG1; -import org.javademos.java24.jep478.KeyDerivationApiPreview; -import org.javademos.java24.jep479.RemovedWindows32BitX86Demo; -import org.javademos.java24.jep483.AotLoadingAndLinking; -import org.javademos.java24.jep484.ClassFileAPIDemo; -import org.javademos.java24.jep485.StreamGatherersDemo; -import org.javademos.java24.jep486.DisableSecurityManager; -import org.javademos.java24.jep487.ScopedValuesDemo; -import org.javademos.java24.jep488.PrimitiveTypesSecondPreview; -import org.javademos.java24.jep489.VectorAPIDemo; -import org.javademos.java24.jep490.ZgcNonGenerationalModeRemoval; -import org.javademos.java24.jep491.SynchronizedNoPinning; -import org.javademos.java24.jep493.LinkingRunTimeImages493; -import org.javademos.java24.jep494.ModuleImportSecondPreview; -import org.javademos.java24.jep495.SimpleSourceFilesDemo; -import org.javademos.java24.jep496.QuantumResistantModuleLatticeBasedKeyEncapsulation; -import org.javademos.java24.jep497.QuantumResistantModuleLatticeBasedDigitalSignature; -import org.javademos.java24.jep498.MemoryAccessMethods; -import org.javademos.java24.jep499.StructuredConcurrencyDemo; -import org.javademos.java24.jep501.Deprecate32BitX86Demo; - -public class Java24 { - - /** - * @return list of demos available for JDK 24 - */ - public static ArrayList getDemos() { - var java24DemoPool = new ArrayList(); - - // JEP 404 - java24DemoPool.add(new GenerationalShenandoahExperimental()); - // JEP 450 - java24DemoPool.add(new CompactObjectHeadersExperimental()); - // JEP 472 - java24DemoPool.add(new PrepareToRestrictJNI()); - // JEP 475 - java24DemoPool.add(new LateBarrierExpansionG1()); - // JEP 478 - java24DemoPool.add(new KeyDerivationApiPreview()); - // JEP 479 - java24DemoPool.add(new RemovedWindows32BitX86Demo()); - // JEP 483 - java24DemoPool.add(new AotLoadingAndLinking()); - // JEP 484 - java24DemoPool.add(new ClassFileAPIDemo()); - // JEP 485 - java24DemoPool.add(new StreamGatherersDemo()); - // JEP 486 - java24DemoPool.add(new DisableSecurityManager()); - // JEP 487 - java24DemoPool.add(new ScopedValuesDemo()); - // JEP 488 - java24DemoPool.add(new PrimitiveTypesSecondPreview()); - // JEP 489 - java24DemoPool.add(new VectorAPIDemo()); - // JEP 490 - java24DemoPool.add(new ZgcNonGenerationalModeRemoval()); - // JEP 491 - java24DemoPool.add(new SynchronizedNoPinning()); - // JEP 493 - java24DemoPool.add(new LinkingRunTimeImages493()); - // JEP 494 - java24DemoPool.add(new ModuleImportSecondPreview()); - // JEP 495 - java24DemoPool.add(new SimpleSourceFilesDemo()); - // JEP 496 - java24DemoPool.add(new QuantumResistantModuleLatticeBasedKeyEncapsulation()); - // JEP 497 - java24DemoPool.add(new QuantumResistantModuleLatticeBasedDigitalSignature()); - // JEP 498 - java24DemoPool.add(new MemoryAccessMethods()); - // JEP 499 - java24DemoPool.add(new StructuredConcurrencyDemo()); - // JEP 501 - java24DemoPool.add(new Deprecate32BitX86Demo()); - - return java24DemoPool; - } -} \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java25.java b/src/main/java/org/javademos/init/Java25.java deleted file mode 100644 index f841fc1b..00000000 --- a/src/main/java/org/javademos/init/Java25.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; -import org.javademos.java25.jep470.PemEncodingsDemo; -import org.javademos.java25.jep502.StableValuesDemo; -import org.javademos.java25.jep503.Remove32BitX86Demo; -import org.javademos.java25.jep505.StructuredConcurrencyDemo; -import org.javademos.java25.jep506.ScopedValuesDemo; -import org.javademos.java25.jep507.PrimitiveTypesDemo; -import org.javademos.java25.jep508.VectorAPIDemo; -import org.javademos.java25.jep509.CpuTimeProfilingDemo; -import org.javademos.java25.jep510.KeyDerivationFunctionDemo; -import org.javademos.java25.jep511.ModuleImportDeclarationsDemo; -import org.javademos.java25.jep512.CompactSourceFilesDemo; -import org.javademos.java25.jep513.FlexibleConstructorBodiesDemo; -import org.javademos.java25.jep514.AheadOfTimeCLIDemo; -import org.javademos.java25.jep515.AheadOfTimeMethodProfilingDemo; -import org.javademos.java25.jep518.JFRCooperativeSamplingDemo; -import org.javademos.java25.jep519.CompactObjectHeaderDemo; -import org.javademos.java25.jep520.Jep520MethodTracingDemo; -import org.javademos.java25.jep521.GenerationalShenandoahDemo; - -import java.util.ArrayList; - -public class Java25 { - - /** - * @return list of demos available for JDK 25 - */ - public static ArrayList getDemos() { - var java25DemoPool = new ArrayList(); - - // feel free to comment out demos you are not interested in right now - - // JEP 470 - java25DemoPool.add(new PemEncodingsDemo()); - // JEP 502 - java25DemoPool.add(new StableValuesDemo()); - // JEP 503 - java25DemoPool.add(new Remove32BitX86Demo()); - // JEP 505 - java25DemoPool.add(new StructuredConcurrencyDemo()); - // JEP 506 - java25DemoPool.add(new ScopedValuesDemo()); - // JEP 507 - java25DemoPool.add(new PrimitiveTypesDemo()); - // JEP 508 - java25DemoPool.add(new VectorAPIDemo()); - // JEP 509 - java25DemoPool.add(new CpuTimeProfilingDemo()); - // JEP 510 - java25DemoPool.add(new KeyDerivationFunctionDemo()); - // JEP 511 - java25DemoPool.add(new ModuleImportDeclarationsDemo()); - // JEP 512 - java25DemoPool.add(new CompactSourceFilesDemo()); - // JEP 513 - java25DemoPool.add(new FlexibleConstructorBodiesDemo()); - // JEP 514 - java25DemoPool.add(new AheadOfTimeCLIDemo()); - // JEP 515 - java25DemoPool.add(new AheadOfTimeMethodProfilingDemo()); - // JEP 518 - java25DemoPool.add(new JFRCooperativeSamplingDemo()); - // JEP 519 - java25DemoPool.add(new CompactObjectHeaderDemo()); - // JEP 520 - java25DemoPool.add(new Jep520MethodTracingDemo()); - //JEP 521 - java25DemoPool.add(new GenerationalShenandoahDemo()); - - return java25DemoPool; - } -} From 936ddd9e97e017794a79dad6f1bb1fc4976b3977 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 14:21:15 +0100 Subject: [PATCH 2/8] refactor(java12): align package name with naming convention --- .../java/org/javademos/java12/{extras => }/String12Demo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/org/javademos/java12/{extras => }/String12Demo.java (98%) diff --git a/src/main/java/org/javademos/java12/extras/String12Demo.java b/src/main/java/org/javademos/java12/String12Demo.java similarity index 98% rename from src/main/java/org/javademos/java12/extras/String12Demo.java rename to src/main/java/org/javademos/java12/String12Demo.java index 7c04583e..85acb773 100644 --- a/src/main/java/org/javademos/java12/extras/String12Demo.java +++ b/src/main/java/org/javademos/java12/String12Demo.java @@ -1,4 +1,4 @@ -package org.javademos.java12.extras; +package org.javademos.java12; import org.javademos.commons.IDemo; From 64fcc62d6d9ca51f6ca05ff95e158fc9d7525f85 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 18:56:00 +0100 Subject: [PATCH 3/8] merge: add 4 new demos into updated demo list --- src/main/java/org/javademos/Main.java | 38 +++-- src/main/java/org/javademos/init/JEPInfo.java | 58 ++++--- ...ketDemo15.java => DatagramSocketDemo.java} | 2 +- ...ators17.java => RandomGeneratorsDemo.java} | 2 +- .../org/javademos/util/ArgsFilterUtil.java | 158 ++++++++++++++++++ 5 files changed, 216 insertions(+), 42 deletions(-) rename src/main/java/org/javademos/java15/jep373/{DatagramSocketDemo15.java => DatagramSocketDemo.java} (95%) rename src/main/java/org/javademos/java17/jep356/{RandomGenerators17.java => RandomGeneratorsDemo.java} (96%) create mode 100644 src/main/java/org/javademos/util/ArgsFilterUtil.java diff --git a/src/main/java/org/javademos/Main.java b/src/main/java/org/javademos/Main.java index 773021d1..d2073b89 100644 --- a/src/main/java/org/javademos/Main.java +++ b/src/main/java/org/javademos/Main.java @@ -1,15 +1,27 @@ package org.javademos; import org.javademos.commons.IDemo; +import org.javademos.util.ArgsFilterUtil; + +import java.util.Comparator; +import java.util.Map; import static org.javademos.init.JEPInfo.JEP_DEMO; +import static org.javademos.init.JEPInfo.JEP_DATA; /** * This application helps to show some new features from Java 11 to Java 21. - * The 'demoPool' array consists of simple IDemo interface implementations. + * The 'JEP_DATA' map consists of simple IDemo interface implementations. * Code logic is being implemented inside .demo() methods. - * * @see IDemo + * + * Main method supports filtering demos based on command line arguments. + * Supported arguments and examples: + * --skip-links: Skip demos that are link-only to other JEP + * --code-only: Only run demos that contain code + * --jdk=17,25: Only run demos from specific JDK versions + * --only=382,409: Only run specific JEP numbers + * @see ArgsFilterUtil * * You can try switching the compile/build settings back to Java 1.8 to see * that the most of the stuff used here cannot be compiled and run under old @@ -18,14 +30,6 @@ * @author alois.seckar@gmail.com */ public class Main { - - /** - * Simple main method. - * No complex logic - all available demo implementations are being put - * inside a list, and then being executed one by one. - * - * @param args not supported (ignored) in this application - */ public static void main(String[] args) { // https://stackoverflow.com/a/19165338/3204544 @@ -36,9 +40,17 @@ public static void main(String[] args) { System.out.println(System.getProperty("java.version")); System.out.println(System.getProperty("java.specification.vendor")); - JEP_DEMO.values().forEach(IDemo::demo); + var filteredJepData = ArgsFilterUtil.getFilteredJepData(args, JEP_DATA); - // run method .demo() on each entry to see the output - JEP_DEMO.values().forEach(IDemo::demo); + // Run only filtered demos, sorted by JDK version and JEP number + JEP_DEMO.entrySet().stream() + .filter(e -> filteredJepData.containsKey(e.getKey())) + .sorted( + Comparator + .comparingInt((Map.Entry e) -> JEP_DATA.get(e.getKey()).jdk()) + .thenComparingInt(Map.Entry::getKey) + ) + .map(Map.Entry::getValue) + .forEach(IDemo::demo); } } diff --git a/src/main/java/org/javademos/init/JEPInfo.java b/src/main/java/org/javademos/init/JEPInfo.java index ec69deee..59085483 100644 --- a/src/main/java/org/javademos/init/JEPInfo.java +++ b/src/main/java/org/javademos/init/JEPInfo.java @@ -8,42 +8,42 @@ import java.text.MessageFormat; import java.util.*; -public class JEPInfo { + public class JEPInfo { - private JEPInfo() {} + private JEPInfo() {} - public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} + public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} - public static final Map JEP_DATA = getAllInfos(); - public static final Map JEP_DEMO = getAllDemos(); + public static final Map JEP_DATA = getAllInfos(); + public static final Map JEP_DEMO = getAllDemos(); - private static Map getAllInfos() { - var jeps = new HashMap(); + private static Map getAllInfos() { + var jeps = new HashMap(); - var sources = Arrays.asList(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); - for (Integer src : sources) { - var srcFile = MessageFormat.format("/JDK{0}Info.json", src); - try (InputStream inputStream = JEPInfo.class.getResourceAsStream(srcFile)) { - if (inputStream != null) { - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - var JEPListType = new TypeToken>() { - }.getType(); - var gson = new Gson(); - List data = gson.fromJson(br, JEPListType); - data.forEach(d -> jeps.put(d.jep(), d)); - } catch (IOException e) { - e.printStackTrace(System.out); + var sources = Arrays.asList(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); + for (Integer src : sources) { + var srcFile = MessageFormat.format("/JDK{0}Info.json", src); + try (InputStream inputStream = org.javademos.init.JEPInfo.class.getResourceAsStream(srcFile)) { + if (inputStream != null) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { + var JEPListType = new TypeToken>() { + }.getType(); + var gson = new Gson(); + List data = gson.fromJson(br, JEPListType); + data.forEach(d -> jeps.put(d.jep(), d)); + } catch (IOException e) { + e.printStackTrace(System.out); + } + } else { + System.err.println(MessageFormat.format("InputStream {0} is null", src)); } - } else { - System.err.println(MessageFormat.format("InputStream {0} is null", src)); + } catch (IOException e) { + e.printStackTrace(System.out); } - } catch (IOException e) { - e.printStackTrace(System.out); } - } - return jeps; - } + return jeps; + } private static Map getAllDemos() { var demos = new HashMap(); @@ -90,9 +90,11 @@ private static void getJava14Demos(Map demos) { } private static void getJava15Demos(Map demos) { + demos.put(339, new org.javademos.java15.jep339.EdDSADemo()); demos.put(360, new org.javademos.java15.jep360.SealedClassesDemo()); demos.put(371, new org.javademos.java15.jep371.HiddenClassesDemo()); demos.put(372, new org.javademos.java15.jep372.NashornRemovalDemo()); + demos.put(373, new org.javademos.java15.jep373.DatagramSocketDemo()); demos.put(375, new org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview()); demos.put(381, new org.javademos.java15.jep381.SolarisSparcRemovalDemo()); demos.put(383, new org.javademos.java15.jep383.ForeignMemoryAccessDemo()); @@ -116,9 +118,11 @@ private static void getJava16Demos(Map demos) { } private static void getJava17Demos(Map demos) { + demos.put(356, new org.javademos.java17.jep356.RandomGeneratorsDemo()); demos.put(306, new org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo()); demos.put(382, new org.javademos.java17.jep382.MacosRenderingPipelineDemo()); demos.put(391, new org.javademos.java17.jep391.MacOsAarch64PortDemo()); + demos.put(398, new org.javademos.java17.jep398.DeprecateAppletApiForRemovalDemo()); demos.put(403, new org.javademos.java17.jep403.StronglyEncapsulateInternalsDemo()); demos.put(406, new org.javademos.java17.jep406.PatternMatchingForSwitchPreview()); demos.put(407, new org.javademos.java17.jep407.RemoveRmiActivationDemo()); diff --git a/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java b/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo.java similarity index 95% rename from src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java rename to src/main/java/org/javademos/java15/jep373/DatagramSocketDemo.java index e37482a0..05b510da 100644 --- a/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java +++ b/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo.java @@ -17,7 +17,7 @@ /// /// /// @author sayiamarora -public class DatagramSocketDemo15 implements IDemo { +public class DatagramSocketDemo implements IDemo { @Override public void demo() { diff --git a/src/main/java/org/javademos/java17/jep356/RandomGenerators17.java b/src/main/java/org/javademos/java17/jep356/RandomGeneratorsDemo.java similarity index 96% rename from src/main/java/org/javademos/java17/jep356/RandomGenerators17.java rename to src/main/java/org/javademos/java17/jep356/RandomGeneratorsDemo.java index 2eddf060..9419db7d 100644 --- a/src/main/java/org/javademos/java17/jep356/RandomGenerators17.java +++ b/src/main/java/org/javademos/java17/jep356/RandomGeneratorsDemo.java @@ -19,7 +19,7 @@ /// - [Baeldung: Enhanced Pseudo-Random Number Generators in Java 17](https://www.baeldung.com/java-17-random-number-generators) /// /// @author alois.seckar@gmail.com -public class RandomGenerators17 implements IDemo { +public class RandomGeneratorsDemo implements IDemo { @Override public void demo() { diff --git a/src/main/java/org/javademos/util/ArgsFilterUtil.java b/src/main/java/org/javademos/util/ArgsFilterUtil.java new file mode 100644 index 00000000..c84b66d1 --- /dev/null +++ b/src/main/java/org/javademos/util/ArgsFilterUtil.java @@ -0,0 +1,158 @@ +package org.javademos.util; + +import org.javademos.init.JEPInfo.JEPData; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * Utility class for filtering and parsing command-line arguments + * that determine which JEP demos should be executed. + *

+ * This class provides filtering logic based on various criteria + * such as JDK version, JEP number, and demo type (code or link-only). + *

+ * + *

Supported arguments and examples:

+ *
    + *
  • --skip-links — Skip demos that only contain links to other JEPs.
  • + *
  • --code-only — Run only demos that contain executable code.
  • + *
  • --jdk=17,25 — Run demos only from the specified JDK versions.
  • + *
  • --only=382,409 — Run only demos with the specified JEP numbers.
  • + *
+ * +*

Multiple filters and examples:

+ *

+ * Multiple filters can be combined. When multiple filters are specified, + * only demos that satisfy all active filters are executed. + *

+ * + *
    + *
  • --jdk=24,25 --code-only
  • + *
  • --jdk=17,21 --skip-links
  • + *
+ * + * + * @author Alexander Schneider + */ +public class ArgsFilterUtil { + + private static final Set jdkVersions = new HashSet<>(); + private static final Set specificJeps = new HashSet<>(); + private static boolean skipLinks = false; + private static boolean codeOnly = false; + + private static final String SKIP_LINKS = "--skip-links"; + private static final String CODE_ONLY = "--code-only"; + private static final String JDK = "--jdk="; + private static final String ONLY = "--only="; + private static final String DELIMITER = ","; + + private ArgsFilterUtil() { + } + + public static Map getFilteredJepData(String[] args, Map jepDataMap) { + parseArguments(args); + var filtered = filterJepData(jepDataMap); + printFilteredInfo(filtered); + return filtered; + } + + private static void parseArguments(String[] args) { + for (String arg : args) { + if (SKIP_LINKS.equals(arg)) { + skipLinks = true; + } else if (CODE_ONLY.equals(arg)) { + codeOnly = true; + } else if (arg.startsWith(JDK)) { + String jdkValues = arg.substring(JDK.length()); + parseJdkVersions(jdkValues); + } else if (arg.startsWith(ONLY)) { + String jepValues = arg.substring(ONLY.length()); + parseSpecificJeps(jepValues); + } else { + throw new IllegalArgumentException("Unknown arg: " + arg); + } + } + } + + private static void printFilteredInfo(Map filtered) { + System.out.println("\n=== FILTERED JEP INFORMATION ==="); + + if (!skipLinks && !codeOnly && specificJeps.isEmpty() && jdkVersions.isEmpty()) { + System.out.println("No filters applied. Total JEPs found: " + filtered.size()); + } else { + if (skipLinks) { + var linkOnlyCount = filtered.values().stream() + .filter(jepData -> !jepData.link()) + .count(); + System.out.println("Skipped link demos. JEPs found: " + linkOnlyCount); + } + + if (codeOnly) { + var codeOnlyCount = filtered.values().stream() + .filter(jepData -> !jepData.code()) + .count(); + System.out.println("Skipped no code demos. JEPs found: " + codeOnlyCount); + } + + if (!jdkVersions.isEmpty()) { + System.out.println("JDK versions: " + jdkVersions); + } + + if (!specificJeps.isEmpty()) { + System.out.println("Specific JEPs: " + specificJeps); + } + } + + System.out.println("================================\n"); + } + + private static void parseJdkVersions(String jdkValues) { + String[] versions = jdkValues.split(DELIMITER); + for (String version : versions) { + try { + jdkVersions.add(Integer.parseInt(version.trim())); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid JDK version: " + version); + } + } + } + + private static void parseSpecificJeps(String jepValues) { + String[] jeps = jepValues.split(DELIMITER); + for (String jep : jeps) { + try { + specificJeps.add(Integer.parseInt(jep.trim())); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid JEP number: " + jep); + } + } + } + + private static Map filterJepData(Map jepDataMap) { + return jepDataMap.entrySet().stream() + .filter(entry -> matchesFilters(entry.getValue())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + + private static boolean matchesFilters(JEPData jepData) { + if (skipLinks && jepData.link()) { + return false; + } + + if (codeOnly && !jepData.code()) { + return false; + } + + if (!jdkVersions.isEmpty() && !jdkVersions.contains(jepData.jdk())) { + return false; + } + + if (!specificJeps.isEmpty() && !specificJeps.contains(jepData.jep())) { + return false; + } + + return true; + } +} From 7b47d4d2bc213dd625403d57592e4c5852b1bea8 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 19:12:04 +0100 Subject: [PATCH 4/8] docs: fix Main method description --- src/main/java/org/javademos/Main.java | 18 ++++++++++-------- .../org/javademos/util/ArgsFilterUtil.java | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/javademos/Main.java b/src/main/java/org/javademos/Main.java index d2073b89..1dad1b02 100644 --- a/src/main/java/org/javademos/Main.java +++ b/src/main/java/org/javademos/Main.java @@ -14,14 +14,6 @@ * The 'JEP_DATA' map consists of simple IDemo interface implementations. * Code logic is being implemented inside .demo() methods. * @see IDemo - * - * Main method supports filtering demos based on command line arguments. - * Supported arguments and examples: - * --skip-links: Skip demos that are link-only to other JEP - * --code-only: Only run demos that contain code - * --jdk=17,25: Only run demos from specific JDK versions - * --only=382,409: Only run specific JEP numbers - * @see ArgsFilterUtil * * You can try switching the compile/build settings back to Java 1.8 to see * that the most of the stuff used here cannot be compiled and run under old @@ -30,6 +22,16 @@ * @author alois.seckar@gmail.com */ public class Main { + + /** + * Main method supports filtering demos based on command line arguments. + * Supported arguments and examples: + * --skip-links: Skip demos that are link-only to other JEP + * --code-only: Only run demos that contain code + * --jdk=17,25: Only run demos from specific JDK versions + * --only=382,409: Only run specific JEP numbers + * @see ArgsFilterUtil + * */ public static void main(String[] args) { // https://stackoverflow.com/a/19165338/3204544 diff --git a/src/main/java/org/javademos/util/ArgsFilterUtil.java b/src/main/java/org/javademos/util/ArgsFilterUtil.java index c84b66d1..fb39bad3 100644 --- a/src/main/java/org/javademos/util/ArgsFilterUtil.java +++ b/src/main/java/org/javademos/util/ArgsFilterUtil.java @@ -33,7 +33,7 @@ * * * - * @author Alexander Schneider + * @author Alexander Schneider @ab-schneider */ public class ArgsFilterUtil { From bc2e3ac29945299ccaf89b4bec1340160c66d29d Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 19:24:05 +0100 Subject: [PATCH 5/8] refactor: fix full class name --- src/main/java/org/javademos/init/JEPInfo.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/javademos/init/JEPInfo.java b/src/main/java/org/javademos/init/JEPInfo.java index 59085483..02050ecd 100644 --- a/src/main/java/org/javademos/init/JEPInfo.java +++ b/src/main/java/org/javademos/init/JEPInfo.java @@ -14,11 +14,11 @@ private JEPInfo() {} public record JEPData(int jep, int jdk, String name, String dscr, boolean link, boolean code) {} - public static final Map JEP_DATA = getAllInfos(); + public static final Map JEP_DATA = getAllInfos(); public static final Map JEP_DEMO = getAllDemos(); - private static Map getAllInfos() { - var jeps = new HashMap(); + private static Map getAllInfos() { + var jeps = new HashMap(); var sources = Arrays.asList(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); for (Integer src : sources) { @@ -26,10 +26,10 @@ private static Map getAllInfos() { try (InputStream inputStream = org.javademos.init.JEPInfo.class.getResourceAsStream(srcFile)) { if (inputStream != null) { try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - var JEPListType = new TypeToken>() { + var JEPListType = new TypeToken>() { }.getType(); var gson = new Gson(); - List data = gson.fromJson(br, JEPListType); + List data = gson.fromJson(br, JEPListType); data.forEach(d -> jeps.put(d.jep(), d)); } catch (IOException e) { e.printStackTrace(System.out); From 64bdcf74213b18da00b7bb18c16aecce08270d20 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sun, 26 Oct 2025 22:11:43 +0100 Subject: [PATCH 6/8] refactor: return to demo loading files for each java version instead of single file --- .../java/org/javademos/init/DemoLoader.java | 13 + src/main/java/org/javademos/init/JEPInfo.java | 222 ++---------------- .../org/javademos/init/Java11DemoLoader.java | 22 ++ .../org/javademos/init/Java12DemoLoader.java | 19 ++ .../org/javademos/init/Java14DemoLoader.java | 21 ++ .../org/javademos/init/Java15DemoLoader.java | 33 +++ .../org/javademos/init/Java16DemoLoader.java | 41 ++++ .../org/javademos/init/Java17DemoLoader.java | 43 ++++ .../org/javademos/init/Java18DemoLoader.java | 33 +++ .../org/javademos/init/Java19DemoLoader.java | 29 +++ .../org/javademos/init/Java20DemoLoader.java | 29 +++ .../org/javademos/init/Java21DemoLoader.java | 45 ++++ .../org/javademos/init/Java22DemoLoader.java | 39 +++ .../org/javademos/init/Java23DemoLoader.java | 39 +++ .../org/javademos/init/Java24DemoLoader.java | 61 +++++ .../org/javademos/init/Java25DemoLoader.java | 51 ++++ 16 files changed, 532 insertions(+), 208 deletions(-) create mode 100644 src/main/java/org/javademos/init/DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java11DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java12DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java14DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java15DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java16DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java17DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java18DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java19DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java20DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java21DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java22DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java23DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java24DemoLoader.java create mode 100644 src/main/java/org/javademos/init/Java25DemoLoader.java diff --git a/src/main/java/org/javademos/init/DemoLoader.java b/src/main/java/org/javademos/init/DemoLoader.java new file mode 100644 index 00000000..37646681 --- /dev/null +++ b/src/main/java/org/javademos/init/DemoLoader.java @@ -0,0 +1,13 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; + +import java.util.Map; + +/** + * Interface for loading demos for a specific Java version. + */ +public interface DemoLoader { + + void loadDemos(Map demos); +} diff --git a/src/main/java/org/javademos/init/JEPInfo.java b/src/main/java/org/javademos/init/JEPInfo.java index 02050ecd..22e1147f 100644 --- a/src/main/java/org/javademos/init/JEPInfo.java +++ b/src/main/java/org/javademos/init/JEPInfo.java @@ -48,216 +48,22 @@ private static Map getAllInfos() { private static Map getAllDemos() { var demos = new HashMap(); - getJava11Demos(demos); - getJava12Demos(demos); - getJava14Demos(demos); - getJava15Demos(demos); - getJava16Demos(demos); - getJava17Demos(demos); - getJava18Demos(demos); - getJava19Demos(demos); - getJava20Demos(demos); - getJava21Demos(demos); - getJava22Demos(demos); - getJava23Demos(demos); - getJava24Demos(demos); - getJava25Demos(demos); + new Java11DemoLoader().loadDemos(demos); + new Java12DemoLoader().loadDemos(demos); + new Java14DemoLoader().loadDemos(demos); + new Java15DemoLoader().loadDemos(demos); + new Java16DemoLoader().loadDemos(demos); + new Java17DemoLoader().loadDemos(demos); + new Java18DemoLoader().loadDemos(demos); + new Java19DemoLoader().loadDemos(demos); + new Java20DemoLoader().loadDemos(demos); + new Java21DemoLoader().loadDemos(demos); + new Java22DemoLoader().loadDemos(demos); + new Java23DemoLoader().loadDemos(demos); + new Java24DemoLoader().loadDemos(demos); + new Java25DemoLoader().loadDemos(demos); return demos; } - private static void getJava11Demos(Map demos) { - //TODO align old demos and add necessary JDKInfo.json - - // Java 11 -// demos.put(11, new J9Demo()); -// demos.put(11, new VarDemo()); -// demos.put(11, new HttpDemo()); -// demos.put(11, new String11Demo()); - } - - private static void getJava12Demos(Map demos) { - //TODO align old demos and add necessary JDKInfo.json - - // Java 12 -// demos.put(12, new String12Demo()); - } - - private static void getJava14Demos(Map demos) { - demos.put(305, new org.javademos.java14.jep305.InstanceofPatternMatchingPreview()); - demos.put(359, new org.javademos.java14.jep359.RecordsPreviewDemo()); - demos.put(370, new org.javademos.java14.jep370.ForeignMemoryAccessDemo()); - } - - private static void getJava15Demos(Map demos) { - demos.put(339, new org.javademos.java15.jep339.EdDSADemo()); - demos.put(360, new org.javademos.java15.jep360.SealedClassesDemo()); - demos.put(371, new org.javademos.java15.jep371.HiddenClassesDemo()); - demos.put(372, new org.javademos.java15.jep372.NashornRemovalDemo()); - demos.put(373, new org.javademos.java15.jep373.DatagramSocketDemo()); - demos.put(375, new org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview()); - demos.put(381, new org.javademos.java15.jep381.SolarisSparcRemovalDemo()); - demos.put(383, new org.javademos.java15.jep383.ForeignMemoryAccessDemo()); - demos.put(384, new org.javademos.java15.jep384.RecordsSecondPreviewDemo()); - } - - private static void getJava16Demos(Map demos) { - demos.put(338, new org.javademos.java16.jep338.VectorAPIDemo()); - demos.put(347, new org.javademos.java16.jep347.Cpp14FeaturesDemo()); - demos.put(380, new org.javademos.java16.jep380.UnixDomainSocketsDemo()); - demos.put(386, new org.javademos.java16.jep386.AlpineLinuxPortDemo()); - demos.put(388, new org.javademos.java16.jep388.WindowsPortDemo()); - demos.put(389, new org.javademos.java16.jep389.ForeignLinkerDemo()); - demos.put(390, new org.javademos.java16.jep390.ValueBasedClassesDemo()); - demos.put(392, new org.javademos.java16.jep392.PackagingToolDemo()); - demos.put(393, new org.javademos.java16.jep393.ForeignMemoryAccessDemo()); - demos.put(394, new org.javademos.java16.jep394.InstanceofPatternMatchingDemo()); - demos.put(395, new org.javademos.java16.jep395.RecordDemo()); - demos.put(396, new org.javademos.java16.jep396.EncapsulationDemo()); - demos.put(397, new org.javademos.java16.jep397.SealedClassesDemo()); - } - - private static void getJava17Demos(Map demos) { - demos.put(356, new org.javademos.java17.jep356.RandomGeneratorsDemo()); - demos.put(306, new org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo()); - demos.put(382, new org.javademos.java17.jep382.MacosRenderingPipelineDemo()); - demos.put(391, new org.javademos.java17.jep391.MacOsAarch64PortDemo()); - demos.put(398, new org.javademos.java17.jep398.DeprecateAppletApiForRemovalDemo()); - demos.put(403, new org.javademos.java17.jep403.StronglyEncapsulateInternalsDemo()); - demos.put(406, new org.javademos.java17.jep406.PatternMatchingForSwitchPreview()); - demos.put(407, new org.javademos.java17.jep407.RemoveRmiActivationDemo()); - demos.put(409, new org.javademos.java17.jep409.SealedDemo()); - demos.put(410, new org.javademos.java17.jep410.RemoveAotJitDemo()); - demos.put(411, new org.javademos.java17.jep411.DeprecateSecurityManagerDemo()); - demos.put(412, new org.javademos.java17.jep412.ForeignFunctionMemoryDemo()); - demos.put(414, new org.javademos.java17.jep414.VectorAPIDemo()); - demos.put(415, new org.javademos.java17.jep415.ContextSpecificDeserializationFiltersDemo()); - } - - private static void getJava18Demos(Map demos) { - demos.put(400, new org.javademos.java18.jep400.DefaultUTF8Demo()); - demos.put(408, new org.javademos.java18.jep408.SimpleWebServerDemo()); - demos.put(413, new org.javademos.java18.jep413.CodeSnippetsInJavadoc()); - demos.put(416, new org.javademos.java18.jep416.CoreReflectionWithMethodHandles()); - demos.put(417, new org.javademos.java18.jep417.VectorAPIDemo()); - demos.put(418, new org.javademos.java18.jep418.InternetAddressResolutionSPI()); - demos.put(419, new org.javademos.java18.jep419.ForeignFunctionMemoryDemo()); - demos.put(420, new org.javademos.java18.jep420.PatternMatchingForSwitchSecondPreview()); - demos.put(421, new org.javademos.java18.jep421.DeprecateFinalization()); - } - - private static void getJava19Demos(Map demos) { - demos.put(405, new org.javademos.java19.jep405.RecordPatterns()); - demos.put(422, new org.javademos.java19.jep422.LinuxRiscVPort()); - demos.put(424, new org.javademos.java19.jep424.ForeignFunctionMemoryDemo()); - demos.put(425, new org.javademos.java19.jep425.VirtualThreads()); - demos.put(426, new org.javademos.java19.jep426.VectorAPIDemo()); - demos.put(427, new org.javademos.java19.jep427.PatternMatchingForSwitchThirdPreview()); - demos.put(428, new org.javademos.java19.jep428.StructuredConcurrencyDemo()); - } - - private static void getJava20Demos(Map demos) { - demos.put(429, new org.javademos.java20.jep429.ScopedValuesDemo()); - demos.put(432, new org.javademos.java20.jep432.RecordPatterns()); - demos.put(433, new org.javademos.java20.jep433.PatternMatchingForSwitchFourthPreview()); - demos.put(434, new org.javademos.java20.jep434.ForeignFunctionMemoryDemo()); - demos.put(436, new org.javademos.java20.jep436.VirtualThreads()); - demos.put(437, new org.javademos.java20.jep437.StructuredConcurrencyDemo()); - demos.put(438, new org.javademos.java20.jep438.VectorAPIDemo()); - } - - private static void getJava21Demos(Map demos) { - demos.put(430, new org.javademos.java21.jep430.StringTemplatesDemo()); - demos.put(431, new org.javademos.java21.jep431.SequencedCollectionsDemo()); - demos.put(439, new org.javademos.java21.jep439.GenerationalZGC21()); - demos.put(440, new org.javademos.java21.jep440.RecordPatternsDemo()); - demos.put(441, new org.javademos.java21.jep441.PatternMatchingForSwitchDemo()); - demos.put(442, new org.javademos.java21.jep442.ForeignFunctionMemoryDemo()); - demos.put(443, new org.javademos.java21.jep443.UnnamedPatternsAndVariablesPreview()); - demos.put(444, new org.javademos.java21.jep444.VirtualThreadsDemo()); - demos.put(445, new org.javademos.java21.jep445.UnnamedClassesDemo()); - demos.put(446, new org.javademos.java21.jep446.ScopedValuesDemo()); - demos.put(448, new org.javademos.java21.jep448.VectorAPIDemo()); - demos.put(449, new org.javademos.java21.jep449.DeprecateWindows32BitX86Demo()); - demos.put(451, new org.javademos.java21.jep451.DisallowDynamicAgentLoading()); - demos.put(452, new org.javademos.java21.jep452.KeyEncapsulationMechanismAPIDemo()); - demos.put(453, new org.javademos.java21.jep453.StructuredConcurrencyDemo()); - } - - private static void getJava22Demos(Map demos) { - demos.put(423, new org.javademos.java22.jep423.RegionPinningForG1()); - demos.put(447, new org.javademos.java22.jep447.StatementsBeforeSuper()); - demos.put(454, new org.javademos.java22.jep454.ForeignFunctionMemoryDemo()); - demos.put(456, new org.javademos.java22.jep456.UnnamedPatternsAndVariablesDemo()); - demos.put(457, new org.javademos.java22.jep457.ClassFileAPIDemo()); - demos.put(458, new org.javademos.java22.jep458.LaunchMultiFileSourceDemo()); - demos.put(459, new org.javademos.java22.jep459.StringTemplatesSecondPreview()); - demos.put(460, new org.javademos.java22.jep460.VectorAPIDemo()); - demos.put(461, new org.javademos.java22.jep461.StreamGatherersDemo()); - demos.put(462, new org.javademos.java22.jep462.StructuredConcurrencyDemo()); - demos.put(463, new org.javademos.java22.jep463.ImplicitlyDeclaredClassesDemo()); - demos.put(464, new org.javademos.java22.jep464.ScopedValuesDemo()); - } - - private static void getJava23Demos(Map demos) { - demos.put(455, new org.javademos.java23.jep455.PrimitiveTypesInPatterns()); - demos.put(466, new org.javademos.java23.jep466.ClassFileAPIDemo()); - demos.put(467, new org.javademos.java23.jep467.MarkdownComments()); - demos.put(469, new org.javademos.java23.jep469.VectorAPIDemo()); - demos.put(471, new org.javademos.java23.jep471.DeprecateMemoryAccessMethods()); - demos.put(473, new org.javademos.java23.jep473.StreamGatherersDemo()); - demos.put(474, new org.javademos.java23.jep474.GenerationalZGC23()); - demos.put(476, new org.javademos.java23.jep476.ModuleImportDeclarations()); - demos.put(477, new org.javademos.java23.jep477.ImplicitlyDeclaredClassesDemo()); - demos.put(480, new org.javademos.java23.jep480.StructuredConcurrency()); - demos.put(481, new org.javademos.java23.jep481.ScopedValuesDemo()); - demos.put(482, new org.javademos.java23.jep482.FlexibleConstructorBodies()); - } - - private static void getJava24Demos(Map demos) { - demos.put(404, new org.javademos.java24.jep404.GenerationalShenandoahExperimental()); - demos.put(450, new org.javademos.java24.jep450.CompactObjectHeadersExperimental()); - demos.put(472, new org.javademos.java24.jep472.PrepareToRestrictJNI()); - demos.put(475, new org.javademos.java24.jep475.LateBarrierExpansionG1()); - demos.put(478, new org.javademos.java24.jep478.KeyDerivationApiPreview()); - demos.put(479, new org.javademos.java24.jep479.RemovedWindows32BitX86Demo()); - demos.put(483, new org.javademos.java24.jep483.AotLoadingAndLinking()); - demos.put(484, new org.javademos.java24.jep484.ClassFileAPIDemo()); - demos.put(485, new org.javademos.java24.jep485.StreamGatherersDemo()); - demos.put(486, new org.javademos.java24.jep486.DisableSecurityManager()); - demos.put(487, new org.javademos.java24.jep487.ScopedValuesDemo()); - demos.put(488, new org.javademos.java24.jep488.PrimitiveTypesSecondPreview()); - demos.put(489, new org.javademos.java24.jep489.VectorAPIDemo()); - demos.put(490, new org.javademos.java24.jep490.ZgcNonGenerationalModeRemoval()); - demos.put(491, new org.javademos.java24.jep491.SynchronizedNoPinning()); - demos.put(493, new org.javademos.java24.jep493.LinkingRunTimeImages493()); - demos.put(494, new org.javademos.java24.jep494.ModuleImportSecondPreview()); - demos.put(495, new org.javademos.java24.jep495.SimpleSourceFilesDemo()); - demos.put(496, new org.javademos.java24.jep496.QuantumResistantModuleLatticeBasedKeyEncapsulation()); - demos.put(497, new org.javademos.java24.jep497.QuantumResistantModuleLatticeBasedDigitalSignature()); - demos.put(498, new org.javademos.java24.jep498.MemoryAccessMethods()); - demos.put(499, new org.javademos.java24.jep499.StructuredConcurrencyDemo()); - demos.put(501, new org.javademos.java24.jep501.Deprecate32BitX86Demo()); - } - - private static void getJava25Demos(Map demos) { - demos.put(470, new org.javademos.java25.jep470.PemEncodingsDemo()); - demos.put(502, new org.javademos.java25.jep502.StableValuesDemo()); - demos.put(503, new org.javademos.java25.jep503.Remove32BitX86Demo()); - demos.put(505, new org.javademos.java25.jep505.StructuredConcurrencyDemo()); - demos.put(506, new org.javademos.java25.jep506.ScopedValuesDemo()); - demos.put(507, new org.javademos.java25.jep507.PrimitiveTypesDemo()); - demos.put(508, new org.javademos.java25.jep508.VectorAPIDemo()); - demos.put(509, new org.javademos.java25.jep509.CpuTimeProfilingDemo()); - demos.put(510, new org.javademos.java25.jep510.KeyDerivationFunctionDemo()); - demos.put(511, new org.javademos.java25.jep511.ModuleImportDeclarationsDemo()); - demos.put(512, new org.javademos.java25.jep512.CompactSourceFilesDemo()); - demos.put(513, new org.javademos.java25.jep513.FlexibleConstructorBodiesDemo()); - demos.put(514, new org.javademos.java25.jep514.AheadOfTimeCLIDemo()); - demos.put(515, new org.javademos.java25.jep515.AheadOfTimeMethodProfilingDemo()); - demos.put(518, new org.javademos.java25.jep518.JFRCooperativeSamplingDemo()); - demos.put(519, new org.javademos.java25.jep519.CompactObjectHeaderDemo()); - demos.put(520, new org.javademos.java25.jep520.Jep520MethodTracingDemo()); - demos.put(521, new org.javademos.java25.jep521.GenerationalShenandoahDemo()); - } } diff --git a/src/main/java/org/javademos/init/Java11DemoLoader.java b/src/main/java/org/javademos/init/Java11DemoLoader.java new file mode 100644 index 00000000..f03ce253 --- /dev/null +++ b/src/main/java/org/javademos/init/Java11DemoLoader.java @@ -0,0 +1,22 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; + +import java.util.Map; + +/** + * Loads demos for Java 11. + */ +public class Java11DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + //TODO align old demos and add necessary JDKInfo.json + + // Java 11 +// demos.put(11, new J9Demo()); +// demos.put(11, new VarDemo()); +// demos.put(11, new HttpDemo()); +// demos.put(11, new String11Demo()); + } +} diff --git a/src/main/java/org/javademos/init/Java12DemoLoader.java b/src/main/java/org/javademos/init/Java12DemoLoader.java new file mode 100644 index 00000000..a1a7bae8 --- /dev/null +++ b/src/main/java/org/javademos/init/Java12DemoLoader.java @@ -0,0 +1,19 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; + +import java.util.Map; + +/** + * Loads demos for Java 12. + */ +public class Java12DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + //TODO align old demos and add necessary JDKInfo.json + + // Java 12 +// demos.put(12, new String12Demo()); + } +} diff --git a/src/main/java/org/javademos/init/Java14DemoLoader.java b/src/main/java/org/javademos/init/Java14DemoLoader.java new file mode 100644 index 00000000..05737fce --- /dev/null +++ b/src/main/java/org/javademos/init/Java14DemoLoader.java @@ -0,0 +1,21 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java14.jep305.InstanceofPatternMatchingPreview; +import org.javademos.java14.jep359.RecordsPreviewDemo; +import org.javademos.java14.jep370.ForeignMemoryAccessDemo; + +import java.util.Map; + +/** + * Loads demos for Java 14. + */ +public class Java14DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(305, new InstanceofPatternMatchingPreview()); + demos.put(359, new RecordsPreviewDemo()); + demos.put(370, new ForeignMemoryAccessDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java15DemoLoader.java b/src/main/java/org/javademos/init/Java15DemoLoader.java new file mode 100644 index 00000000..a7f5406a --- /dev/null +++ b/src/main/java/org/javademos/init/Java15DemoLoader.java @@ -0,0 +1,33 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java15.jep339.EdDSADemo; +import org.javademos.java15.jep360.SealedClassesDemo; +import org.javademos.java15.jep371.HiddenClassesDemo; +import org.javademos.java15.jep372.NashornRemovalDemo; +import org.javademos.java15.jep373.DatagramSocketDemo; +import org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview; +import org.javademos.java15.jep381.SolarisSparcRemovalDemo; +import org.javademos.java15.jep383.ForeignMemoryAccessDemo; +import org.javademos.java15.jep384.RecordsSecondPreviewDemo; + +import java.util.Map; + +/** + * Loads demos for Java 15. + */ +public class Java15DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(339, new EdDSADemo()); + demos.put(360, new SealedClassesDemo()); + demos.put(371, new HiddenClassesDemo()); + demos.put(372, new NashornRemovalDemo()); + demos.put(373, new DatagramSocketDemo()); + demos.put(375, new InstanceofPatternMatchingSecondPreview()); + demos.put(381, new SolarisSparcRemovalDemo()); + demos.put(383, new ForeignMemoryAccessDemo()); + demos.put(384, new RecordsSecondPreviewDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java16DemoLoader.java b/src/main/java/org/javademos/init/Java16DemoLoader.java new file mode 100644 index 00000000..d15b5e16 --- /dev/null +++ b/src/main/java/org/javademos/init/Java16DemoLoader.java @@ -0,0 +1,41 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java16.jep338.VectorAPIDemo; +import org.javademos.java16.jep347.Cpp14FeaturesDemo; +import org.javademos.java16.jep380.UnixDomainSocketsDemo; +import org.javademos.java16.jep386.AlpineLinuxPortDemo; +import org.javademos.java16.jep388.WindowsPortDemo; +import org.javademos.java16.jep389.ForeignLinkerDemo; +import org.javademos.java16.jep390.ValueBasedClassesDemo; +import org.javademos.java16.jep392.PackagingToolDemo; +import org.javademos.java16.jep393.ForeignMemoryAccessDemo; +import org.javademos.java16.jep394.InstanceofPatternMatchingDemo; +import org.javademos.java16.jep395.RecordDemo; +import org.javademos.java16.jep396.EncapsulationDemo; +import org.javademos.java16.jep397.SealedClassesDemo; + +import java.util.Map; + +/** + * Loads demos for Java 16. + */ +public class Java16DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(338, new VectorAPIDemo()); + demos.put(347, new Cpp14FeaturesDemo()); + demos.put(380, new UnixDomainSocketsDemo()); + demos.put(386, new AlpineLinuxPortDemo()); + demos.put(388, new WindowsPortDemo()); + demos.put(389, new ForeignLinkerDemo()); + demos.put(390, new ValueBasedClassesDemo()); + demos.put(392, new PackagingToolDemo()); + demos.put(393, new ForeignMemoryAccessDemo()); + demos.put(394, new InstanceofPatternMatchingDemo()); + demos.put(395, new RecordDemo()); + demos.put(396, new EncapsulationDemo()); + demos.put(397, new SealedClassesDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java17DemoLoader.java b/src/main/java/org/javademos/init/Java17DemoLoader.java new file mode 100644 index 00000000..f6b3980d --- /dev/null +++ b/src/main/java/org/javademos/init/Java17DemoLoader.java @@ -0,0 +1,43 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo; +import org.javademos.java17.jep356.RandomGeneratorsDemo; +import org.javademos.java17.jep382.MacosRenderingPipelineDemo; +import org.javademos.java17.jep391.MacOsAarch64PortDemo; +import org.javademos.java17.jep398.DeprecateAppletApiForRemovalDemo; +import org.javademos.java17.jep403.StronglyEncapsulateInternalsDemo; +import org.javademos.java17.jep406.PatternMatchingForSwitchPreview; +import org.javademos.java17.jep407.RemoveRmiActivationDemo; +import org.javademos.java17.jep409.SealedDemo; +import org.javademos.java17.jep410.RemoveAotJitDemo; +import org.javademos.java17.jep411.DeprecateSecurityManagerDemo; +import org.javademos.java17.jep412.ForeignFunctionMemoryDemo; +import org.javademos.java17.jep414.VectorAPIDemo; +import org.javademos.java17.jep415.ContextSpecificDeserializationFiltersDemo; + +import java.util.Map; + +/** + * Loads demos for Java 17. + */ +public class Java17DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(356, new RandomGeneratorsDemo()); + demos.put(306, new RestoreAlwaysStrictFloatingPointSemanticsDemo()); + demos.put(382, new MacosRenderingPipelineDemo()); + demos.put(391, new MacOsAarch64PortDemo()); + demos.put(398, new DeprecateAppletApiForRemovalDemo()); + demos.put(403, new StronglyEncapsulateInternalsDemo()); + demos.put(406, new PatternMatchingForSwitchPreview()); + demos.put(407, new RemoveRmiActivationDemo()); + demos.put(409, new SealedDemo()); + demos.put(410, new RemoveAotJitDemo()); + demos.put(411, new DeprecateSecurityManagerDemo()); + demos.put(412, new ForeignFunctionMemoryDemo()); + demos.put(414, new VectorAPIDemo()); + demos.put(415, new ContextSpecificDeserializationFiltersDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java18DemoLoader.java b/src/main/java/org/javademos/init/Java18DemoLoader.java new file mode 100644 index 00000000..72616d89 --- /dev/null +++ b/src/main/java/org/javademos/init/Java18DemoLoader.java @@ -0,0 +1,33 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java18.jep400.DefaultUTF8Demo; +import org.javademos.java18.jep408.SimpleWebServerDemo; +import org.javademos.java18.jep413.CodeSnippetsInJavadoc; +import org.javademos.java18.jep416.CoreReflectionWithMethodHandles; +import org.javademos.java18.jep417.VectorAPIDemo; +import org.javademos.java18.jep418.InternetAddressResolutionSPI; +import org.javademos.java18.jep419.ForeignFunctionMemoryDemo; +import org.javademos.java18.jep420.PatternMatchingForSwitchSecondPreview; +import org.javademos.java18.jep421.DeprecateFinalization; + +import java.util.Map; + +/** + * Loads demos for Java 18. + */ +public class Java18DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(400, new DefaultUTF8Demo()); + demos.put(408, new SimpleWebServerDemo()); + demos.put(413, new CodeSnippetsInJavadoc()); + demos.put(416, new CoreReflectionWithMethodHandles()); + demos.put(417, new VectorAPIDemo()); + demos.put(418, new InternetAddressResolutionSPI()); + demos.put(419, new ForeignFunctionMemoryDemo()); + demos.put(420, new PatternMatchingForSwitchSecondPreview()); + demos.put(421, new DeprecateFinalization()); + } +} diff --git a/src/main/java/org/javademos/init/Java19DemoLoader.java b/src/main/java/org/javademos/init/Java19DemoLoader.java new file mode 100644 index 00000000..35c1c525 --- /dev/null +++ b/src/main/java/org/javademos/init/Java19DemoLoader.java @@ -0,0 +1,29 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java19.jep405.RecordPatterns; +import org.javademos.java19.jep422.LinuxRiscVPort; +import org.javademos.java19.jep424.ForeignFunctionMemoryDemo; +import org.javademos.java19.jep425.VirtualThreads; +import org.javademos.java19.jep426.VectorAPIDemo; +import org.javademos.java19.jep427.PatternMatchingForSwitchThirdPreview; +import org.javademos.java19.jep428.StructuredConcurrencyDemo; + +import java.util.Map; + +/** + * Loads demos for Java 19. + */ +public class Java19DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(405, new RecordPatterns()); + demos.put(422, new LinuxRiscVPort()); + demos.put(424, new ForeignFunctionMemoryDemo()); + demos.put(425, new VirtualThreads()); + demos.put(426, new VectorAPIDemo()); + demos.put(427, new PatternMatchingForSwitchThirdPreview()); + demos.put(428, new StructuredConcurrencyDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java20DemoLoader.java b/src/main/java/org/javademos/init/Java20DemoLoader.java new file mode 100644 index 00000000..7bd92a37 --- /dev/null +++ b/src/main/java/org/javademos/init/Java20DemoLoader.java @@ -0,0 +1,29 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java20.jep429.ScopedValuesDemo; +import org.javademos.java20.jep432.RecordPatterns; +import org.javademos.java20.jep433.PatternMatchingForSwitchFourthPreview; +import org.javademos.java20.jep434.ForeignFunctionMemoryDemo; +import org.javademos.java20.jep436.VirtualThreads; +import org.javademos.java20.jep437.StructuredConcurrencyDemo; +import org.javademos.java20.jep438.VectorAPIDemo; + +import java.util.Map; + +/** + * Loads demos for Java 20. + */ +public class Java20DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(429, new ScopedValuesDemo()); + demos.put(432, new RecordPatterns()); + demos.put(433, new PatternMatchingForSwitchFourthPreview()); + demos.put(434, new ForeignFunctionMemoryDemo()); + demos.put(436, new VirtualThreads()); + demos.put(437, new StructuredConcurrencyDemo()); + demos.put(438, new VectorAPIDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java21DemoLoader.java b/src/main/java/org/javademos/init/Java21DemoLoader.java new file mode 100644 index 00000000..e711d330 --- /dev/null +++ b/src/main/java/org/javademos/init/Java21DemoLoader.java @@ -0,0 +1,45 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java21.jep430.StringTemplatesDemo; +import org.javademos.java21.jep431.SequencedCollectionsDemo; +import org.javademos.java21.jep439.GenerationalZGC21; +import org.javademos.java21.jep440.RecordPatternsDemo; +import org.javademos.java21.jep441.PatternMatchingForSwitchDemo; +import org.javademos.java21.jep442.ForeignFunctionMemoryDemo; +import org.javademos.java21.jep443.UnnamedPatternsAndVariablesPreview; +import org.javademos.java21.jep444.VirtualThreadsDemo; +import org.javademos.java21.jep445.UnnamedClassesDemo; +import org.javademos.java21.jep446.ScopedValuesDemo; +import org.javademos.java21.jep448.VectorAPIDemo; +import org.javademos.java21.jep449.DeprecateWindows32BitX86Demo; +import org.javademos.java21.jep451.DisallowDynamicAgentLoading; +import org.javademos.java21.jep452.KeyEncapsulationMechanismAPIDemo; +import org.javademos.java21.jep453.StructuredConcurrencyDemo; + +import java.util.Map; + +/** + * Loads demos for Java 21. + */ +public class Java21DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(430, new StringTemplatesDemo()); + demos.put(431, new SequencedCollectionsDemo()); + demos.put(439, new GenerationalZGC21()); + demos.put(440, new RecordPatternsDemo()); + demos.put(441, new PatternMatchingForSwitchDemo()); + demos.put(442, new ForeignFunctionMemoryDemo()); + demos.put(443, new UnnamedPatternsAndVariablesPreview()); + demos.put(444, new VirtualThreadsDemo()); + demos.put(445, new UnnamedClassesDemo()); + demos.put(446, new ScopedValuesDemo()); + demos.put(448, new VectorAPIDemo()); + demos.put(449, new DeprecateWindows32BitX86Demo()); + demos.put(451, new DisallowDynamicAgentLoading()); + demos.put(452, new KeyEncapsulationMechanismAPIDemo()); + demos.put(453, new StructuredConcurrencyDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java22DemoLoader.java b/src/main/java/org/javademos/init/Java22DemoLoader.java new file mode 100644 index 00000000..a2b3f41e --- /dev/null +++ b/src/main/java/org/javademos/init/Java22DemoLoader.java @@ -0,0 +1,39 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java22.jep423.RegionPinningForG1; +import org.javademos.java22.jep447.StatementsBeforeSuper; +import org.javademos.java22.jep454.ForeignFunctionMemoryDemo; +import org.javademos.java22.jep456.UnnamedPatternsAndVariablesDemo; +import org.javademos.java22.jep457.ClassFileAPIDemo; +import org.javademos.java22.jep458.LaunchMultiFileSourceDemo; +import org.javademos.java22.jep459.StringTemplatesSecondPreview; +import org.javademos.java22.jep460.VectorAPIDemo; +import org.javademos.java22.jep461.StreamGatherersDemo; +import org.javademos.java22.jep462.StructuredConcurrencyDemo; +import org.javademos.java22.jep463.ImplicitlyDeclaredClassesDemo; +import org.javademos.java22.jep464.ScopedValuesDemo; + +import java.util.Map; + +/** + * Loads demos for Java 22. + */ +public class Java22DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(423, new RegionPinningForG1()); + demos.put(447, new StatementsBeforeSuper()); + demos.put(454, new ForeignFunctionMemoryDemo()); + demos.put(456, new UnnamedPatternsAndVariablesDemo()); + demos.put(457, new ClassFileAPIDemo()); + demos.put(458, new LaunchMultiFileSourceDemo()); + demos.put(459, new StringTemplatesSecondPreview()); + demos.put(460, new VectorAPIDemo()); + demos.put(461, new StreamGatherersDemo()); + demos.put(462, new StructuredConcurrencyDemo()); + demos.put(463, new ImplicitlyDeclaredClassesDemo()); + demos.put(464, new ScopedValuesDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java23DemoLoader.java b/src/main/java/org/javademos/init/Java23DemoLoader.java new file mode 100644 index 00000000..8d5b1608 --- /dev/null +++ b/src/main/java/org/javademos/init/Java23DemoLoader.java @@ -0,0 +1,39 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java23.jep455.PrimitiveTypesInPatterns; +import org.javademos.java23.jep466.ClassFileAPIDemo; +import org.javademos.java23.jep467.MarkdownComments; +import org.javademos.java23.jep469.VectorAPIDemo; +import org.javademos.java23.jep471.DeprecateMemoryAccessMethods; +import org.javademos.java23.jep473.StreamGatherersDemo; +import org.javademos.java23.jep474.GenerationalZGC23; +import org.javademos.java23.jep476.ModuleImportDeclarations; +import org.javademos.java23.jep477.ImplicitlyDeclaredClassesDemo; +import org.javademos.java23.jep480.StructuredConcurrency; +import org.javademos.java23.jep481.ScopedValuesDemo; +import org.javademos.java23.jep482.FlexibleConstructorBodies; + +import java.util.Map; + +/** + * Loads demos for Java 23. + */ +public class Java23DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(455, new PrimitiveTypesInPatterns()); + demos.put(466, new ClassFileAPIDemo()); + demos.put(467, new MarkdownComments()); + demos.put(469, new VectorAPIDemo()); + demos.put(471, new DeprecateMemoryAccessMethods()); + demos.put(473, new StreamGatherersDemo()); + demos.put(474, new GenerationalZGC23()); + demos.put(476, new ModuleImportDeclarations()); + demos.put(477, new ImplicitlyDeclaredClassesDemo()); + demos.put(480, new StructuredConcurrency()); + demos.put(481, new ScopedValuesDemo()); + demos.put(482, new FlexibleConstructorBodies()); + } +} diff --git a/src/main/java/org/javademos/init/Java24DemoLoader.java b/src/main/java/org/javademos/init/Java24DemoLoader.java new file mode 100644 index 00000000..45e36e05 --- /dev/null +++ b/src/main/java/org/javademos/init/Java24DemoLoader.java @@ -0,0 +1,61 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java24.jep404.GenerationalShenandoahExperimental; +import org.javademos.java24.jep450.CompactObjectHeadersExperimental; +import org.javademos.java24.jep472.PrepareToRestrictJNI; +import org.javademos.java24.jep475.LateBarrierExpansionG1; +import org.javademos.java24.jep478.KeyDerivationApiPreview; +import org.javademos.java24.jep479.RemovedWindows32BitX86Demo; +import org.javademos.java24.jep483.AotLoadingAndLinking; +import org.javademos.java24.jep484.ClassFileAPIDemo; +import org.javademos.java24.jep485.StreamGatherersDemo; +import org.javademos.java24.jep486.DisableSecurityManager; +import org.javademos.java24.jep487.ScopedValuesDemo; +import org.javademos.java24.jep488.PrimitiveTypesSecondPreview; +import org.javademos.java24.jep489.VectorAPIDemo; +import org.javademos.java24.jep490.ZgcNonGenerationalModeRemoval; +import org.javademos.java24.jep491.SynchronizedNoPinning; +import org.javademos.java24.jep493.LinkingRunTimeImages493; +import org.javademos.java24.jep494.ModuleImportSecondPreview; +import org.javademos.java24.jep495.SimpleSourceFilesDemo; +import org.javademos.java24.jep496.QuantumResistantModuleLatticeBasedKeyEncapsulation; +import org.javademos.java24.jep497.QuantumResistantModuleLatticeBasedDigitalSignature; +import org.javademos.java24.jep498.MemoryAccessMethods; +import org.javademos.java24.jep499.StructuredConcurrencyDemo; +import org.javademos.java24.jep501.Deprecate32BitX86Demo; + +import java.util.Map; + +/** + * Loads demos for Java 24. + */ +public class Java24DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(404, new GenerationalShenandoahExperimental()); + demos.put(450, new CompactObjectHeadersExperimental()); + demos.put(472, new PrepareToRestrictJNI()); + demos.put(475, new LateBarrierExpansionG1()); + demos.put(478, new KeyDerivationApiPreview()); + demos.put(479, new RemovedWindows32BitX86Demo()); + demos.put(483, new AotLoadingAndLinking()); + demos.put(484, new ClassFileAPIDemo()); + demos.put(485, new StreamGatherersDemo()); + demos.put(486, new DisableSecurityManager()); + demos.put(487, new ScopedValuesDemo()); + demos.put(488, new PrimitiveTypesSecondPreview()); + demos.put(489, new VectorAPIDemo()); + demos.put(490, new ZgcNonGenerationalModeRemoval()); + demos.put(491, new SynchronizedNoPinning()); + demos.put(493, new LinkingRunTimeImages493()); + demos.put(494, new ModuleImportSecondPreview()); + demos.put(495, new SimpleSourceFilesDemo()); + demos.put(496, new QuantumResistantModuleLatticeBasedKeyEncapsulation()); + demos.put(497, new QuantumResistantModuleLatticeBasedDigitalSignature()); + demos.put(498, new MemoryAccessMethods()); + demos.put(499, new StructuredConcurrencyDemo()); + demos.put(501, new Deprecate32BitX86Demo()); + } +} diff --git a/src/main/java/org/javademos/init/Java25DemoLoader.java b/src/main/java/org/javademos/init/Java25DemoLoader.java new file mode 100644 index 00000000..5fb0993b --- /dev/null +++ b/src/main/java/org/javademos/init/Java25DemoLoader.java @@ -0,0 +1,51 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.java25.jep470.PemEncodingsDemo; +import org.javademos.java25.jep502.StableValuesDemo; +import org.javademos.java25.jep503.Remove32BitX86Demo; +import org.javademos.java25.jep505.StructuredConcurrencyDemo; +import org.javademos.java25.jep506.ScopedValuesDemo; +import org.javademos.java25.jep507.PrimitiveTypesDemo; +import org.javademos.java25.jep508.VectorAPIDemo; +import org.javademos.java25.jep509.CpuTimeProfilingDemo; +import org.javademos.java25.jep510.KeyDerivationFunctionDemo; +import org.javademos.java25.jep511.ModuleImportDeclarationsDemo; +import org.javademos.java25.jep512.CompactSourceFilesDemo; +import org.javademos.java25.jep513.FlexibleConstructorBodiesDemo; +import org.javademos.java25.jep514.AheadOfTimeCLIDemo; +import org.javademos.java25.jep515.AheadOfTimeMethodProfilingDemo; +import org.javademos.java25.jep518.JFRCooperativeSamplingDemo; +import org.javademos.java25.jep519.CompactObjectHeaderDemo; +import org.javademos.java25.jep520.Jep520MethodTracingDemo; +import org.javademos.java25.jep521.GenerationalShenandoahDemo; + +import java.util.Map; + +/** + * Loads demos for Java 25. + */ +public class Java25DemoLoader implements DemoLoader { + + @Override + public void loadDemos(Map demos) { + demos.put(470, new PemEncodingsDemo()); + demos.put(502, new StableValuesDemo()); + demos.put(503, new Remove32BitX86Demo()); + demos.put(505, new StructuredConcurrencyDemo()); + demos.put(506, new ScopedValuesDemo()); + demos.put(507, new PrimitiveTypesDemo()); + demos.put(508, new VectorAPIDemo()); + demos.put(509, new CpuTimeProfilingDemo()); + demos.put(510, new KeyDerivationFunctionDemo()); + demos.put(511, new ModuleImportDeclarationsDemo()); + demos.put(512, new CompactSourceFilesDemo()); + demos.put(513, new FlexibleConstructorBodiesDemo()); + demos.put(514, new AheadOfTimeCLIDemo()); + demos.put(515, new AheadOfTimeMethodProfilingDemo()); + demos.put(518, new JFRCooperativeSamplingDemo()); + demos.put(519, new CompactObjectHeaderDemo()); + demos.put(520, new Jep520MethodTracingDemo()); + demos.put(521, new GenerationalShenandoahDemo()); + } +} From 2c7ac642caa80f24dd6a144b58c3f7d7da6e71fa Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Mon, 27 Oct 2025 09:50:32 +0100 Subject: [PATCH 7/8] refactor: rename classes and folders per review feedback --- src/main/java/org/javademos/Main.java | 2 +- .../{util => commons}/ArgsFilterUtil.java | 2 +- .../IDemoLoader.java} | 6 ++---- src/main/java/org/javademos/init/JEPInfo.java | 1 + .../org/javademos/init/Java11DemoLoader.java | 3 ++- .../org/javademos/init/Java12DemoLoader.java | 5 +++-- .../org/javademos/init/Java13DemoLoader.java | 20 +++++++++++++++++++ .../org/javademos/init/Java14DemoLoader.java | 3 ++- .../org/javademos/init/Java15DemoLoader.java | 3 ++- .../org/javademos/init/Java16DemoLoader.java | 3 ++- .../org/javademos/init/Java17DemoLoader.java | 3 ++- .../org/javademos/init/Java18DemoLoader.java | 3 ++- .../org/javademos/init/Java19DemoLoader.java | 3 ++- .../org/javademos/init/Java20DemoLoader.java | 3 ++- .../org/javademos/init/Java21DemoLoader.java | 3 ++- .../org/javademos/init/Java22DemoLoader.java | 3 ++- .../org/javademos/init/Java23DemoLoader.java | 3 ++- .../org/javademos/init/Java24DemoLoader.java | 3 ++- .../org/javademos/init/Java25DemoLoader.java | 3 ++- .../java12/{ => extras}/String12Demo.java | 2 +- 20 files changed, 55 insertions(+), 22 deletions(-) rename src/main/java/org/javademos/{util => commons}/ArgsFilterUtil.java (99%) rename src/main/java/org/javademos/{init/DemoLoader.java => commons/IDemoLoader.java} (59%) create mode 100644 src/main/java/org/javademos/init/Java13DemoLoader.java rename src/main/java/org/javademos/java12/{ => extras}/String12Demo.java (98%) diff --git a/src/main/java/org/javademos/Main.java b/src/main/java/org/javademos/Main.java index 1dad1b02..b119990d 100644 --- a/src/main/java/org/javademos/Main.java +++ b/src/main/java/org/javademos/Main.java @@ -1,7 +1,7 @@ package org.javademos; import org.javademos.commons.IDemo; -import org.javademos.util.ArgsFilterUtil; +import org.javademos.commons.ArgsFilterUtil; import java.util.Comparator; import java.util.Map; diff --git a/src/main/java/org/javademos/util/ArgsFilterUtil.java b/src/main/java/org/javademos/commons/ArgsFilterUtil.java similarity index 99% rename from src/main/java/org/javademos/util/ArgsFilterUtil.java rename to src/main/java/org/javademos/commons/ArgsFilterUtil.java index fb39bad3..537afbd7 100644 --- a/src/main/java/org/javademos/util/ArgsFilterUtil.java +++ b/src/main/java/org/javademos/commons/ArgsFilterUtil.java @@ -1,4 +1,4 @@ -package org.javademos.util; +package org.javademos.commons; import org.javademos.init.JEPInfo.JEPData; diff --git a/src/main/java/org/javademos/init/DemoLoader.java b/src/main/java/org/javademos/commons/IDemoLoader.java similarity index 59% rename from src/main/java/org/javademos/init/DemoLoader.java rename to src/main/java/org/javademos/commons/IDemoLoader.java index 37646681..35ab5f02 100644 --- a/src/main/java/org/javademos/init/DemoLoader.java +++ b/src/main/java/org/javademos/commons/IDemoLoader.java @@ -1,13 +1,11 @@ -package org.javademos.init; - -import org.javademos.commons.IDemo; +package org.javademos.commons; import java.util.Map; /** * Interface for loading demos for a specific Java version. */ -public interface DemoLoader { +public interface IDemoLoader { void loadDemos(Map demos); } diff --git a/src/main/java/org/javademos/init/JEPInfo.java b/src/main/java/org/javademos/init/JEPInfo.java index 22e1147f..836dd839 100644 --- a/src/main/java/org/javademos/init/JEPInfo.java +++ b/src/main/java/org/javademos/init/JEPInfo.java @@ -50,6 +50,7 @@ private static Map getAllDemos() { new Java11DemoLoader().loadDemos(demos); new Java12DemoLoader().loadDemos(demos); + new Java13DemoLoader().loadDemos(demos); new Java14DemoLoader().loadDemos(demos); new Java15DemoLoader().loadDemos(demos); new Java16DemoLoader().loadDemos(demos); diff --git a/src/main/java/org/javademos/init/Java11DemoLoader.java b/src/main/java/org/javademos/init/Java11DemoLoader.java index f03ce253..d99e4734 100644 --- a/src/main/java/org/javademos/init/Java11DemoLoader.java +++ b/src/main/java/org/javademos/init/Java11DemoLoader.java @@ -1,13 +1,14 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import java.util.Map; /** * Loads demos for Java 11. */ -public class Java11DemoLoader implements DemoLoader { +public class Java11DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java12DemoLoader.java b/src/main/java/org/javademos/init/Java12DemoLoader.java index a1a7bae8..eafbbb27 100644 --- a/src/main/java/org/javademos/init/Java12DemoLoader.java +++ b/src/main/java/org/javademos/init/Java12DemoLoader.java @@ -1,19 +1,20 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import java.util.Map; /** * Loads demos for Java 12. */ -public class Java12DemoLoader implements DemoLoader { +public class Java12DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { //TODO align old demos and add necessary JDKInfo.json // Java 12 -// demos.put(12, new String12Demo()); + // demos.put(12, new String12Demo()); } } diff --git a/src/main/java/org/javademos/init/Java13DemoLoader.java b/src/main/java/org/javademos/init/Java13DemoLoader.java new file mode 100644 index 00000000..6a755028 --- /dev/null +++ b/src/main/java/org/javademos/init/Java13DemoLoader.java @@ -0,0 +1,20 @@ +package org.javademos.init; + +import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; +import org.javademos.java14.jep370.ForeignMemoryAccessDemo; + +import java.util.Map; + +/** + * Loads demos for Java 13. + */ +public class Java13DemoLoader implements IDemoLoader { + + @Override + public void loadDemos(Map demos) { + //TODO add demos for java 13 + + //demos.put(123, new FutureDemo()); + } +} diff --git a/src/main/java/org/javademos/init/Java14DemoLoader.java b/src/main/java/org/javademos/init/Java14DemoLoader.java index 05737fce..5b893e84 100644 --- a/src/main/java/org/javademos/init/Java14DemoLoader.java +++ b/src/main/java/org/javademos/init/Java14DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java14.jep305.InstanceofPatternMatchingPreview; import org.javademos.java14.jep359.RecordsPreviewDemo; import org.javademos.java14.jep370.ForeignMemoryAccessDemo; @@ -10,7 +11,7 @@ /** * Loads demos for Java 14. */ -public class Java14DemoLoader implements DemoLoader { +public class Java14DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java15DemoLoader.java b/src/main/java/org/javademos/init/Java15DemoLoader.java index a7f5406a..78a48c79 100644 --- a/src/main/java/org/javademos/init/Java15DemoLoader.java +++ b/src/main/java/org/javademos/init/Java15DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java15.jep339.EdDSADemo; import org.javademos.java15.jep360.SealedClassesDemo; import org.javademos.java15.jep371.HiddenClassesDemo; @@ -16,7 +17,7 @@ /** * Loads demos for Java 15. */ -public class Java15DemoLoader implements DemoLoader { +public class Java15DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java16DemoLoader.java b/src/main/java/org/javademos/init/Java16DemoLoader.java index d15b5e16..abd15c6d 100644 --- a/src/main/java/org/javademos/init/Java16DemoLoader.java +++ b/src/main/java/org/javademos/init/Java16DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java16.jep338.VectorAPIDemo; import org.javademos.java16.jep347.Cpp14FeaturesDemo; import org.javademos.java16.jep380.UnixDomainSocketsDemo; @@ -20,7 +21,7 @@ /** * Loads demos for Java 16. */ -public class Java16DemoLoader implements DemoLoader { +public class Java16DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java17DemoLoader.java b/src/main/java/org/javademos/init/Java17DemoLoader.java index f6b3980d..9e144ccf 100644 --- a/src/main/java/org/javademos/init/Java17DemoLoader.java +++ b/src/main/java/org/javademos/init/Java17DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo; import org.javademos.java17.jep356.RandomGeneratorsDemo; import org.javademos.java17.jep382.MacosRenderingPipelineDemo; @@ -21,7 +22,7 @@ /** * Loads demos for Java 17. */ -public class Java17DemoLoader implements DemoLoader { +public class Java17DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java18DemoLoader.java b/src/main/java/org/javademos/init/Java18DemoLoader.java index 72616d89..cb709ac5 100644 --- a/src/main/java/org/javademos/init/Java18DemoLoader.java +++ b/src/main/java/org/javademos/init/Java18DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java18.jep400.DefaultUTF8Demo; import org.javademos.java18.jep408.SimpleWebServerDemo; import org.javademos.java18.jep413.CodeSnippetsInJavadoc; @@ -16,7 +17,7 @@ /** * Loads demos for Java 18. */ -public class Java18DemoLoader implements DemoLoader { +public class Java18DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java19DemoLoader.java b/src/main/java/org/javademos/init/Java19DemoLoader.java index 35c1c525..42e8b63d 100644 --- a/src/main/java/org/javademos/init/Java19DemoLoader.java +++ b/src/main/java/org/javademos/init/Java19DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java19.jep405.RecordPatterns; import org.javademos.java19.jep422.LinuxRiscVPort; import org.javademos.java19.jep424.ForeignFunctionMemoryDemo; @@ -14,7 +15,7 @@ /** * Loads demos for Java 19. */ -public class Java19DemoLoader implements DemoLoader { +public class Java19DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java20DemoLoader.java b/src/main/java/org/javademos/init/Java20DemoLoader.java index 7bd92a37..5e9dd216 100644 --- a/src/main/java/org/javademos/init/Java20DemoLoader.java +++ b/src/main/java/org/javademos/init/Java20DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java20.jep429.ScopedValuesDemo; import org.javademos.java20.jep432.RecordPatterns; import org.javademos.java20.jep433.PatternMatchingForSwitchFourthPreview; @@ -14,7 +15,7 @@ /** * Loads demos for Java 20. */ -public class Java20DemoLoader implements DemoLoader { +public class Java20DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java21DemoLoader.java b/src/main/java/org/javademos/init/Java21DemoLoader.java index e711d330..27c23bd6 100644 --- a/src/main/java/org/javademos/init/Java21DemoLoader.java +++ b/src/main/java/org/javademos/init/Java21DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java21.jep430.StringTemplatesDemo; import org.javademos.java21.jep431.SequencedCollectionsDemo; import org.javademos.java21.jep439.GenerationalZGC21; @@ -22,7 +23,7 @@ /** * Loads demos for Java 21. */ -public class Java21DemoLoader implements DemoLoader { +public class Java21DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java22DemoLoader.java b/src/main/java/org/javademos/init/Java22DemoLoader.java index a2b3f41e..72ab16fd 100644 --- a/src/main/java/org/javademos/init/Java22DemoLoader.java +++ b/src/main/java/org/javademos/init/Java22DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java22.jep423.RegionPinningForG1; import org.javademos.java22.jep447.StatementsBeforeSuper; import org.javademos.java22.jep454.ForeignFunctionMemoryDemo; @@ -19,7 +20,7 @@ /** * Loads demos for Java 22. */ -public class Java22DemoLoader implements DemoLoader { +public class Java22DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java23DemoLoader.java b/src/main/java/org/javademos/init/Java23DemoLoader.java index 8d5b1608..d397bde6 100644 --- a/src/main/java/org/javademos/init/Java23DemoLoader.java +++ b/src/main/java/org/javademos/init/Java23DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java23.jep455.PrimitiveTypesInPatterns; import org.javademos.java23.jep466.ClassFileAPIDemo; import org.javademos.java23.jep467.MarkdownComments; @@ -19,7 +20,7 @@ /** * Loads demos for Java 23. */ -public class Java23DemoLoader implements DemoLoader { +public class Java23DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java24DemoLoader.java b/src/main/java/org/javademos/init/Java24DemoLoader.java index 45e36e05..07b832fa 100644 --- a/src/main/java/org/javademos/init/Java24DemoLoader.java +++ b/src/main/java/org/javademos/init/Java24DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java24.jep404.GenerationalShenandoahExperimental; import org.javademos.java24.jep450.CompactObjectHeadersExperimental; import org.javademos.java24.jep472.PrepareToRestrictJNI; @@ -30,7 +31,7 @@ /** * Loads demos for Java 24. */ -public class Java24DemoLoader implements DemoLoader { +public class Java24DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/init/Java25DemoLoader.java b/src/main/java/org/javademos/init/Java25DemoLoader.java index 5fb0993b..3aca36bc 100644 --- a/src/main/java/org/javademos/init/Java25DemoLoader.java +++ b/src/main/java/org/javademos/init/Java25DemoLoader.java @@ -1,6 +1,7 @@ package org.javademos.init; import org.javademos.commons.IDemo; +import org.javademos.commons.IDemoLoader; import org.javademos.java25.jep470.PemEncodingsDemo; import org.javademos.java25.jep502.StableValuesDemo; import org.javademos.java25.jep503.Remove32BitX86Demo; @@ -25,7 +26,7 @@ /** * Loads demos for Java 25. */ -public class Java25DemoLoader implements DemoLoader { +public class Java25DemoLoader implements IDemoLoader { @Override public void loadDemos(Map demos) { diff --git a/src/main/java/org/javademos/java12/String12Demo.java b/src/main/java/org/javademos/java12/extras/String12Demo.java similarity index 98% rename from src/main/java/org/javademos/java12/String12Demo.java rename to src/main/java/org/javademos/java12/extras/String12Demo.java index 85acb773..7c04583e 100644 --- a/src/main/java/org/javademos/java12/String12Demo.java +++ b/src/main/java/org/javademos/java12/extras/String12Demo.java @@ -1,4 +1,4 @@ -package org.javademos.java12; +package org.javademos.java12.extras; import org.javademos.commons.IDemo; From c6d12b896b40cca7b110a5c6ad7150eaf04a5e84 Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Mon, 27 Oct 2025 09:54:17 +0100 Subject: [PATCH 8/8] merge: merge conflict add jep 377 --- src/main/java/org/javademos/init/Java15DemoLoader.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/javademos/init/Java15DemoLoader.java b/src/main/java/org/javademos/init/Java15DemoLoader.java index 78a48c79..1ff1bd02 100644 --- a/src/main/java/org/javademos/init/Java15DemoLoader.java +++ b/src/main/java/org/javademos/init/Java15DemoLoader.java @@ -8,6 +8,7 @@ import org.javademos.java15.jep372.NashornRemovalDemo; import org.javademos.java15.jep373.DatagramSocketDemo; import org.javademos.java15.jep375.InstanceofPatternMatchingSecondPreview; +import org.javademos.java15.jep377.ZGarbageCollectorDemo; import org.javademos.java15.jep381.SolarisSparcRemovalDemo; import org.javademos.java15.jep383.ForeignMemoryAccessDemo; import org.javademos.java15.jep384.RecordsSecondPreviewDemo; @@ -27,6 +28,7 @@ public void loadDemos(Map demos) { demos.put(372, new NashornRemovalDemo()); demos.put(373, new DatagramSocketDemo()); demos.put(375, new InstanceofPatternMatchingSecondPreview()); + demos.put(377, new ZGarbageCollectorDemo()); demos.put(381, new SolarisSparcRemovalDemo()); demos.put(383, new ForeignMemoryAccessDemo()); demos.put(384, new RecordsSecondPreviewDemo());