Skip to content
Merged
3 changes: 3 additions & 0 deletions src/main/java/org/javademos/init/Java17.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -34,6 +35,8 @@ public static ArrayList<IDemo> 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
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/org/javademos/java17/jep356/RandomGenerators17.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
5 changes: 5 additions & 0 deletions src/main/resources/JDK17Info.json
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down