diff --git a/src/main/java/org/javademos/init/Java17.java b/src/main/java/org/javademos/init/Java17.java index 8f2f1a8e..578f3274 100644 --- a/src/main/java/org/javademos/init/Java17.java +++ b/src/main/java/org/javademos/init/Java17.java @@ -5,6 +5,7 @@ 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.jep403.StronglyEncapsulateInternalsDemo; @@ -34,6 +35,8 @@ public static ArrayList getDemos() { java17DemoPool.add(new J17DeprecatedDemo()); // JEP 306 java17DemoPool.add(new RestoreAlwaysStrictFloatingPointSemanticsDemo()); + // JEP 356 + java17DemoPool.add(new RandomGenerators17()); // JEP 382 java17DemoPool.add(new MacosRenderingPipelineDemo()); // JEP 391 diff --git a/src/main/java/org/javademos/java17/jep356/RandomGenerators17.java b/src/main/java/org/javademos/java17/jep356/RandomGenerators17.java new file mode 100644 index 00000000..2eddf060 --- /dev/null +++ b/src/main/java/org/javademos/java17/jep356/RandomGenerators17.java @@ -0,0 +1,36 @@ +package org.javademos.java17.jep356; + +import org.javademos.commons.IDemo; +import java.util.random.RandomGenerator; +import java.util.random.RandomGeneratorFactory; +import java.util.random.RandomGenerator.JumpableGenerator; + +/// Demo for JDK 17 feature JEP 356 - Enhanced Pseudo-Random Number Generators. +/// +/// Introduced new interfaces to improve random number generation: +/// - `RandomGenerator` and `RandomGeneratorFactory` +/// - Support for LXM family generators (`L32X64Mix`, `L64X128Mix`) +/// - Added streamable and jumpable generators for parallel computation. +/// +/// JEP link: +/// - [JEP 356 - Enhanced Pseudo-Random Number Generators](https://openjdk.org/jeps/356) +/// +/// Further reading: +/// - [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 { + + @Override + public void demo() { + info(356); + + RandomGenerator generator = RandomGenerator.getDefault(); + System.out.println("Default Random Int: " + generator.nextInt()); + System.out.println("Default Random Double: " + generator.nextDouble()); + + JumpableGenerator jumpable = + (JumpableGenerator) RandomGeneratorFactory.of("Xoshiro256PlusPlus").create(); + System.out.println("Jumpable Random Int: " + jumpable.nextInt()); + } +} diff --git a/src/main/resources/JDK17Info.json b/src/main/resources/JDK17Info.json index afd8556d..e2ca9b74 100644 --- a/src/main/resources/JDK17Info.json +++ b/src/main/resources/JDK17Info.json @@ -7,6 +7,11 @@ "link": false, "code": true }, + { + "number": 356, + "name": "Enhanced Pseudo-Random Number Generators", + "description": "New interfaces and implementations in java.util.random for flexible and stream-based random number generation." +}, { "jep": 382, "jdk": 17,