From d34e397c1269a4a7c24c85701d63b4d7b344606e Mon Sep 17 00:00:00 2001 From: Alexander Shnaider Date: Sat, 25 Oct 2025 23:06:56 +0200 Subject: [PATCH] feat(jdk17): add jep 398 Deprecate the Applet API for Removal demo --- src/main/java/org/javademos/init/Java17.java | 3 ++ .../DeprecateAppletApiForRemovalDemo.java | 28 +++++++++++++++++++ src/main/resources/JDK17Info.json | 8 ++++++ 3 files changed, 39 insertions(+) create mode 100644 src/main/java/org/javademos/java17/jep398/DeprecateAppletApiForRemovalDemo.java diff --git a/src/main/java/org/javademos/init/Java17.java b/src/main/java/org/javademos/init/Java17.java index 8f2f1a8e..8bbecd99 100644 --- a/src/main/java/org/javademos/init/Java17.java +++ b/src/main/java/org/javademos/init/Java17.java @@ -7,6 +7,7 @@ import org.javademos.java17.jep306.RestoreAlwaysStrictFloatingPointSemanticsDemo; 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; @@ -38,6 +39,8 @@ public static ArrayList getDemos() { java17DemoPool.add(new MacosRenderingPipelineDemo()); // JEP 391 java17DemoPool.add(new MacOsAarch64PortDemo()); + // JEP 398 + java17DemoPool.add(new DeprecateAppletApiForRemovalDemo()); // JEP 403 java17DemoPool.add(new StronglyEncapsulateInternalsDemo()); // JEP 406 diff --git a/src/main/java/org/javademos/java17/jep398/DeprecateAppletApiForRemovalDemo.java b/src/main/java/org/javademos/java17/jep398/DeprecateAppletApiForRemovalDemo.java new file mode 100644 index 00000000..0384e9b5 --- /dev/null +++ b/src/main/java/org/javademos/java17/jep398/DeprecateAppletApiForRemovalDemo.java @@ -0,0 +1,28 @@ +package org.javademos.java17.jep398; + +import org.javademos.commons.IDemo; + +/// Demo for JDK 17 feature JEP 398 - Deprecate the Applet API for Removal. +/// +/// JEP history: +/// - JDK 17: [JEP 398 - Deprecate the Applet API for Removal](https://openjdk.org/jeps/398) +/// - JDK 9: [JEP 289 - Deprecate the Applet API](https://openjdk.org/jeps/289) (Initial step) +/// +/// Further reading: +/// - [Java applet - wiki page](https://en.wikipedia.org/wiki/Java_applet) +/// +/// @author Alexander Schneider @ab-schneider +public class DeprecateAppletApiForRemovalDemo implements IDemo { + @Override + public void demo() { + info(398); + + // The Applet API (java.applet.Applet) existed to run Java code inside browsers via the NPAPI plug-in. + // As all major browsers removed NPAPI (Chrome 2015, Firefox 2017, Edge never), + // the API became unusable: deprecated in JDK 9 (JEP 289), marked for removal in JDK 17 (JEP 398), + // and removed in JDK 26 (JEP 504). + // + // In case remaining uses of these APIs do exist, developers can suppress compiler warnings + // via the @SuppressWarnings("removal") annotation or the -Xlint:-removal command-line option of the javac compiler. + } +} diff --git a/src/main/resources/JDK17Info.json b/src/main/resources/JDK17Info.json index afd8556d..7ad35825 100644 --- a/src/main/resources/JDK17Info.json +++ b/src/main/resources/JDK17Info.json @@ -23,6 +23,14 @@ "link": false, "code": false }, + { + "jep": 398, + "jdk": 17, + "name": "JEP 398 - Deprecate the Applet API for Removal", + "dscr": "Deprecate the Applet API for removal. It is essentially irrelevant since all web-browser vendors have removed support for Java browser plug-ins", + "link": false, + "code": false + }, { "jep": 403, "jdk": 17,