diff --git a/src/main/java/org/javademos/init/Java15.java b/src/main/java/org/javademos/init/Java15.java index b7ee316c..d4f8299d 100644 --- a/src/main/java/org/javademos/init/Java15.java +++ b/src/main/java/org/javademos/init/Java15.java @@ -7,6 +7,7 @@ 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.jep381.SolarisSparcRemovalDemo; import org.javademos.java15.jep383.ForeignMemoryAccessDemo; @@ -29,6 +30,8 @@ public static ArrayList getDemos() { java15DemoPool.add(new HiddenClassesDemo()); // JEP 372 java15DemoPool.add(new NashornRemovalDemo()); + // JEP 373 + java15DemoPool.add(new DatagramSocketDemo15()); // JEP 375 java15DemoPool.add(new InstanceofPatternMatchingSecondPreview()); // JEP 381 diff --git a/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java b/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java new file mode 100644 index 00000000..e37482a0 --- /dev/null +++ b/src/main/java/org/javademos/java15/jep373/DatagramSocketDemo15.java @@ -0,0 +1,39 @@ +package org.javademos.java15.jep373; + +import org.javademos.commons.IDemo; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +/// Demo for JDK 15 feature JEP 373 - Reimplement the Legacy DatagramSocket API. +/// +/// This JEP modernized the implementation of the legacy DatagramSocket +/// and DatagramSocketImpl APIs without changing their behavior. +/// The reimplementation uses java.nio infrastructure under the hood, +/// improving maintainability and performance. +/// +/// JEP link: +/// - [JEP 373 - Reimplement the Legacy DatagramSocket API](https://openjdk.org/jeps/373) +/// +/// +/// @author sayiamarora +public class DatagramSocketDemo15 implements IDemo { + + @Override + public void demo() { + info(373); + + try (DatagramSocket socket = new DatagramSocket()) { + String message = "Hello from JEP 373!"; + byte[] buffer = message.getBytes(); + + InetAddress address = InetAddress.getLocalHost(); + DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, 9999); + socket.send(packet); + + System.out.println("Datagram sent successfully using reimplemented API!"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/resources/JDK15Info.json b/src/main/resources/JDK15Info.json index 8183c2dd..829e86f2 100644 --- a/src/main/resources/JDK15Info.json +++ b/src/main/resources/JDK15Info.json @@ -31,6 +31,14 @@ "link": false, "code": false }, + { + "jep": 373, + "jdk": 15, + "name": "JEP 373 - Reimplement the Legacy DatagramSocket API", + "dscr": "Modern reimplementation of DatagramSocket and DatagramSocketImpl using java.nio for improved maintainability and performance.", + "link": false, + "code": true +}, { "jep": 375, "jdk": 15,