diff --git a/Doc/Sd1/appendix.xml b/Doc/Sd1/appendix.xml
index c0a04282034e87b1ca907954d0f0df5cfb39a87a..1d59125f48ff563bd2cc14ac28e65104063a816a 100644
--- a/Doc/Sd1/appendix.xml
+++ b/Doc/Sd1/appendix.xml
@@ -660,7 +660,7 @@ APPID=7cufdhdcgdhsgdhgfcgsdss67b3&amp;units=metric&amp;<emphasis role="red">id=3
         <title>ma/Copy URL result to file</title>
 
         <programlisting language="java">FileUtils.<link
-            xlink:href="https://commons.apache.org/proper/commons-io/javadocs/api-2.6/org/apache/commons/io/FileUtils.html#copyURLToFile-java.net.URL-java.io.File-">copyURLToFile</link>(
+            xlink:href="https://commons.apache.org/proper/commons-io/javadocs/api-2.6/org/apache/commons/io/FileUtils.html#copyURLToFile(java.net.URL,java.io.File)">copyURLToFile</link>(
   "https://api.openweathermap.org/data/2.5/forecast...",
   new File("weatherData.json"));</programlisting>
 
@@ -1405,9 +1405,9 @@ Your choice: 2</screen>
 
           <para><xref linkend="glo_Java"/> allows for matching strings by
           <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html">regular
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html">regular
           expressions</link> to be used with e.g. <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#matches(java.lang.String)">String.matches(...)</link>.
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#matches(java.lang.String)">String.matches(...)</link>.
           Examples:</para>
 
           <glosslist>
@@ -1467,7 +1467,7 @@ Eve,Gardener, ,32-44-2234</screen>
       <para>Each person record is being represented by four values being
       separated by three commas. Empty attribute values require a single
       space. The method <link
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#split(java.lang.String)">String.split(...)</link>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#split(java.lang.String)">String.split(...)</link>
       is your friend when reading this file on program startup using
       <quote>,</quote> as separator split token.</para>
 
@@ -1740,8 +1740,8 @@ The red cross acts worldwide</screen>
           <listitem xml:id="sd1ProjectGrepUnitTestingHint">
             <para>Testing requires capturing of output being generated by e.g.
             <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</methodname><code>.</code><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println(java.lang.String)">println(...)</methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</methodname><code>.</code><methodname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">println(...)</methodname>
             calls. Consider the following code writing the string <quote>Hello
             World!</quote> to standard output:</para>
 
@@ -1760,13 +1760,13 @@ The red cross acts worldwide</screen>
             xlink:href="https://stackoverflow.com/questions/1119385/junit-test-for-system-out-println">http://stackoverflow.com/questions/1119385/junit-test-for-system-out-println</uri>
             we redefine the standard output stream by a private instance of
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/ByteArrayOutputStream.html">java.io.ByteArrayOutputStream</classname>.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/ByteArrayOutputStream.html">java.io.ByteArrayOutputStream</classname>.
             Due to <productname>Junit</productname>'s <classname
             xlink:href="http://junit.sourceforge.net/javadoc/org/junit/Before.html">@Before</classname>
             and <classname
             xlink:href="http://junit.sourceforge.net/javadoc/org/junit/After.html">@After</classname>
             annotations this instance replaces <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</classname>
             during our tests:</para>
 
             <programlisting language="java">import java.io.ByteArrayOutputStream;
@@ -1849,7 +1849,7 @@ public class AppTest {
 value | t| t| f| f| t| f| t| f| t| t|  t|  f|  t|  f|  t ...</screen>
 
       <para>Since we intend to deal with a large number <code
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
       of values (rather than just 100 ) we only consider odd values since even
       numbers are never prime except for the value 2. Thus 0 will represent 1,
       1 will represent 3 and n will represent 2 * n + 1:</para>
@@ -1861,7 +1861,7 @@ represents | 1| 3| 5| 7| 9| 11| 13| 15| ...
 value      | t| f| f| f| t|  f|  f|  t| ...</screen>
 
       <para>This requires a boolean array of just <code
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE
       / 2</code>. Start from the following skeleton:</para>
 
       <programlisting language="java">public class Sieve {
@@ -1899,7 +1899,7 @@ value      | t| f| f| f| t|  f|  f|  t| ...</screen>
         sieve algorithm</link> into smaller tasks and write appropriate tests.
         Start with small <code language="java">limit</code> values (like 20)
         and extend to <code
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
         step by step.</para>
       </tip>
 
diff --git a/Doc/Sd1/arrays.xml b/Doc/Sd1/arrays.xml
index f359765349f41276495b2189c5a2ad0ef2fdd4ad..e5e334b7b5565bbdfb20b7ea3a469f5da8c2f97b 100644
--- a/Doc/Sd1/arrays.xml
+++ b/Doc/Sd1/arrays.xml
@@ -748,7 +748,7 @@ Mark|frequency
                 be achieved using:</para>
 
                 <para><programlisting language="java">int value = <link
-                      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#valueOf(java.lang.String)">Integer.valueOf()</link></programlisting></para>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#valueOf(java.lang.String)">Integer.valueOf()</link></programlisting></para>
               </listitem>
 
               <listitem>
@@ -860,14 +860,14 @@ Mark|frequency
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#toCharArray--">toCharArray()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#toCharArray()">toCharArray()</methodname>
                 allows for de-composing a String into a corresponding array of
                 char values.</para>
               </listitem>
 
               <listitem>
                 <para>Normalize strings with respect to case using <methodname
-                xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#toLowerCase--">toLowerCase(...)</methodname>.</para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#toLowerCase()">toLowerCase(...)</methodname>.</para>
               </listitem>
             </orderedlist>
           </tip>
@@ -1026,7 +1026,7 @@ final String shapes[] = {"Triangle", "Circle"};</programlisting>
           <question>
             <para>This exercise aims at a better understanding of <code
             language="java">System.out.<link
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</link></code>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</link></code>
             already being used in <xref
             linkend="sd1QandaSquareNumberTableFormatted"/> and other
             exercises. Consider the following snippet:</para>
@@ -1088,18 +1088,18 @@ System.out.format("An integer %3d and a double value %6.2f\n",
                 <para>At first sight these method calls appear as if the
                 format() method had been multiply overloaded. This observation
                 is misleading despite the fact that a related <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#format(java.util.Locale,java.lang.String,java.lang.Object...)">overloaded
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.util.Locale,java.lang.String,java.lang.Object...)">overloaded
                 method</link> providing an additional locale argument does
                 indeed exist.</para>
 
                 <para>According to <code
                 language="java">System.out.<methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format(...)</methodname></code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format(...)</methodname></code>
                 the first argument must be of type <code language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</code>.
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</code>.
                 Additional arguments of <emphasis>arbitrary</emphasis> type
                 may be added in accordance with the <quote>%...</quote> <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Formatter.html#syntax">format
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Formatter.html#syntax">format
                 strings</link> inside the first argument. These arguments are
                 being passed as instances of <classname>Object</classname>.
                 The <methodname>format(...)</methodname> method uses the
@@ -1170,7 +1170,7 @@ java.util.IllegalFormatConversionException: <emphasis role="bold">d != java.lang
 
   <section xml:id="sd1_array_sect_classArraysHelper">
     <title><classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">java.util.Arrays</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">java.util.Arrays</classname>
     helpers</title>
 
     <info>
@@ -1185,11 +1185,11 @@ java.util.IllegalFormatConversionException: <emphasis role="bold">d != java.lang
 
     <figure xml:id="sd1_array_fig_arraysToStringSort">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#toString(java.lang.Object%5B%5D)">toString(...)</methodname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#toString(java.lang.Object%5B%5D)">toString(...)</methodname>
       and <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">sort(...)</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">sort(...)</methodname></title>
 
       <programlisting language="java">final String[] names = {"Eve", "Aaron", "Paul", "Mandy"};
 
@@ -1207,8 +1207,8 @@ sort|toString: [Aaron, Eve, Mandy, Paul]</screen>
 
     <figure xml:id="sd1_array_fig_arraysBinarySearch">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname></title>
 
       <programlisting language="java">final String[] names = {"Aaron", "Eve", "Mandy",  "Paul"};
 
@@ -1232,8 +1232,8 @@ sort|find(Mandyer): -4</screen>
         <qandaentry>
           <question>
             <para>Read the <xref linkend="glo_Javadoc"/> of <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname>and
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname>and
             explain the three integer search result values in <xref
             linkend="sd1_array_fig_arraysBinarySearch"/>.</para>
 
@@ -1318,7 +1318,7 @@ sort|find(Mandyer): -4</screen>
 
             <para>This insertion point's index is 2 corresponding to the third
             array element. According to the <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#binarySearch(java.lang.Object%5B%5D,java.lang.Object)">binarySearch(...)</methodname>
             method's documentation this corresponds to a return value of -2 -
             1 == -3.</para>
 
@@ -1342,8 +1342,8 @@ sort|find(Mandyer): -4</screen>
 
     <figure xml:id="sd1_array_fig_arraysFill">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#fill(java.lang.Object%5B%5D,int,int,java.lang.Object)">fill(...)</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#fill(java.lang.Object%5B%5D,int,int,java.lang.Object)">fill(...)</methodname></title>
 
       <informaltable border="0">
         <colgroup width="48%"/>
@@ -1370,8 +1370,8 @@ toString: [N.N, N.N, N.N, N.N]</screen></td>
 
     <figure xml:id="sd1_array_fig_arraysCopyOf">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOfRange(T%5B%5D,int,int)">copyOfRange(...)</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#copyOfRange(T%5B%5D,int,int)">copyOfRange(...)</methodname></title>
 
       <programlisting language="none">final String[] names = {"Eve", "Aaron", "Paul", "Mandy"};
 
@@ -1387,8 +1387,8 @@ System.out.println("toString: " + Arrays.toString(lastTwoNames));</programlistin
 
     <figure xml:id="sd1_array_fig_arraysEquals">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#equals(java.lang.Object%5B%5D,java.lang.Object%5B%5D)">equals(...)</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html">Arrays</classname>.<methodname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#equals(java.lang.Object%5B%5D,java.lang.Object%5B%5D)">equals(...)</methodname></title>
 
       <programlisting language="java">final String[]
   l1 = {new String("Eve"), new String("Aaron"), 
@@ -1507,7 +1507,7 @@ Extended array: [Eve, John, Peter, Jill, <emphasis role="red">Ernest</emphasis>]
 
     <figure xml:id="sd1_array_fig_arraysExtendArrayHelper">
       <title>Using <methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOf(int%5B%5D,int)">Arrays.copyOf()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#copyOf(int%5B%5D,int)">Arrays.copyOf()</methodname></title>
 
       <programlisting language="none">public static void main(String[] args) {
     final int [] start = {1,7,-4},
@@ -3041,9 +3041,9 @@ public static boolean isPrime(final long candidate) {
                   to an arbitrary limit (say limit == 10000) and returns the
                   number of primes within [2, limit]. Measure this method's
                   execution time. You may want to consult <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#currentTimeMillis()">System.currentTimeMillis()</methodname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#currentTimeMillis()">System.currentTimeMillis()</methodname>
                   or <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#nanoTime()">System.nanoTime()</methodname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#nanoTime()">System.nanoTime()</methodname>
                   for that purpose.</para>
                 </listitem>
               </orderedlist>
@@ -3128,7 +3128,7 @@ public static boolean isPrime(final long candidate) {
 
                 <listitem>
                   <para>Executing <methodname
-                  xlink:href="P/Sd1/Prime/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/main/PrimeNumbers.html#main-java.lang.String:A-">main()</methodname>
+                  xlink:href="P/Sd1/Prime/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/main/PrimeNumbers.html#main(java.lang.String:A)">main()</methodname>
                   allows for estimating the prime number computing
                   performance:</para>
 
@@ -3278,7 +3278,7 @@ public int[] getValues() {
                   <para>You may either construct a suitable copy containing
                   the current elements yourself or get enlightened by reading
                   the <xref linkend="glo_API"/> documentation of <link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOfRange(int%5B%5D,int,int)">copyOfRange(...)</link>.</para>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#copyOfRange(int%5B%5D,int,int)">copyOfRange(...)</link>.</para>
                 </caution>
               </listitem>
 
@@ -3313,7 +3313,7 @@ for (final int i: unsortedValues) {
 
               <listitem>
                 <para>Modify your<methodname
-                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue-int-">
+                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue(int)">
                 addValue(...)</methodname> method's implementation. Though
                 there are more elaborate sorting methods available in Java
                 we'll do it the hard way ourselves in this exercise. Consider
@@ -3326,7 +3326,7 @@ store.addValue(9);
 store.addValue(3);</programlisting>
 
                 <para>Prior to inserting a new value our <methodname
-                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue-int-">addValue(...)</methodname>
+                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue(int)">addValue(...)</methodname>
                 method shall find a suitable position inside the array of
                 already added values to insert the new value. When adding the
                 last value 3 in the above example the internal array already
@@ -3443,9 +3443,9 @@ Your sample's median is: 1.0</screen>
             <orderedlist>
               <listitem>
                 <para>The <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOfRange(int%5B%5D,int,int)">copyOfRange(...)</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#copyOfRange(int%5B%5D,int,int)">copyOfRange(...)</link>
                 method in <methodname
-                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#getValues--">getValues()</methodname>
+                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#getValues()">getValues()</methodname>
                 returns that portion of our <code language="java">int[]
                 values</code> array actually been filled with data.</para>
               </listitem>
@@ -3481,7 +3481,7 @@ for (final int i: unsortedValues) {
 
               <listitem>
                 <para>Modify your<methodname
-                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue-int-">
+                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue(int)">
                 addValue(...)</methodname> method's implementation. Though
                 there are more elaborate sorting methods available in Java
                 we'll do it the hard way ourselves in this exercise. Consider
@@ -3494,7 +3494,7 @@ store.addValue(9);
 store.addValue(3);</programlisting>
 
                 <para>Prior to inserting a new value our <methodname
-                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue-int-">addValue(...)</methodname>
+                xlink:href="P/Sd1/Array/integerStoreStat/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue(int)">addValue(...)</methodname>
                 method shall find a suitable position inside the array of
                 already added values to insert the new value. When adding the
                 last value 3 in the above example the internal array already
@@ -3545,10 +3545,10 @@ values newArray  | 1| 2| F| 7| 9|  | ...</screen>
 
               <listitem>
                 <para>The constructor <methodname
-                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#IntegerStore-int:A-">public
+                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#IntegerStore(int:A)">public
                 IntegerStore(final int[] values)</methodname> internally uses
                 our <methodname
-                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue-int-">addValue(...)</methodname>
+                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#addValue(int)">addValue(...)</methodname>
                 method thus adding each array value one by one. Consider an
                 alternative naive implementation:</para>
 
@@ -3598,13 +3598,13 @@ public void testMedian() {
 
               <listitem>
                 <para><methodname
-                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#getMedian--">double
+                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/IntegerStore.html#getMedian()">double
                 getMedian()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/main/Driver.html#main-java.lang.String:A-">main(...)</methodname></para>
+                xlink:href="P/Sd1/Array/integerStoreMedianAnswer/target/site/apidocs/de/hdm_stuttgart/mi/sd1/main/Driver.html#main(java.lang.String:A)">main(...)</methodname></para>
               </listitem>
             </orderedlist>
           </answer>
diff --git a/Doc/Sd1/collections.xml b/Doc/Sd1/collections.xml
index 3b1958e28caf2910da59db61276b7e7a3fb511b9..70fb45dafcd5f6cf43977cdbc0566d6782a42e19 100644
--- a/Doc/Sd1/collections.xml
+++ b/Doc/Sd1/collections.xml
@@ -86,18 +86,18 @@
 
     <section xml:id="sd1Collection2exerciseSetString">
       <title>A <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
       of Strings</title>
 
       <qandaset defaultlabel="qanda" xml:id="sd1QandaSetString">
         <title>Inserting strings into a <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>.</title>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>.</title>
 
         <qandadiv>
           <qandaentry>
             <question>
               <para>Create a <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
               of String instances including duplicates. Iterate over this set
               and write each value to <code
               language="java">System.out</code>:</para>
@@ -150,18 +150,18 @@ Eve</screen>
 
     <section xml:id="sd1CollectionExerciseListString">
       <title>A <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html">List</classname>
       of Strings</title>
 
       <qandaset defaultlabel="qanda" xml:id="sd1QandaListString">
         <title>Inserting strings into a <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname>.</title>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html">List</classname>.</title>
 
         <qandadiv>
           <qandaentry>
             <question>
               <para>Create a <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html">List</classname>
               of String instances including duplicates. Iterate over this list
               and write each value to <code
               language="java">System.out</code>:</para>
@@ -234,9 +234,9 @@ Jim</screen>
 
               <para>Provide an appropriate constructor and override both
               <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString()">toString()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>
               and <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
               to allow execution of:</para>
 
               <programlisting language="java">// Defining and testing integer coordinates
@@ -300,20 +300,20 @@ c12.equals("dummy"):false
 
     <section xml:id="sd1SetCoordinate">
       <title>A <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
       of Coordinate instances</title>
 
       <qandaset defaultlabel="qanda" xml:id="sd1QandaSetCoordinate">
         <title>Inserting <link
         linkend="sd1CollectionDefCoordinate"><classname>Coordinate</classname></link>
         instances into a <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>.</title>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>.</title>
 
         <qandadiv>
           <qandaentry>
             <question>
               <para>Create a <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
               of <link
               linkend="sd1CollectionDefCoordinate"><classname>Coordinate</classname></link>
               instances including duplicates. Iterate over this set and write
@@ -354,9 +354,9 @@ for (final Coordinate c : points) {
 (1|2)</screen>
 
               <para>This is due to our own fault not providing a <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">hashCode()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</methodname>
               implementation being compatible to our overridden <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
               method. Consider:</para>
 
               <programlisting language="java">final Coordinate
@@ -376,21 +376,21 @@ System.out.println("c12.hashCode() and c12Duplicate.hashCode():"+
               xlink:href="http://tutorials.jenkov.com/java-collections/hashcode-equals.html">Java
               Collections - hashCode() and equals()</link>. The values
               actually stem from <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">hashCode()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</methodname>
               being defined in our superclass <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname>.</para>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.</para>
 
               <para>The former exercise <xref linkend="sd1QandaSetString"/>
               involved instances of class String having well defined
               <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
               and <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#hashCode()">hashCode()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#hashCode()">hashCode()</methodname>
               implementations. To resolve this issue we thus have to override
               not just <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
               but <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">hashCode()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</methodname>
               as well:</para>
 
               <programlisting language="java">public class Coordinate {
@@ -427,7 +427,7 @@ System.out.println("c12.hashCode() and c12Duplicate.hashCode():"+
 
     <section xml:id="sd1CollectionExerciseWordSearch">
       <title>Getting a <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
       of strings from a text file</title>
 
       <qandaset defaultlabel="qanda" xml:id="sd1QandaWordSearch">
@@ -496,7 +496,7 @@ System.out.println("c12.hashCode() and c12Duplicate.hashCode():"+
                   <emphasis role="bold"><code>.,:;?!"</code></emphasis> or
                   white space characters may be achieved by means of
                   <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#split(java.lang.String)">split(...)</methodname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#split(java.lang.String)">split(...)</methodname>
                   and the regular expression <code language="java">String
                   regex = "[ \t\"!?.,'´`:;]+"</code>;. This <quote>+</quote>
                   sign indicates the appearance of a succession of one ore
@@ -562,9 +562,9 @@ public void testWordSet() throws FileNotFoundException, IOException {
             <answer>
               <para>The desired result is easy to achieve by exchanging our
               <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>
               by a <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/SortedSet.html">SortedSet</classname>:</para>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/SortedSet.html">SortedSet</classname>:</para>
 
               <programlisting language="java">/**
  * The set of words found so far.
@@ -616,15 +616,15 @@ printer</screen>
               <orderedlist>
                 <listitem>
                   <para><link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Collections.html#sort(java.util.List,java.util.Comparator)">Collections.sort(</link>List&lt;String&gt;,
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collections.html#sort(java.util.List,java.util.Comparator)">Collections.sort(</link>List&lt;String&gt;,
                   <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
                   c) is your friend.</para>
                 </listitem>
 
                 <listitem>
                   <para>Defining a <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
                   class acting on strings works like:</para>
 
                   <programlisting language="java">/**
@@ -706,7 +706,7 @@ You found Pascal!"</literallayout>
                   <listitem>
                     <para>Define a class <classname>WordFrequency</classname>
                     containing a <classname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                     attribute among with an integer number representing its
                     frequency of appearance:</para>
 
@@ -733,9 +733,9 @@ public class WordFrequency {
                     any frequency value.</para>
 
                     <para>Override <methodname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals(...)</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals(...)</methodname>
                     and <methodname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">hashValue()</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashValue()</methodname>
                     accordingly.</para>
                   </listitem>
 
@@ -788,9 +788,9 @@ public class WordFrequency {
                         <para>After processing the input text file sort your
                         <code>List&lt;WordFrequency&gt;</code> by a suitable
                         <classname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator&lt;WordFrequency&gt;</classname>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator&lt;WordFrequency&gt;</classname>
                         instance by means of <methodname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Collections.html#sort(java.util.List,java.util.Comparator)">Collections.sort(...)</methodname>.</para>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collections.html#sort(java.util.List,java.util.Comparator)">Collections.sort(...)</methodname>.</para>
                       </listitem>
                     </orderedlist>
                   </listitem>
@@ -958,13 +958,13 @@ End of records</screen>
 
               <listitem>
                 <para>The constructor <link
-                xlink:href="P/Sd1/HtmlFormatting/Simple/Exercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/htmlformat/Address.html#Address-java.lang.String-int-">Address(...)</link>
+                xlink:href="P/Sd1/HtmlFormatting/Simple/Exercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/htmlformat/Address.html#Address(java.lang.String,int)">Address(...)</link>
                 does not yet parse address records but creates constant dummy
                 data instead. Use the parameter <code>csvRecord</code> to
                 actually initialize the desired address fields
                 <code>firstName</code>, <code>lastName</code>, ...,
                 <code>web</code>. Hint: You may use the <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#split(java.lang.String)">split(...)</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#split(java.lang.String)">split(...)</link>
                 method:</para>
 
                 <programlisting language="java">... = s.split("\",\"");</programlisting>
@@ -1055,7 +1055,7 @@ End of records</screen>
                       <para>This requires textually replacing special
                       characters by the above entities <abbrev>e.g.</abbrev>
                       by means of <classname>String</classname>.<methodname
-                      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#replace(java.lang.CharSequence,java.lang.CharSequence)">replace(...)</methodname>.</para>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#replace(java.lang.CharSequence,java.lang.CharSequence)">replace(...)</methodname>.</para>
                     </glossdef>
                   </glossentry>
                 </glosslist>
@@ -1108,11 +1108,11 @@ End of records</screen>
               <listitem>
                 <para>You may direct your generated HTML output to a file
                 rather than to the standard output <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</link>.
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</link>.
                 This can be achieved by opening an output <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html">PrintStream</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>
                 related to a file by means of the <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#%3Cinit%3E(java.lang.String)">PrintStream</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#%3Cinit%3E(java.lang.String)">PrintStream</methodname>
                 output filename constructor. Your resulting output may
                 transform the file <filename>addresses.txt</filename> into
                 <filename>addresses.txt.xhtml</filename>. The latter should be
@@ -1150,7 +1150,7 @@ End of records</screen>
           <question>
             <para>We want to partly implement a simplified version of
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>:</para>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html">Set</classname>:</para>
 
             <programlisting language="java">package de.hdm_stuttgart.mi.sd1.stringset;
 
@@ -1286,7 +1286,7 @@ public interface Set_String {
               <listitem>
                 <para>On lookup use hash code values prior to comparing via
                 <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
                 in order to gain performance.</para>
               </listitem>
             </orderedlist>
@@ -1373,28 +1373,28 @@ public interface Set_String {
 
     <para>A cleaner solution might conceive the above result output as a
     <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>&lt;<classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>&lt;<classname
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
     <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;.
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;.
     The set of words appearing in a text will be regarded as keys. The
     frequencies of appearance are corresponding values:</para>
 
     <informaltable border="1" width="40%">
       <tr>
         <th colspan="2"><classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>&lt;<classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>&lt;<classname
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
         <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;</th>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;</th>
       </tr>
 
       <tr>
         <th>Word (<classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>)</th>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>)</th>
 
         <th>Frequency (<classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>)</th>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>)</th>
       </tr>
 
       <tr>
@@ -1430,10 +1430,10 @@ public interface Set_String {
 
     <qandaset defaultlabel="qanda" xml:id="sde1QandaWordFreqMap">
       <title>Implementing word frequencies by <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>&lt;<classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>&lt;<classname
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
       <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;
       instances.</title>
 
       <qandadiv>
@@ -1443,10 +1443,10 @@ public interface Set_String {
             replacing your <classname
             xlink:href="P/Sd1/WordFrequency1/Solution/target/site/apidocs/de/hdm_stuttgart/mi/sd1/textstat/WordFrequency.html">WordFrequency</classname>
             object by an instance of <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>&lt;<classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>&lt;<classname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;.
             For the time being consider the output sorting order yet as
             irrelevant.</para>
           </question>
@@ -1463,7 +1463,7 @@ public interface Set_String {
     <para>The subsequent exercise is considered to be optional with respect to
     the final course's examination. It does however provide some deeper
     insight into the subject of <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>
     instances.</para>
 
     <qandaset defaultlabel="qanda" xml:id="sde1QandaWordFreqMapSortOrder">
@@ -1480,19 +1480,19 @@ public interface Set_String {
             xlink:href="https://stackoverflow.com/questions/11647889/sorting-the-mapkey-value-in-descending-order-based-on-the-value">Sorting
             the Map&lt;Key,Value&gt; in descending order based on the
             value</quote> you may create a <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname>&lt;<classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.Entry.html">Entry</classname>(&lt;<classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html">List</classname>&lt;<classname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.Entry.html">Entry</classname>(&lt;<classname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;&gt;
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;&gt;
             from your <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>&lt;<classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html">Map</classname>&lt;<classname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>,
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>&gt;
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>&gt;
             instance on demand (i.e. when sorting). Then define an appropriate
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
             class to get this list sorted.</para>
           </question>
 
diff --git a/Doc/Sd1/coreClasses.xml b/Doc/Sd1/coreClasses.xml
index 7adac727a3d5b68ed1644bf889e52b35145e5e94..9beda5d2d0316b0da221bed85ae67410a43cfa50 100644
--- a/Doc/Sd1/coreClasses.xml
+++ b/Doc/Sd1/coreClasses.xml
@@ -23,7 +23,7 @@
 
   <figure xml:id="sd1_coreclasses_fig_object">
     <title>Superclass <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname></title>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname></title>
 
     <itemizedlist>
       <listitem>
@@ -74,7 +74,7 @@
               linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-1"
               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-1-co"/>
 final String sCopy = new <link
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</link>(s); <co
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</link>(s); <co
               linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-2"
               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-2-co"/>
 System.out.println("sCopy == s: " + (sCopy == s)); <co
@@ -106,7 +106,7 @@ sCopy.equals(s): true <coref
         <para>A clone carrying the same value <code
         language="java">"Eve"</code> is being created by virtue of the
         <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
         class copy constructor.</para>
       </callout>
 
@@ -118,7 +118,7 @@ sCopy.equals(s): true <coref
       <callout arearefs="sd1_coreclasses_fig_stringCopyConstructorApiHint-4-co"
                xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-4">
         <para>But both <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
         instances carry the same value.</para>
       </callout>
     </calloutlist>
@@ -200,7 +200,7 @@ equals: true</screen></td>
 
       <listitem>
         <para>The <methodname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
         method compares two object's values.</para>
       </listitem>
     </itemizedlist>
@@ -259,7 +259,7 @@ equals: true</screen></td>
       <title>Hashing in Java and <methodname>equals()</methodname></title>
 
       <para>Method <methodname
-      xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</methodname>:
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</methodname>:
       Instance 0 ⇨ o.<methodname>hashCode()</methodname>, of type <code
       language="java">int</code>.</para>
 
@@ -447,8 +447,8 @@ equals: true</screen></td>
 
             <tip>
               <para>Excerpt from <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Object</classname>.<link
-              xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</link>:</para>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.<link
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">hashCode()</link>:</para>
 
               <blockquote>
                 <para>However, the programmer should be aware that producing
@@ -539,7 +539,7 @@ equals: true</screen></td>
             <para>It is not possible to construct a perfect
             <methodname>hashCode()</methodname> method acting on arbitrary
             strings. A Java <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             consists of individual <code language="java">char</code> elements
             each requiring two bytes. Considering strings of fixed length we
             have the following number of different strings:</para>
@@ -646,16 +646,16 @@ hashcode of BB: 2112</screen></td>
 
   <section xml:id="sw1SectionCoreClassesUsingMath">
     <title>Using class <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname></title>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">Math</classname></title>
 
     <para><classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">Math</classname>
     is yet another class belonging to the core set of the <xref
     linkend="glo_Java"/> programing language.</para>
 
     <qandaset defaultlabel="qanda" xml:id="sw1QandaCircleAreaMathPackage">
       <title>Using constants from <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">java.lang.Math</classname>.</title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">java.lang.Math</classname>.</title>
 
       <qandadiv>
         <qandaentry>
@@ -682,7 +682,7 @@ hashcode of BB: 2112</screen></td>
                 </m:math>
               </inlineequation> yourself. Actually <xref linkend="glo_Java"/>
             predefines constants in <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">java.lang.Math</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">java.lang.Math</classname>
             class. Read its documentation to rewrite your code thereby
             replacing your own variable <code language="java">pi</code>'s
             definition .</para>
@@ -706,9 +706,9 @@ hashcode of BB: 2112</screen></td>
 }</programlisting>
 
             <para>In case you bother about using the somewhat clumsy <varname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">Math.PI</varname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#PI">Math.PI</varname>
             expression rather than just using <varname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">PI</varname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#PI">PI</varname>
             itself some syntactic sugar is on offer by means of a <link
             xlink:href="https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html">static
             import</link> statement:</para>
@@ -753,12 +753,12 @@ public final class Math {
 ...</programlisting>
 
             <para>This accounts for using the expression <varname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#field.summary">Math.PI</varname>.</para>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#field.summary">Math.PI</varname>.</para>
 
             <para>The careful reader may have expected an <code
             language="java">import</code> statement in order to use the
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">Math</classname>
             class:</para>
 
             <programlisting language="java">import java.lang.<emphasis
@@ -777,9 +777,9 @@ public class CircleAreaCalculator {
 }</programlisting>
 
             <para>But since the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Class.html">Math</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html">Math</classname>
             class belongs to the <package
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-frame.html">java.lang</package>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-frame.html">java.lang</package>
             package it is present by default and does not have to be
             imported.</para>
           </answer>
@@ -940,7 +940,7 @@ public class CircleAreaCalculator {
             <methodname>mask2(String s)</methodname> employing yet not covered
             <link linkend="sw1ChapterArrays">arrays</link> being based on the
             <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#fill(char%5B%5D,char)">Arrays.fill
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#fill(char%5B%5D,char)">Arrays.fill
             (...)</methodname> library method.</para>
           </answer>
         </qandaentry>
@@ -968,8 +968,8 @@ public class CircleAreaCalculator {
 
             <tip>
               <para>The method <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/StringBuffer.html">StringBuffer</classname>.<methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/StringBuffer.html#appendCodePoint(int)">appendCodePoint</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>.<methodname
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html#appendCodePoint(int)">appendCodePoint</methodname>
               allows the conversion of integer <xref linkend="glo_unicode"/>
               values to the corresponding character sequence.</para>
             </tip>
@@ -1052,7 +1052,7 @@ public class CircleAreaCalculator {
 
                 <listitem>
                   <para>The <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   class does contain a method to retrieve a substring starting
                   and ending at given index positions. Read its documentation
                   to find it.</para>
@@ -1060,7 +1060,7 @@ public class CircleAreaCalculator {
 
                 <listitem>
                   <para>The <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   class does contain a method returning the <code
                   language="java"
                   xlink:href="https://docs.oracle.com/javase/tutorial/java/data/characters.html">char</code>
@@ -1079,9 +1079,9 @@ public class CircleAreaCalculator {
             <para>We present a step by step solution. We start by coding a
             loop creating the set of all substrings of length 13. Reading the
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             documentation the method<methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#substring(int,int)">
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#substring(int,int)">
             substring(...)</methodname> allows for accessing the set of all
             substrings of 13 adjacent digits:</para>
 
@@ -1128,7 +1128,7 @@ public class CircleAreaCalculator {
 0420752963450</screen>
 
             <para>The method <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#charAt(int)">charAt(int
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#charAt(int)">charAt(int
             index)</methodname> allows us to access each character within our
             string individually. We need to write a method which converts a
             digit like '4' to the value 4. Remember: The
@@ -1182,7 +1182,7 @@ public class CircleAreaCalculator {
             arithmetic overflow: The product 5 × 3 × 9 × 7 × 5 × 3 × 6 × 9 × 7
             × 8 × 1 × 7 × 9 is actually 2,700,507,600. This exceeds <code
             language="java"
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</code>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</code>
             of 2,147,483,647 <link
             xlink:href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html">being
             representable by a 4 byte <code language="java">int</code>
@@ -1293,9 +1293,9 @@ public class CircleAreaCalculator {
 
                 <listitem>
                   <para>Read the documentation of <link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#identityHashCode(java.lang.Object)">System.identityHashCode(Object
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#identityHashCode(java.lang.Object)">System.identityHashCode(Object
                   o)</link> and <link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">Object.hashCode()</link>.</para>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">Object.hashCode()</link>.</para>
                 </listitem>
               </itemizedlist>
             </tip>
@@ -1333,13 +1333,13 @@ b1.equals(b2): true</programlisting>
                     role="bold">"TestA" == "TestA"</emphasis>);</programlisting>
 
                 <para>The method <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#identityHashCode(java.lang.Object)">System.identityHashCode(Object
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#identityHashCode(java.lang.Object)">System.identityHashCode(Object
                 o)</link> returns <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">Object.hashCode()</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">Object.hashCode()</link>
                 rather then <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#hashCode()">String.hashCode()</link>.
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#hashCode()">String.hashCode()</link>.
                 This hash code from <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">java.lang.Object</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">java.lang.Object</link>
                 has a one to one correspondence to an object's reference and
                 thus helps to understand the underlying object
                 references:</para>
@@ -1352,7 +1352,7 @@ b1.equals(b2): true</programlisting>
                 <para><code language="java">a1</code> and <code
                 language="java">a2</code> thus likely contain an identical
                 object reference. Using the <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
                 method for comparison indeed returns <code
                 language="java">true</code>.</para>
               </callout>
@@ -1360,7 +1360,7 @@ b1.equals(b2): true</programlisting>
               <callout arearefs="answerCoStringOperatorEquality-2-co"
                        xml:id="answerCoStringOperatorEquality-2">
                 <para>Every call to the <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#%3Cinit%3E(java.lang.String)">String
                 constructor</link> will create a new string instance. Thus
                 <code language="java">b1</code> and <code
                 language="java">b2</code> will hold two distinct references
@@ -1381,7 +1381,7 @@ b1.equals(b2): true</programlisting>
                 language="java">false</code>.</para>
 
                 <para>The <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">equals()</methodname>
                 method however still returns a value of true since both
                 distinct objects carry an identical value.</para>
               </callout>
@@ -1467,7 +1467,7 @@ b1.equals(b2): true</programlisting>
             literal <code language="java">"Anton"</code> and thus both
             variables <varname>name</varname> and <varname>reference</varname>
             will be initialized to a common <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             instance:</para>
 
             <informalfigure>
@@ -1487,9 +1487,9 @@ b1.equals(b2): true</programlisting>
             <para>This time the Java compiler is unable to dynamically resolve
             the expression <code language="java">"An".concat("ton")</code> at
             compile time. Instead the method <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#concat(java.lang.String)">concat(...)</methodname>will
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#concat(java.lang.String)">concat(...)</methodname>will
             be called at runtime resulting in a second <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             instance which by coincidence contains an identical value. Thus
             <varname>name</varname> and <varname>reference</varname> point to
             different objects:</para>
@@ -1704,7 +1704,7 @@ File extension: html</screen>
                 filename path conventions read the
                 <classname>java.lang.System</classname> section of chapter 5
                 <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html">along
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html">along
                 with its API</link>. The table of system properties in <xref
                 linkend="bib_Kurniawan"/> will enable your implementation to
                 work both on Windows and non-Windows systems
@@ -1718,7 +1718,7 @@ File extension: html</screen>
                 linkend="bib_Kurniawan"/> shows an example dissecting a string
                 containing tokens being separated by space characters using
                 the <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/StringTokenizer.html">java.util.StringTokenizer</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/StringTokenizer.html">java.util.StringTokenizer</classname>
                 class. Read its documentation and learn how to specify string
                 delimiters other than default space <code language="java">'
                 '</code>. It'll allow you to dissect paths using separators
@@ -1732,18 +1732,18 @@ File extension: html</screen>
               <listitem>
                 <para>Assembling path components may be effected by either
                 using a <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/StringBuffer.html">StringBuffer</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
                 or a <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/StringJoiner.html">StringJoiner</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/StringJoiner.html">StringJoiner</classname>
                 instance. Mind the distinction between relative and absolute
                 paths!</para>
               </listitem>
 
               <listitem>
                 <para>The methods <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#indexOf(int)">indexOf(...)</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indexOf(int)">indexOf(...)</methodname>
                 and <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#substring(int,int)">substring(...)</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#substring(int,int)">substring(...)</methodname>
                 come in handy when dissecting filenames into basename and
                 extension.</para>
               </listitem>
diff --git a/Doc/Sd1/deployment.xml b/Doc/Sd1/deployment.xml
index 410c5f5863c948575af04b339070df63ac3e3a88..e1d514f44b4ef04f151aed8e6a25763b0b96c47c 100644
--- a/Doc/Sd1/deployment.xml
+++ b/Doc/Sd1/deployment.xml
@@ -53,7 +53,7 @@ public class ArrayMethodTest {
             <glosslist>
               <glossentry>
                 <glossterm><link
-                xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#swap-int:A-int:A-">swap</link></glossterm>
+                xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#swap(int:A,int:A)">swap</link></glossterm>
 
                 <glossdef>
                   <para>This effectively requires extending the concept of
@@ -89,7 +89,7 @@ public class ArrayMethodTest {
 
                       <para>You may search the <xref linkend="glo_API"/> of
                       class <classname
-                      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html">Character</classname>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Character.html">Character</classname>
                       assisting you to distinguish letters from
                       non-letters.</para>
                     </listitem>
@@ -104,14 +104,14 @@ public class ArrayMethodTest {
 
               <glossentry>
                 <glossterm><link
-                xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#containsSameElements-int:A-int:A-">containsSameElements</link></glossterm>
+                xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#containsSameElements(int:A,int:A)">containsSameElements</link></glossterm>
 
                 <glossdef>
                   <para>You may copy <code language="java">int[] b</code>
                   array to a <quote>shadow</quote> array and then subsequently
                   erase all elements of <code language="java">int[] a</code>
                   from this copy. The method <link
-                  xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#findIndex-int:A-int-">findIndex</link>
+                  xlink:href="P/Sd1/Array/arraycalcExercise/target/site/apidocs/de/hdm_stuttgart/mi/sd1/store/Arraymethods.html#findIndex(int:A,int)">findIndex</link>
                   is quite helpful.</para>
 
                   <para>Consider for example <code language="java">int[] bCopy
@@ -181,7 +181,7 @@ Your sample's median is: 6.0</screen>
                 your <code language="java">main(String [] args)</code> method.
                 These strings must be converted to integer values. This may be
                 achieved by means of <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#parseInt-java.lang.String-">parseInt(String)</methodname>.</para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#parseInt(java.lang.String)">parseInt(String)</methodname>.</para>
 
                 <para>Depending on inconsistent user input like <quote><code
                 language="java">three</code></quote> instead of <quote><code
diff --git a/Doc/Sd1/errorHandling.xml b/Doc/Sd1/errorHandling.xml
index d5509799d52559d4f064850b0872ab5dcd4b0b0f..405bd8b4f5d267bd85c5027826492ad19e9fa410 100644
--- a/Doc/Sd1/errorHandling.xml
+++ b/Doc/Sd1/errorHandling.xml
@@ -33,14 +33,14 @@ System.out.println(s.length())<co linkends="sd1_fig_compileRuntime-2"
                xml:id="sd1_fig_compileRuntime-2">
         <para>Run time error: De-referencing <code language="java">null</code>
         yields a <classname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>.</para>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>.</para>
       </callout>
     </calloutlist>
   </figure>
 
   <figure xml:id="sd1_fig_npe">
     <title><classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
     (<acronym>NPE</acronym> for short)</title>
 
     <programlisting language="java">final String s = null;
@@ -52,7 +52,7 @@ System.out.println(s.length());</programlisting>
 
   <figure xml:id="sd1_fig_npe_is_a_class">
     <title><classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
     is a class</title>
 
     <mediaobject>
@@ -68,7 +68,7 @@ System.out.println(s.length());</programlisting>
     <programlisting language="java">...
 if (somethingBadHappens) {
   throw new <link
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html#%3Cinit%3E()">NullPointerException()</link>;
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html#%3Cinit%3E()">NullPointerException()</link>;
 }
 ...</programlisting>
 
@@ -85,7 +85,7 @@ if (somethingBadHappens) {
 try {
   System.out.println(s.length()) ;
 } catch (final <link
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</link> e) {
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</link> e) {
   System.out.println("Dear user, something bad just happened");
 }
 System.out.println("Business as usual ...");</programlisting>
@@ -112,9 +112,9 @@ try {
 System.out.println("Business as usual ...");</programlisting>
 
           <para>What happens if <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
           is being replaced by <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>?</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>?</para>
 
           <para>Is there a way to catch all possible exceptions?</para>
         </question>
@@ -131,9 +131,9 @@ try {
 System.out.println("Business as usual ...");</programlisting>
 
           <para>The runtime system throws a <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
           which is no subclass of <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>:</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>:</para>
 
           <mediaobject>
             <imageobject>
@@ -142,15 +142,15 @@ System.out.println("Business as usual ...");</programlisting>
           </mediaobject>
 
           <para>If <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
           was a subclass of <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>
           it would still be caught. But lacking an (upcast) inheritance
           relationship we are being left with the runtimes default terminating
           behaviour:</para>
 
           <screen>Exception in thread "main" <link
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">java.lang.NullPointerException</link>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">java.lang.NullPointerException</link>
   at exceptionhandling.NpeMsg.main(NpeMsg.java:8)</screen>
         </answer>
       </qandaentry>
@@ -191,7 +191,7 @@ System.out.println("Business as usual ...");</programlisting>
 
   // Compile time error:
   // <emphasis role="red"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/IOException.html">Unhandled exception:
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html">Unhandled exception:
       java.io.IOException</emphasis>
   Files.copy(sourcePath, destPath);
 ...</programlisting></td>
@@ -227,15 +227,15 @@ System.out.println(s.length());</programlisting></td>
       <programlisting language="java"><link
           xlink:href="https://junit.org/junit4/javadoc/latest/org/junit/Test.html">@Test</link>(<link
           xlink:href="https://junit.org/junit4/javadoc/latest/org/junit/Test.html#expected()">expected</link> = <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>.class)
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>.class)
 public void copyFile() throws IOException {
   final Path
     source = Paths.get("/tmp/source.txt"),
     dest   = Paths.get("/tmp/dest.txt");
 
-  <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
-  <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>
+  <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
+  <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: <link
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>
 }</programlisting>
     </figure>
 
@@ -250,15 +250,15 @@ public void copyFile() throws IOException {
 
             <programlisting language="java">@Test(expected = FileAlreadyExistsException.class)
 public void copyFile() throws IOException {
-  final <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Path.html">Path</link>
+  final <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Path.html">Path</link>
     source = <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Paths.html#get(java.lang.String,java.lang.String...)">Paths.get</link>("/tmp/source.txt"),
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Paths.html#get(java.lang.String,java.lang.String...)">Paths.get</link>("/tmp/source.txt"),
     dest   = <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Paths.html#get(java.lang.String,java.lang.String...)">Paths.get</link>("/tmp/dest.txt");
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Paths.html#get(java.lang.String,java.lang.String...)">Paths.get</link>("/tmp/dest.txt");
 
-  <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
-  <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>
+  <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
+  <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: <link
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>
 }</programlisting>
 
             <para>Modify this code by catching the exception inside
@@ -273,22 +273,22 @@ public void copyFile() throws IOException {
             <programlisting language="java"><link
                 xlink:href="https://junit.org/junit4/javadoc/latest/org/junit/Test.html">@Test</link>(<link
                 xlink:href="https://junit.org/junit4/javadoc/latest/org/junit/Test.html#expected()">expected</link> = <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>.class)
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link>.class)
 public void copyFile() throws IOException {
   final Path
     source = Paths.get("/tmp/source.txt"),
     dest   = Paths.get("/tmp/dest.txt");
   try {
-    <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
-    <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: FileAlreadyExistsException
+    <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // May work.
+    <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/Files.html#copy(java.nio.file.Path,java.nio.file.Path,java.nio.file.CopyOption...)">Files.copy</link>(source, dest);  // Failure: FileAlreadyExistsException
   } catch (final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link> e) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</link> e) {
     System.out.println("Destination file already exists");
   }
 }</programlisting>
 
             <para>Since we swallow the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</classname>
             ourselves it is no longer being thrown. Due to the
             <code>@Test(expected = FileAlreadyExistsException.class)</code>
             annotation test execution now fails:</para>
@@ -296,7 +296,7 @@ public void copyFile() throws IOException {
             <screen>Destination file already exists
 
 java.lang.AssertionError: Expected exception: <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/nio/file/FileAlreadyExistsException.html">java.nio.file.FileAlreadyExistsException</link></screen>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/file/FileAlreadyExistsException.html">java.nio.file.FileAlreadyExistsException</link></screen>
           </answer>
         </qandaentry>
       </qandadiv>
@@ -311,15 +311,15 @@ java.lang.AssertionError: Expected exception: <link
       language="java">catch</code></title>
 
       <programlisting language="java"><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</link> scanner = null;
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</link> scanner = null;
 try {
   scanner = new <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/InputStream.html">Scanner(</link>System.in);
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html">Scanner(</link>System.in);
    ... // Something may fail
 } finally {
   if (null != scanner) {
     scanner.<link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#close()">close()</link>; // Clean up, save resources!
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#close()">close()</link>; // Clean up, save resources!
   }
 }</programlisting>
     </figure>
@@ -329,7 +329,7 @@ try {
       linkend="glo_Java"/> 7)</title>
 
       <programlisting language="java">try (final <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</link><co
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</link><co
           linkends="sd1_errorHandling_fig_tryWithResources-1"
           xml:id="sd1_errorHandling_fig_tryWithResources-1-co"/>  scanner<co
           linkends="sd1_errorHandling_fig_tryWithResources-2"
@@ -342,7 +342,7 @@ try {
         <callout arearefs="sd1_errorHandling_fig_tryWithResources-1-co"
                  xml:id="sd1_errorHandling_fig_tryWithResources-1">
           <para>Class must implement interface <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html">AutoCloseable</classname>.</para>
         </callout>
 
         <callout arearefs="sd1_errorHandling_fig_tryWithResources-2-co"
@@ -354,7 +354,7 @@ try {
         <callout arearefs="sd1_errorHandling_fig_tryWithResources-3-co"
                  xml:id="sd1_errorHandling_fig_tryWithResources-3">
           <para><methodname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#close()">close()</methodname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#close()">close()</methodname>
           method will be called automatically before leaving block
           scope.</para>
         </callout>
@@ -364,11 +364,11 @@ try {
 
   <section xml:id="sd1_errorhandling_sect_classException">
     <title>Class <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/index.html?java/io/File.html">java.lang.Exception</classname></title>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/index.html?java/io/File.html">java.lang.Exception</classname></title>
 
     <figure xml:id="sd1_errorHandling_fig_stackTrace">
       <title>Method <methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Throwable.html#printStackTrace()">printStackTrace()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html#printStackTrace()">printStackTrace()</methodname></title>
 
       <informaltable border="0">
         <tr>
@@ -388,7 +388,7 @@ public class StackTrace {
 }</programlisting></td>
 
           <td valign="top"><screen>Exception in thread "main"
-   <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">java.lang.NullPointerException</link>
+   <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">java.lang.NullPointerException</link>
  at ex.Trace.c(Trace.java:10)
  at ex.Trace.b(Trace.java:7)
  at ex.Trace.a(Trace.java:6)
@@ -403,17 +403,17 @@ public class StackTrace {
       <informaltable border="0">
         <tr>
           <td valign="top"><programlisting language="java">try {
-  <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileInputStream.html">FileInputStream</link> f = new <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileInputStream.html#%3Cinit%3E(java.io.File)">FileInputStream(
+  <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileInputStream.html">FileInputStream</link> f = new <link
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileInputStream.html#%3Cinit%3E(java.io.File)">FileInputStream(
      new File("test.txt"))</link>;
 } catch(final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</link> e) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileNotFoundException.html">FileNotFoundException</link> e) {
   System.err.println( "File not found");
 } catch (final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/IOException.html">IOException</link> e) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html">IOException</link> e) {
   System.err.println( "IO error");
 } catch(final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Exception.html">Exception</link> e) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html">Exception</link> e) {
   System.err.println("General error");
 }</programlisting></td>
 
@@ -433,15 +433,15 @@ public class StackTrace {
         <tr>
           <td valign="top"><programlisting language="none">try {
   FileInputStream f = new <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileInputStream.html">FileInputStream</link>(
-     new <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/File.html#%3Cinit%3E(java.lang.String)">File("test.txt"))</link>;
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileInputStream.html">FileInputStream</link>(
+     new <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html#%3Cinit%3E(java.lang.String)">File("test.txt"))</link>;
 } catch(Exception e) {
       System.err.println("General error");
 } catch (<emphasis role="red"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/IOException.html">IOException e</emphasis>) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html">IOException e</emphasis>) {
       System.err.println( "IO error");
 } catch(<emphasis role="red"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException e</emphasis>) {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileNotFoundException.html">FileNotFoundException e</emphasis>) {
       System.err.println("File not found");
 }</programlisting></td>
 
@@ -515,7 +515,7 @@ static public String convert(final String input) {
 
         <listitem>
           <para>Use <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/IllegalArgumentException.html">IllegalArgumentException</classname>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html">IllegalArgumentException</classname>.</para>
         </listitem>
       </itemizedlist>
     </figure>
@@ -525,10 +525,10 @@ static public String convert(final String input) {
 
       <programlisting language="java">public class CardinalException
   extends <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/IllegalArgumentException.html">IllegalArgumentException</link> {
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html">IllegalArgumentException</link> {
 
   public CardinalException(final String msg) {
-    <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/IllegalArgumentException.html#%3Cinit%3E(java.lang.String)">super(msg)</link>;
+    <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/IllegalArgumentException.html#%3Cinit%3E(java.lang.String)">super(msg)</link>;
   }
 }</programlisting>
     </figure>
diff --git a/Doc/Sd1/gettingStarted.xml b/Doc/Sd1/gettingStarted.xml
index a235f55be643ef23d261dc5b9349ff2874dd69e6..aea3210fb540235b7ff9f3687272bbb5806cd762 100644
--- a/Doc/Sd1/gettingStarted.xml
+++ b/Doc/Sd1/gettingStarted.xml
@@ -1408,7 +1408,7 @@ Hello, world <co linkends="sd1QandaSnippetHelloWorldExecuteStep-2"
                   language="java">\n</code></quote> <coref
                   linkend="sd1QandaSnippetHelloWorldNewline-1-co"/> allows for
                   using just a single <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println(java.lang.String)">System.out.println("...")</methodname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">System.out.println("...")</methodname>
                   statement:</para>
 
                   <programlisting language="java">public static void main(String[] args) {
@@ -2809,7 +2809,7 @@ Generating /ma/goik/First/target/site/apidocs/help-doc.html...
 </screen>
 
         <para>See e.g. <link
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">class
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">class
         String documentation</link>.</para>
       </figure>
 
diff --git a/Doc/Sd1/inheritance.xml b/Doc/Sd1/inheritance.xml
index 61a409b085a678d353c40c66858c25d4da829783..f3ddbef3a4b5bc898e94b47bde2e53b42a2e3465 100644
--- a/Doc/Sd1/inheritance.xml
+++ b/Doc/Sd1/inheritance.xml
@@ -470,10 +470,10 @@ public <link
 
             <para>On execution the string literal "secret" will be represented
             as a <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             object in memory. Each new user input string will be represented
             as a <emphasis>different</emphasis> <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             object in memory as well.</para>
 
             <para>Unfortunately the usual <quote>==</quote> operator only
@@ -484,18 +484,18 @@ public <link
             object identity rather than object equality.</para>
 
             <para>Two different <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             instances albeit being different object instances may off course
             be equal with respect to their <quote>payload</quote> namely the
             strings they both represent. Comparing for object equality rather
             than for object identity in <xref linkend="glo_Java"/> requires
             overriding the <methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">Object.equals(Object
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">Object.equals(Object
             o)</methodname> method. This override does exist in class
             <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/String.html">String</classname>.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.
             Within the given context we may thus simply use <methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">String.equals(Object
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#equals(java.lang.Object)">String.equals(Object
             o)</methodname>:</para>
 
             <programlisting language="none">try (final Scanner scan = new Scanner(System.in)) {
@@ -526,7 +526,7 @@ public <link
             <para>The preceding exercise <xref
             linkend="sd1_qanda_stringEqualProblem"/> told us to override
             <methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">Object.equals(Object
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">Object.equals(Object
             o)</methodname> when comparing for the equality of different
             objects.</para>
 
@@ -605,7 +605,7 @@ if (day.equals(Day.FRIDAY)) ... // Oops: NPE approaching ...</programlisting>
 
     <figure xml:id="sda_inherit_fig_shapeToStringRedefine">
       <title>Overwriting <methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString--">toString()</methodname></title>
 
       <mediaobject>
         <imageobject>
@@ -728,7 +728,7 @@ if (day.equals(Day.FRIDAY)) ... // Oops: NPE approaching ...</programlisting>
         <qandaentry>
           <question>
             <para>Consider two <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
             instances:</para>
 
             <informaltable border="1">
@@ -744,7 +744,7 @@ if (day.equals(Day.FRIDAY)) ... // Oops: NPE approaching ...</programlisting>
 
               <tr>
                 <td valign="top"><programlisting language="java">final <link
-                      xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</link>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</link>
   a = new StringBuffer("test"),
   b = new StringBuffer("test");
 
@@ -782,9 +782,9 @@ System.out.println(a.equals(b));</programlisting></td>
 
             <tip>
               <para>Take a closer look at the <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html">String</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
               and <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
               <xref linkend="glo_API"/> regarding the
               <methodname>toString()</methodname> method.</para>
             </tip>
@@ -792,7 +792,7 @@ System.out.println(a.equals(b));</programlisting></td>
 
           <answer>
             <para>The <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             <xref linkend="glo_API"/> reveals:</para>
 
             <screen>public boolean equals (Object anObject)
@@ -809,22 +809,22 @@ true if the given object represents a String equivalent to this string, false ot
 
             <para>In a nutshell: Two instances of String will be compared for
             equality character by character. The superclass <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
             method is being overridden.</para>
 
             <para>In class <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
             we do not find any <methodname>equals()</methodname> method. Thus
             <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
             is not being overridden. When comparing two instances of
             <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
             effectively <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname>
             will be executed. Its <xref linkend="glo_API"/> reveals:</para>
 
             <screen>public boolean equals (Object obj)
@@ -836,7 +836,7 @@ Returns:
 true <emphasis role="red">if this object is the same as the obj argument</emphasis>; false otherwise.</screen>
 
             <para>Thus two instances of <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuffer.html">StringBuffer</classname>
             will be compared for object identity rather than representing the
             same string value.</para>
           </answer>
@@ -859,7 +859,7 @@ true <emphasis role="red">if this object is the same as the obj argument</emphas
             Start by investigating both <methodname
             xlink:href="http://www.java2s.com/Tutorial/Java/0040__Data-Type/Usingthebuiltinenumerationmethodsvalues.htm">values()</methodname>
             and <methodname
-            xlink:href="https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Enum.html#ordinal()">ordinal()</methodname>.</para>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()">ordinal()</methodname>.</para>
           </question>
 
           <answer>
@@ -1383,7 +1383,7 @@ public abstract Shape scale(double factor);</programlisting>
 
       <section xml:id="sd1SectFigureToString">
         <title>Providing <methodname
-        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname>
+        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString--">toString()</methodname>
         methods</title>
 
         <qandaset defaultlabel="qanda" xml:id="sd1QandaFigureToString">
@@ -1404,9 +1404,9 @@ System.out.println(r);</programlisting>
 de.hdm_stuttgart.mi.sd1.shape.model.Rectangle@2a139a55</screen>
 
                 <para>This result is due to the invocation of the <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString--">toString()</methodname>
                 method being defined in the <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>
                 superclass. Override this method in
                 <classname>Shape</classname>, <classname>Circle</classname>
                 and <classname>Rectangle</classname> accordingly to
@@ -1672,7 +1672,7 @@ public class Rectangle
       <blockquote>
         <note>
           <para>Prominent Example: <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">java.lang.String</classname>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">java.lang.String</classname>.</para>
         </note>
       </blockquote>
     </figure>
@@ -1798,7 +1798,7 @@ System.out.print(c.equals(c));    //<emphasis role="red">true</emphasis>: Object
 
     <figure xml:id="sd1_inherit_fig_rectangleEquals">
       <title>Implementing <classname>Rectangle</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname></title>
 
       <programlisting language="java">public class Rectangle extends Shape {
     @Override public boolean equals(Object o) {
@@ -1833,7 +1833,7 @@ System.out.print(c.equals(c));    //<emphasis role="red">true</emphasis>: Object
 String s = (String) o;</programlisting>
 
             <para>On execution we receive a <classname
-            xlink:href="https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/ClassCastException.html">java.lang.ClassCastException</classname>:</para>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ClassCastException.html">java.lang.ClassCastException</classname>:</para>
 
             <screen>Exception in thread "main" java.lang.ClassCastException: 
   class java.util.Scanner cannot be cast to class java.lang.String 
@@ -1881,7 +1881,7 @@ if (o <link xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-15
 
     <figure xml:id="sd1_inherit_fig_circleEquals">
       <title>Implementing <classname>Circle</classname>.<methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">equals()</methodname></title>
 
       <programlisting language="java">public class Circle extends Shape {
   @Override public boolean equals(final Object o) {
@@ -1925,7 +1925,7 @@ c.equals(r1): false</screen></td>
 
   <section xml:id="sd1_inherit_sect_Override">
     <title>The <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Override.html">@Override</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Override.html">@Override</classname>
     annotation.</title>
 
     <figure xml:id="sd1_inherit_fig_overrideToString">
@@ -1956,7 +1956,7 @@ c.equals(r1): false</screen></td>
 }</programlisting>
 
       <para>Explanation: The given method does not override <methodname
-      xlink:href="https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Object.html#toString()">Object.toString()</methodname>.</para>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()">Object.toString()</methodname>.</para>
     </figure>
   </section>
 </chapter>
diff --git a/Doc/Sd1/interfacesAbstractClasses.xml b/Doc/Sd1/interfacesAbstractClasses.xml
index 98f85cf0000926a85fd1939e0f2b4c7984de230e..0b94e6029559da0e70eb267abb957cf329d1f193 100644
--- a/Doc/Sd1/interfacesAbstractClasses.xml
+++ b/Doc/Sd1/interfacesAbstractClasses.xml
@@ -134,7 +134,7 @@ try (final Text2File output =
 } catch (FileNotFoundException e){...}</programlisting></td>
 
         <td valign="top"><para>Compile time error:</para><screen>Required:
-   <link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">java.lang.AutoCloseable</link>
+   <link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html">java.lang.AutoCloseable</link>
 Found:
   de.hdm_stuttgart.mi.sd1.Text2File</screen></td>
       </tr>
@@ -152,7 +152,7 @@ Found:
 
   <figure xml:id="sd1_interface_fig_AutoCloseablePromise">
     <title>The <classname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname>
+    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html">AutoCloseable</classname>
     promise</title>
 
     <informaltable border="0">
@@ -213,13 +213,13 @@ void close​() <co linkends="sd1_interface_fig_AutoCloseablePromise-2.2"
             <callout arearefs="sd1_interface_fig_AutoCloseablePromise-1-co"
                      xml:id="sd1_interface_fig_AutoCloseablePromise-1">
               <para>Promise to implement the <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html">AutoCloseable</classname>
               interface. This boils down to implement <methodname>public void
               close()</methodname> at <coref
               linkend="sd1_interface_fig_AutoCloseablePromise-3-co"/>.</para>
 
               <para>Notice the <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Override.html">@Override</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Override.html">@Override</classname>
               annotation resemblance to overriding base class methods in
               derived classes.</para>
             </callout>
@@ -240,7 +240,7 @@ void close​() <co linkends="sd1_interface_fig_AutoCloseablePromise-2.2"
               linkend="sd1_interface_fig_AutoCloseablePromise-1-co"/>.</para>
 
               <para>Caution: No <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Override.html">@Override</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Override.html">@Override</classname>
               here since close() is being implemented rather tan overriding a
               base class method not existing anyway.</para>
             </callout>
@@ -248,7 +248,7 @@ void close​() <co linkends="sd1_interface_fig_AutoCloseablePromise-2.2"
             <callout arearefs="sd1_interface_fig_AutoCloseablePromise-4-co"
                      xml:id="sd1_interface_fig_AutoCloseablePromise-4">
               <para>Closing the <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html">PrintStream</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>
               thereby flushing buffered strings prior to releasing allocated
               operating system resources.</para>
             </callout>
@@ -259,7 +259,7 @@ void close​() <co linkends="sd1_interface_fig_AutoCloseablePromise-2.2"
               language="java">null</code> causes subsequent
               <classname>Text2File</classname>.<methodname>println(...)</methodname>
               calls throwing a <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>.
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>.
               Thus silent errors become observable errors.</para>
             </callout>
           </calloutlist></td>
@@ -339,7 +339,7 @@ abstract void close​();<co
               <para>Extending <code language="java">abstract</code> class
               <classname>AutoCloseable</classname> replaces implementing the
               <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html">AutoCloseable</classname>
               interface.</para>
             </callout>
 
@@ -454,7 +454,7 @@ public interface MyFlushable extends MyAutoCloseable {
 
     <figure xml:id="sd1_fig_StringInterfaces">
       <title>Interfaces implemented by class <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname></title>
 
       <mediaobject>
         <imageobject>
@@ -465,16 +465,16 @@ public interface MyFlushable extends MyAutoCloseable {
 
     <figure xml:id="sd1_fig_InterfaceComparable">
       <title>The <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname>
       interface</title>
 
       <programlisting language="java">interface <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</link>&lt;<emphasis
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</link>&lt;<emphasis
           role="red">T</emphasis>&gt; {
 <emphasis role="red">                ┌────┘</emphasis>  
                 <emphasis role="red">â–¼</emphasis>
   int <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html#compareTo(T)">compareTo​</link>(<emphasis
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html#compareTo(T)">compareTo​</link>(<emphasis
           role="red">T</emphasis> o);
 
 }</programlisting>
@@ -482,20 +482,20 @@ public interface MyFlushable extends MyAutoCloseable {
 
     <figure xml:id="sd1_fig_StringComparable">
       <title>class <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
       and <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname></title>
 
       <programlisting language="none">public class <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</link> implements <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</link> &lt;<emphasis
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link> implements <link
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</link> &lt;<emphasis
           role="red">String</emphasis> <co
           linkends="sd1_callout_StringComparable-1"
           xml:id="sd1_callout_StringComparable-1-co"/>&gt;, ... {
   ...                           <emphasis role="red">┌────────────┘</emphasis>          
   @Override                     <emphasis role="red">â–¼</emphasis>
   public int <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#compareTo(java.lang.String)">compareTo</link>(final <emphasis
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#compareTo(java.lang.String)">compareTo</link>(final <emphasis
           role="red">String</emphasis> <co
           linkends="sd1_callout_StringComparable-2"
           xml:id="sd1_callout_StringComparable-2-co"/> other) {
@@ -508,15 +508,15 @@ public interface MyFlushable extends MyAutoCloseable {
         <callout arearefs="sd1_callout_StringComparable-1-co"
                  xml:id="sd1_callout_StringComparable-1">
           <para>Type parameter <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
           to interface <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname>.</para>
         </callout>
 
         <callout arearefs="sd1_callout_StringComparable-2-co"
                  xml:id="sd1_callout_StringComparable-2">
           <para>Matching type <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
           to type parameter in <coref
           linkend="sd1_callout_StringComparable-1-co"/>.</para>
         </callout>
@@ -618,13 +618,13 @@ System.out.println("Hannah".compareTo("Hannah")); <co
 
         <tr>
           <td valign="top"><programlisting language="java">final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</link>[] names = { <co
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link>[] names = { <co
                 linkends="sd1_callout_StringSortAscending-1"
                 xml:id="sd1_callout_StringSortAscending-1-co"/>
   "Laura", "Aaron", "Tim", "Peter", "Eve", "Bernie"
 };
 
-Arrays.<link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">sort</link>(names); <co
+Arrays.<link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">sort</link>(names); <co
                 linkends="sd1_callout_StringSortAscending-2"
                 xml:id="sd1_callout_StringSortAscending-2-co"/>
 
@@ -651,10 +651,10 @@ Tim</screen></td>
         <callout arearefs="sd1_callout_StringSortAscending-2-co"
                  xml:id="sd1_callout_StringSortAscending-2">
           <para><methodname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort</methodname>(Object[]
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort</methodname>(Object[]
           a) will rearrange the array of names alphabetically in ascending
           order as being defined by <methodname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#compareTo(java.lang.String)">String.compareTo</methodname>(String
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#compareTo(java.lang.String)">String.compareTo</methodname>(String
           anotherString), see left part of <xref
           linkend="sd1_fig_StringSortAscDesc"/>.</para>
         </callout>
@@ -669,7 +669,7 @@ Tim</screen></td>
 
     <qandaset defaultlabel="qanda" xml:id="sd1QandaArraysSortUnderstand">
       <title>Understanding <methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort()</methodname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort()</methodname></title>
 
       <qandadiv>
         <qandaentry>
@@ -693,7 +693,7 @@ Tim</screen></td>
             <para>We would like to be able sorting
             <classname>Rectangle</classname> instances by their respective
             width using <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort(Object[]
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort(Object[]
             a)</methodname>. Right now sorting does not work at all.
             Consider:</para>
 
@@ -715,11 +715,11 @@ Tim</screen></td>
 	at de.hdm_stuttgart.mi.sd1.App.main(App.java:19)</screen>
 
             <para>Why does this happen? Read <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort(Object[]
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(java.lang.Object%5B%5D)">Arrays.sort(Object[]
             a)</methodname>'s documentation and try to understand the <link
             xlink:href="http://hg.openjdk.java.net/jdk/jdk/file/300523d8b7b3/src/java.base/share/classes/java/util/ComparableTimSort.java">ComparableTimSort.java
             line 320 implementation</link> causing the above <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/ClassCastException.html">ClassCastException</classname>.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ClassCastException.html">ClassCastException</classname>.
             You don't have to understand what exactly the code does. Instead
             focus on types being involved.</para>
           </question>
@@ -736,12 +736,12 @@ Tim</screen></td>
 if ((<emphasis role="red">(Comparable) a[...]</emphasis>).compareTo(...) &lt; 0) { </programlisting>
 
             <para>This is an attempt casting an <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>
             to <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname>.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname>.
             Since our <classname>Rectangle</classname> class does not yet
             implement the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname>
             interface this cast is bound to fail.</para>
           </answer>
         </qandaentry>
@@ -757,10 +757,10 @@ if ((<emphasis role="red">(Comparable) a[...]</emphasis>).compareTo(...) &lt; 0)
           <question>
             <para>Correct <xref linkend="sd1QandaArraysSortUnderstand"/> by
             implementing the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable</classname>
             interface in <classname>Rectangle</classname>. More precisely use
             the underlying type parameter <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html">Comparable&lt;Rectangle&gt;</classname>.
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html">Comparable&lt;Rectangle&gt;</classname>.
             Thus is an anticipation of upcoming <xref linkend="glo_Java"/>
             <link
             xlink:href="https://docs.oracle.com/javase/tutorial/java/generics">generics</link>.</para>
@@ -769,7 +769,7 @@ if ((<emphasis role="red">(Comparable) a[...]</emphasis>).compareTo(...) &lt; 0)
           <answer>
             <para>We implement the interface consisting only of one method
             <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html#compareTo(T)">compareTo(T
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html#compareTo(T)">compareTo(T
             o)</methodname> with <code language="java">T</code> representing
             the type in question:</para>
 
@@ -786,7 +786,7 @@ if ((<emphasis role="red">(Comparable) a[...]</emphasis>).compareTo(...) &lt; 0)
 }</programlisting>
 
             <para>This solves the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/ClassCastException.html">ClassCastException</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ClassCastException.html">ClassCastException</classname>
             runtime problem and sorts <classname>Rectangle</classname>
             instances by width:</para>
 
@@ -864,7 +864,7 @@ for (final Rectangle n : rectangles) {
 
           <answer>
             <para>We extend our <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Comparable.html#compareTo(T)">compareTo(T
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Comparable.html#compareTo(T)">compareTo(T
             o)</methodname> implementation accounting in case of common width
             values:</para>
 
@@ -935,12 +935,12 @@ ATM</screen></td>
       <title>Implementing flexible sorting</title>
 
       <para>Solution: Provide your own <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>!</para>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>!</para>
 
       <programlisting language="none">import java.util.Comparator;
 
 public class SortCaseInsensitive implements <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</link>&lt;<emphasis
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</link>&lt;<emphasis
           role="red">String</emphasis>&gt; {
                               <emphasis role="red">┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┛</emphasis>
   @Override                   <emphasis role="red">â–¼              â–¼</emphasis>
@@ -954,7 +954,7 @@ public class SortCaseInsensitive implements <link
 
     <figure xml:id="sd1_fig_StringComparatorDemo">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
       in action</title>
 
       <informaltable border="0">
@@ -982,14 +982,14 @@ System.out.println(new SortCaseInsensitive(). <co
         <callout arearefs="sd1_callout_StringComparatorDemo-1-co"
                  xml:id="sd1_callout_StringComparatorDemo-1">
           <para>Standard <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
           comparison.</para>
         </callout>
 
         <callout arearefs="sd1_callout_StringComparatorDemo-2-co"
                  xml:id="sd1_callout_StringComparatorDemo-2">
           <para>Custom <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
           evaluating <code language="java">"hello".compareTo(<emphasis
           role="red">"uk"</emphasis>)</code> behind the scenes.</para>
         </callout>
@@ -998,7 +998,7 @@ System.out.println(new SortCaseInsensitive(). <co
 
     <figure xml:id="sd1_fig_StringSortIgnoreCase">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Case
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Case
       insensitive sort</classname></title>
 
       <informaltable border="0">
@@ -1008,11 +1008,11 @@ System.out.println(new SortCaseInsensitive(). <co
 
         <tr>
           <td valign="top"><programlisting language="none">final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</link>[] names = {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link>[] names = {
 "UK", "quick", "hello", "sign", "ATM"
 };
 
-Arrays.<link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort</link>(names, <emphasis
+Arrays.<link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort</link>(names, <emphasis
                 role="red">new SortCaseInsensitive()</emphasis>);
 
 for (final String n: names) { 
@@ -1030,7 +1030,7 @@ UK</screen></td>
 
     <figure xml:id="sd1_fig_StringSortIgnoreCaseLambda">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Sort
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Sort
       descending by lambda expression</classname></title>
 
       <informaltable border="0">
@@ -1040,10 +1040,10 @@ UK</screen></td>
 
         <tr>
           <td valign="top"><programlisting language="none">final <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</link>[] names = {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link>[] names = {
 "UK", "quick", "hello", "sign", "ATM"
 };
-Arrays.<link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort</link>(names, <emphasis
+Arrays.<link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort</link>(names, <emphasis
                 role="red">(a, b) -&gt; b.compareTo(a)</emphasis>); <co
                 linkends="sd1_callout_StringSortIgnoreCaseLambda-1"
                 xml:id="sd1_callout_StringSortIgnoreCaseLambda-1-co"/>
@@ -1067,7 +1067,7 @@ ATM</screen></td>
           comparator:</para>
 
           <programlisting language="none">public class SortDescending implements <link
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</link>&lt;String&gt; {
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</link>&lt;String&gt; {
     @Override
     public int compare(final String <emphasis role="red">a</emphasis>, final String <emphasis
               role="red">b</emphasis>) {
@@ -1107,16 +1107,16 @@ ATM</screen></td>
 
             <tip>
               <para>The <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort(T[]
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort(T[]
               a, Comparator&lt;? super T&gt; c)</methodname> method is your
               friend. It allows for passing a comparator instance as in the
               <link
               xlink:href="https://www.geeksforgeeks.org/arrays-sort-in-java-with-examples/#highlighter_983402">sort
               students by rollno</link> example. Thus define an appropriate
               SortByArea class implementing <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator&lt;Rectangle&gt;</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator&lt;Rectangle&gt;</classname>
               and pass an instance of this class to <methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort(T[]
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Arrays.html#sort(T%5B%5D,java.util.Comparator)">sort(T[]
               a, Comparator&lt;? super T&gt; c)</methodname>.</para>
             </tip>
           </question>
@@ -1134,11 +1134,11 @@ ATM</screen></td>
 
             <para>The intended sorting requires a corresponding class
             implementing the <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>
             (Not <classname>Comparable</classname>!) interface:</para>
 
             <programlisting language="java">public class SortByArea implements <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname>&lt;Rectangle&gt; {
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html">Comparator</classname>&lt;Rectangle&gt; {
   @Override
   public int compare(Rectangle r1, Rectangle r2) {
     if (r1.width * r1.height == r2.width * r2.height) {
@@ -1267,7 +1267,7 @@ Ascending by area:
         <qandaentry>
           <question>
             <para>Consider the following <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
             array definitions:</para>
 
             <programlisting language="java">private static final String[] ADJECTIVES = {
diff --git a/Doc/Sd1/languageFundamentals.xml b/Doc/Sd1/languageFundamentals.xml
index 2309b6c9ecf4e85b1c4040015fdb3305a0645e50..8151a14a41e73aea23941a62d2fb4def3e294209 100644
--- a/Doc/Sd1/languageFundamentals.xml
+++ b/Doc/Sd1/languageFundamentals.xml
@@ -1364,7 +1364,7 @@ System.out.println(<emphasis role="red">c</emphasis>ount + ":" + <emphasis
                 <td>yes</td>
 
                 <td><code language="java"><methodname
-                xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">println</methodname></code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">println</methodname></code>
                 is a method's name but is no <xref linkend="glo_Java"/>
                 keyword.</td>
               </tr>
@@ -1848,7 +1848,7 @@ System.out.println("Result: " + i);</programlisting></td>
                 expected assuming common rounding convention rules. Rounding
                 does not happen unless you explicitly use methods like e.g.
                 <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#round(double)">Math.round()</methodname>.</para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#round(double)">Math.round()</methodname>.</para>
               </listitem>
 
               <listitem>
@@ -1894,10 +1894,10 @@ System.out.println("Result: " + i);</programlisting></td>
           <td>byte</td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#BYTES">1</link></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Byte.html#BYTES">1</link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Byte.MIN_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Byte.MIN_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:mo>-</m:mo>
@@ -1912,7 +1912,7 @@ System.out.println("Result: " + i);</programlisting></td>
             </inlineequation></link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Byte.MAX_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Byte.MAX_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:msup>
@@ -1933,7 +1933,7 @@ System.out.println("Result: " + i);</programlisting></td>
           <td>char</td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#BYTES">2</link></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Byte.html#BYTES">2</link></td>
 
           <td><inlineequation>
               <m:math display="inline">
@@ -1942,7 +1942,7 @@ System.out.println("Result: " + i);</programlisting></td>
             </inlineequation></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Character.MAX_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Character.MAX_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:msup>
@@ -1963,10 +1963,10 @@ System.out.println("Result: " + i);</programlisting></td>
           <td>short</td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Short.BYTES">2</link></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Short.BYTES">2</link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Short.MIN_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Short.MIN_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:mo>-</m:mo>
@@ -1981,7 +1981,7 @@ System.out.println("Result: " + i);</programlisting></td>
             </inlineequation></link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Short.MAX_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Short.MAX_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:msup>
@@ -2002,10 +2002,10 @@ System.out.println("Result: " + i);</programlisting></td>
           <td>int</td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.BYTES">4</link></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.BYTES">4</link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.MIN_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.MIN_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:mo>-</m:mo>
@@ -2020,7 +2020,7 @@ System.out.println("Result: " + i);</programlisting></td>
             </inlineequation></link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.MAX_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.MAX_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:msup>
@@ -2041,10 +2041,10 @@ System.out.println("Result: " + i);</programlisting></td>
           <td>long</td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Long.BYTES">8</link></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Long.BYTES">8</link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Long.MIN_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Long.MIN_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:mo>-</m:mo>
@@ -2059,7 +2059,7 @@ System.out.println("Result: " + i);</programlisting></td>
             </inlineequation></link></td>
 
           <td><link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Long.MAX_VALUE"><inlineequation>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Long.MAX_VALUE"><inlineequation>
               <m:math display="inline">
                 <m:mrow>
                   <m:msup>
@@ -2503,13 +2503,13 @@ System.out.println("Result: " + i);</programlisting></td>
             and <code language="java"
             xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1-100-C">int</code>
             primitive data types within their corresponding <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html">Character</classname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Character.html">Character</classname>,
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html">Byte</classname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Byte.html">Byte</classname>,
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html">Short</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Short.html">Short</classname>
             and <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>
             classes. You may want to execute:</para>
 
             <programlisting language="java">System.out.println("int minimum:" + Integer.MIN_VALUE);
@@ -2669,7 +2669,7 @@ Octal 35</screen></td>
       <title>Choose your output representation</title>
 
       <programlisting language="java">System.out.println("35 as Binary (Base 2):       " + Integer.<link
-          xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Integer.html#toString(int,int)">toString</link>(35, 2));
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#toString(int,int)">toString</link>(35, 2));
 System.out.println("35 as Ternary (Base 3):      " + Integer.toString(35, 3));
 System.out.println("35 as Octal (Base 8):        " + Integer.toString(35, 8));
 System.out.println("35 as Hexadecimal (Base 16): " + Integer.toString(35, 16));</programlisting>
@@ -2855,7 +2855,7 @@ Arrow value: 10173</screen>
                 value directly:</para>
 
                 <programlisting language="java">System.out.println(Character.<methodname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html#toChars(int)">toChars(0x1f60e)</methodname>);</programlisting>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Character.html#toChars(int)">toChars(0x1f60e)</methodname>);</programlisting>
               </listitem>
             </orderedlist>
           </answer>
@@ -2873,7 +2873,7 @@ System.out.println(10000000000<emphasis role="red">L</emphasis>);  // o.K.: Usin
 System.out.println(10000000000 );  // Compile time error: Integer number
                                    // larger than 2147483647 or 
                                    // 2^31 - 1, Integer.<link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</link>)</programlisting>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</link>)</programlisting>
     </figure>
 
     <figure xml:id="sd1_fig_literals">
@@ -3218,7 +3218,7 @@ Value 4: 29</screen>
 
     <figure xml:id="sd1_fig_javaLiteralsClass">
       <title><xref linkend="glo_Java"/> <classname
-      xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html">String</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
       and <code language="java">null</code> literals</title>
 
       <informaltable border="1">
@@ -5143,7 +5143,7 @@ System.out.println(value);</programlisting>
                       </m:mrow>
                     </m:math>
                   </inlineequation> or <varname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Long.MAX_VALUE">Long.MAX_VALUE</varname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Long.MAX_VALUE">Long.MAX_VALUE</varname>
                 - 1</td>
 
                 <td align="right">2147483647</td>
@@ -5163,7 +5163,7 @@ System.out.println(value);</programlisting>
                       </m:mrow>
                     </m:math>
                   </inlineequation> or <varname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</varname></td>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</varname></td>
               </tr>
 
               <tr>
@@ -5184,7 +5184,7 @@ System.out.println(value);</programlisting>
                       </m:mrow>
                     </m:math>
                   </inlineequation> or <varname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Long.MAX_VALUE">Long.MAX_VALUE</varname></td>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Long.MAX_VALUE">Long.MAX_VALUE</varname></td>
 
                 <td align="right">2147483647</td>
 
@@ -5203,7 +5203,7 @@ System.out.println(value);</programlisting>
                       </m:mrow>
                     </m:math>
                   </inlineequation> or <varname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</varname></td>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</varname></td>
               </tr>
             </informaltable>
 
@@ -5252,7 +5252,7 @@ System.out.println(value);</programlisting>
                 </m:math>
               </inlineequation> seems to be equal to <code language="java">2 *
             (<link
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</link>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/constant-values.html#java.lang.Integer.MAX_VALUE">Integer.MAX_VALUE</link>
             + 1))</code> (why?) Joe's first attempt reads:</para>
 
             <programlisting language="java" linenumbering="numbered"
@@ -5386,9 +5386,9 @@ Process finished with exit code 1</screen>
             <orderedlist>
               <listitem>
                 <para>The constant <code language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</code>.<code
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</code>.<code
                 language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</code>
                 already suggests we will not be able to increase its value
                 while staying as an <code language="java"
                 xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1-100-C">int</code>.
@@ -5406,9 +5406,9 @@ _____________________________________
 
                 <para>This is the binary representation of the unintended
                 result <code language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</code>.<code
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</code>.<code
                 language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MIN_VALUE">MIN_VALUE</code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MIN_VALUE">MIN_VALUE</code>
                 due to an arithmetic overflow. The expression <code
                 language="java">2 * (Integer.MAX_VALUE + 1)</code> then gives
                 rise to a second overflow error:</para>
@@ -5808,8 +5808,8 @@ System.out.println(2147483647 + 1L);</programlisting>
               <code language="java"
               xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1-100-C">int</code>
               value <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>.<property
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</property>.
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>.<property
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</property>.
               The plus operator in the first expression <code
               language="java">2147483647 + 1</code> acts on two operands of
               type <code language="java"
@@ -5899,8 +5899,7 @@ System.out.println(2147483647 + 1L);</programlisting>
               IEEE representations: A given value will be approximated as
               close as possible.</para>
 
-              <para>Adding <code language="java">System.out.println(x -
-              y)</code> yields a value of -1.1102230246251565E-16 denoting the
+              <para>Adding <code language="java">System.out.println(x - y)</code> yields a value of -1.1102230246251565E-16 denoting the
               representational deviation of <code language="java">x</code> and
               <code language="java">y</code>.</para>
 
@@ -5916,7 +5915,7 @@ final double b = 0.9;
 final double x = a + 0.1;
 final double y = b - 0.1;
 System.out.println(<link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#abs(double)">Math.abs</link>(x - y) &lt; 1.E-14);</programlisting>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#abs(double)">Math.abs</link>(x - y) &lt; 1.E-14);</programlisting>
 
               <para>The last line represents the boolean expression
               <inlineequation>
@@ -5961,10 +5960,10 @@ System.out.println(<link
 
         <programlisting language="java">try {
     int sum = Math.<link
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#addExact(int,int)">addExact(2147480000, 2147480000)</link>;
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#addExact(int,int)">addExact(2147480000, 2147480000)</link>;
     System.out.println("sum = " + sum);
 } catch (<link
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/ArithmeticException.html">ArithmeticException</link> ex) {
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/ArithmeticException.html">ArithmeticException</link> ex) {
     System.err.println("Problem: " + ex.getMessage());
 }</programlisting>
 
@@ -6025,7 +6024,7 @@ double g = 1. / 0;
 double difference = f - g;
 System.out.println("Difference: " + difference);</programlisting><screen>Difference: NaN</screen><parameter>Explanation:
                   This represents a special <quote
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Double.html#NaN">not
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html#NaN">not
                   a number</quote> encoded value.</parameter></para>
                 </listitem>
               </itemizedlist>
@@ -6629,14 +6628,14 @@ System.out.println("A circle of radius " + radius + " will cover an area of " +
 
               <tip>
                 <para>Consider the standard <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">Math
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#PI">Math
                 library</link>.</para>
               </tip>
             </question>
 
             <answer>
               <para>The solution is straightforward using <link
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">Math.PI</link>:</para>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#PI">Math.PI</link>:</para>
 
               <programlisting language="java" linenumbering="numbered">double radius = 2.3; // Computing a circle's area
 System.out.println("A circle of radius " + radius + " will cover an area of " +
diff --git a/Doc/Sd1/objectsClasses.xml b/Doc/Sd1/objectsClasses.xml
index 3719f35b99a4708851074db5bd8b8762f661fe1b..849afc1f1bb6d8d5544a3508f44ef952ec161559 100644
--- a/Doc/Sd1/objectsClasses.xml
+++ b/Doc/Sd1/objectsClasses.xml
@@ -288,7 +288,7 @@ if (null == r) {
 
           <para><emphasis role="red">java.lang</emphasis>.String vs. <emphasis
           role="red">my.personal</emphasis>.<classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname></para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname></para>
         </listitem>
       </itemizedlist>
     </figure>
@@ -461,16 +461,16 @@ public class Q {
         <callout arearefs="sd1_fig_javaDotLangNoImportRequired-1.2-co"
                  xml:id="sd1_fig_javaDotLangNoImportRequired-1.2">
           <para>Classes belonging to the <package
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>
           package are being imported automatically.</para>
         </callout>
 
         <callout arearefs="sd1_fig_javaDotLangNoImportRequired-2.2-co"
                  xml:id="sd1_fig_javaDotLangNoImportRequired-2.2">
           <para>The <classname
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</classname>
           class belongs to the <package
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/package-summary.html">java.util</package>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/package-summary.html">java.util</package>
           package and must thus be imported.</para>
         </callout>
 
@@ -1719,7 +1719,7 @@ public class Time {
         <programlisting language="java">boolean <co
             linkends="sd1_fig_typeSignatureDef-1"
             xml:id="sd1_fig_typeSignatureDef-1-co"/> <link
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​(String prefix, int toffset) <co
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​(String prefix, int toffset) <co
             linkends="sd1_fig_typeSignatureDef-2"
             xml:id="sd1_fig_typeSignatureDef-2-co"/> </programlisting>
 
@@ -1811,7 +1811,7 @@ public class Time {
         <title>Defining method signatures</title>
 
         <programlisting language="java">boolean <link
-            xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​<co
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​<co
             linkends="sd1_fig_typeSignatureDef-1.2"
             xml:id="sd1_fig_typeSignatureDef-1.2-co"/>(String prefix, int toffset) <co
             linkends="sd1_fig_typeSignatureDef-2.2"
@@ -1922,7 +1922,7 @@ public class Time {
               <para>We start by the original method:</para>
 
               <programlisting language="java">boolean <link
-                  xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​(String prefix, int toffset)  </programlisting>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#startsWith(java.lang.String,int)">startsWith</link>​(String prefix, int toffset)  </programlisting>
 
               <para>Its signature may be represented by:</para>
 
@@ -2326,47 +2326,47 @@ final double d = value; // widening, o.K.</programlisting>
         <informaltable border="0">
           <tr>
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-boolean-">print(boolean
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print-boolean-">print(boolean
             b)</methodname></td>
 
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-char-">print(char
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(char)">print(char
             c)</methodname></td>
           </tr>
 
           <tr>
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-char:A-">print(char[]
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(char:A)">print(char[]
             s)</methodname></td>
 
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-double-">print(double
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(double)">print(double
             d)</methodname></td>
           </tr>
 
           <tr>
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-float-">print(float
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(float)">print(float
             f)</methodname></td>
 
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-int-">print(int
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(int)">print(int
             i)</methodname></td>
           </tr>
 
           <tr>
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-long-">print(long
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(long)">print(long
             l)</methodname></td>
 
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-java.lang.Object-">print(Object
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(java.lang.Object)">print(Object
             obj)</methodname></td>
           </tr>
 
           <tr>
             <td><methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-java.lang.String-">print(String
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(java.lang.String)">print(String
             s)</methodname></td>
 
             <td/>
@@ -3817,11 +3817,11 @@ public class Driver {
               <para>This exercise is about using packages for resolving class
               name clashes. Usually you won't actually define a class String
               of your own next to <link
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">java.lang.String</link>.</para>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">java.lang.String</link>.</para>
 
               <para>Define your own <classname>String</classname> class
               internally using <link
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">java.lang.String</link>.
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">java.lang.String</link>.
               Provide a suitable constructor and a <methodname>public String
               toString()</methodname> method just returning the
               <quote>internal</quote> <classname>java.lang.String</classname>
@@ -3846,8 +3846,8 @@ Hello 'John'</screen>
                 <orderedlist>
                   <listitem>
                     <para>Use a <package
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                     instance variable inside your private
                     <classname>String</classname> class.</para>
                   </listitem>
@@ -3856,7 +3856,7 @@ Hello 'John'</screen>
                     <para>Your class' constructor is bound to accept standard
                     <xref linkend="glo_Java"/> string literals. Using
                     <classname
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">java.lang.String</classname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">java.lang.String</classname>
                     internally requires a fully qualified class name.</para>
                   </listitem>
 
@@ -3908,15 +3908,15 @@ public class String { <co linkends="sd1_callout_createStringClass-1.2"
                 <callout arearefs="sd1_callout_createStringClass-1.3-co"
                          xml:id="sd1_callout_createStringClass-1.2">
                   <para>Shadowing <xref linkend="glo_Java"/> <package
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>.</para>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.</para>
                 </callout>
 
                 <callout arearefs="sd1_callout_createStringClass-2.2-co"
                          xml:id="sd1_callout_createStringClass-2.2">
                   <para>Using a standard <xref linkend="glo_Java"/> <package
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   instance internally. Fully qualified class name required
                   resolving potential name clash.</para>
                 </callout>
@@ -3925,8 +3925,8 @@ public class String { <co linkends="sd1_callout_createStringClass-1.2"
                          xml:id="sd1_callout_createStringClass-3.2">
                   <para>Our constructor also accepts a standard <xref
                   linkend="glo_Java"/> <package
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   instance.</para>
                 </callout>
 
@@ -3940,8 +3940,8 @@ public class String { <co linkends="sd1_callout_createStringClass-1.2"
                 <callout arearefs="sd1_callout_createStringClass-4-co"
                          xml:id="sd1_callout_createStringClass-4">
                   <para>Returning a <package
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   instance.</para>
                 </callout>
               </calloutlist>
@@ -3949,15 +3949,15 @@ public class String { <co linkends="sd1_callout_createStringClass-1.2"
               <para>There are basically two ways using
               <package>de.hdm_stuttgart.mi.sd1.tooling</package>.<classname>String</classname>
               and <package
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
               in the same scope:</para>
 
               <glosslist>
                 <glossentry>
                   <glossterm>Fully qualify <package
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-summary.html">java.lang</package>.<classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>:</glossterm>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.<classname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>:</glossterm>
 
                   <glossdef>
                     <programlisting language="java">package de.hdm_stuttgart.mi;
@@ -4024,7 +4024,7 @@ public class Main {
                                xml:id="sd1_callout_createStringAnswer2-1">
                         <para>A <xref linkend="glo_Java"/> standard
                         <package>java.lang</package>.<classname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                         instance.</para>
                       </callout>
 
@@ -4612,27 +4612,27 @@ System.out.print(...)</programlisting>
         <callout arearefs="sd1_fig_understandingPrintln-1-co"
                  xml:id="sd1_fig_understandingPrintln-1">
           <para>Class <classname
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/System.html">System</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html">System</classname>
           in package <package
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/package-summary.html">java.lang</package>.</para>
         </callout>
 
         <callout arearefs="sd1_fig_understandingPrintln-2-co"
                  xml:id="sd1_fig_understandingPrintln-2">
           <para>Class variable (static) <link
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/System.html#out">out</link>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">out</link>
           of type <classname
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>
           in class <classname
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/System.html">System</classname></para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html">System</classname></para>
         </callout>
 
         <callout arearefs="sd1_fig_understandingPrintln-3-co"
                  xml:id="sd1_fig_understandingPrintln-3">
           <para>One of <link
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/io/PrintStream.html#i9">9
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#i9">9
           overloaded methods</link> in class <classname
-          xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>.</para>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html">PrintStream</classname>.</para>
         </callout>
       </calloutlist>
     </figure>
@@ -4841,7 +4841,7 @@ public class <link
             desired method:</para>
 
             <programlisting language="java"><link
-                xlink:href="P/Sd1/leapYear/target/site/apidocs/de/hdm_stuttgart/sd1/leap/LeapYear.html#isLeapYear-int-">public static boolean isLeapYear(int year)</link> {
+                xlink:href="P/Sd1/leapYear/target/site/apidocs/de/hdm_stuttgart/sd1/leap/LeapYear.html#isLeapYear(int)">public static boolean isLeapYear(int year)</link> {
   if (year % 400 == 0) {                    // Every 400 years we do have a leap year.
     return true;
    } else if (year % 4 == 0 &amp;&amp;  0 != year % 100) { // Every 4 years we do have a leap
@@ -4856,7 +4856,7 @@ public class <link
             prefer compact code:</para>
 
             <programlisting language="java"><link
-                xlink:href="P/Sd1/leapYear/target/site/apidocs/de/hdm_stuttgart/sd1/leap/LeapYearCompact.html#isLeapYear-int-">public static boolean isLeapYear(int year)</link> {
+                xlink:href="P/Sd1/leapYear/target/site/apidocs/de/hdm_stuttgart/sd1/leap/LeapYearCompact.html#isLeapYear(int)">public static boolean isLeapYear(int year)</link> {
   return
     year % 400 == 0 ||                  // Every 400 years we do have a leap year.
     year % 4 == 0 &amp;&amp;  0 != year % 100;  // Every 4 years we do have a leap year
@@ -5080,7 +5080,7 @@ public static void doWhileSquareNumbers(final int limit) {
               <orderedlist>
                 <listitem>
                   <para>Consider the <link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#sin-double-">sin(...)</link>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#sin(double)">sin(...)</link>
                   function. The documentation will tell you that the argument
                   to sin(...) is expected to be in radians rather than common
                   degree values from [0,360[ being expected on output. So you
@@ -5101,7 +5101,7 @@ public static void doWhileSquareNumbers(final int limit) {
                 <listitem>
                   <para>Rounding the sine's value is the crucial part here.
                   The function <link
-                  xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Math.html#round(double)">round()</link>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#round(double)">round()</link>
                   is quite helpful. Consider the following example rounding
                   23.22365 to four decimal places:</para>
 
@@ -5112,7 +5112,7 @@ public static void doWhileSquareNumbers(final int limit) {
 
                     <listitem>
                       <para><link
-                      xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Math.html#round(double)">round(232236.5)</link>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#round(double)">round(232236.5)</link>
                       results in 232237 (long).</para>
                     </listitem>
 
@@ -5361,7 +5361,7 @@ public static void setInterestRate(double z) {  // Scope of variable "z" limited
  * @return The debt interest rate value.
  */
 public static double <link
-                    xlink:href="P/Sd1/interest/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/interest/Account.html#getDefaultInterestRate--">getDebtInterestRate()</link> {
+                    xlink:href="P/Sd1/interest/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/interest/Account.html#getDefaultInterestRate()">getDebtInterestRate()</link> {
   return debtInterestRate;
 }
 
@@ -5373,7 +5373,7 @@ public static double <link
  *                         the desired default interest rate value.
  */
 public static void <link
-                    xlink:href="P/Sd1/interest/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/interest/Account.html#setDefaultInterestRate-double-">setDebtInterestRate(double debtInterestRate)</link> {
+                    xlink:href="P/Sd1/interest/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/interest/Account.html#setDefaultInterestRate(double)">setDebtInterestRate(double debtInterestRate)</link> {
   Account.debtInterestRate = debtInterestRate;
 }</programlisting>
 
@@ -5393,7 +5393,7 @@ public static void <link
 }</programlisting>
 
                 <remark>Using <link
-                xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html#pow(double,double)">Math.pow()</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#pow(double,double)">Math.pow()</link>
                 for calculating <abbrev>e.g.</abbrev> <inlineequation>
                     <m:math display="inline">
                       <m:msup>
@@ -5420,7 +5420,7 @@ public static void <link
                     </m:math>
                   </inlineequation> rather than using a loop is actually a bad
                 idea: <link
-                xlink:href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html#pow(double,double)">Math.pow()</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#pow(double,double)">Math.pow()</link>
                 internally using a power series expansion is expensive with
                 respect to execution performance. Due to the integer
                 exponential value a simple loop involving only multiplications
@@ -6102,10 +6102,10 @@ System.out.println(
               </annotation>
 
               <para>Implementing <methodname
-              xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getGcd-long-long-">getGcd(</methodname>...):</para>
+              xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getGcd(long,long)">getGcd(</methodname>...):</para>
 
               <programlisting language="java">public static long <link
-                  xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getCommonMultiple-long-long-">getGcd(long a, long b)</link> {
+                  xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getCommonMultiple(long,long)">getGcd(long a, long b)</link> {
 
   // Following http://www.math.rutgers.edu/~greenfie/gs2004/euclid.html
   if (a &lt; b) { // Swap the values of a and b
@@ -6161,7 +6161,7 @@ System.out.println(
                 </inlineequation>. Thus we have:</para>
 
               <programlisting language="java">public static long <link
-                  xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getGcd-long-long-">getLeastCommonMultiple(long a, long b)</link> {
+                  xlink:href="P/Sd1/Gcd/V1/target/site/apidocs/de/hdm_stuttgart/mi/sd1/gcd/Math.html#getGcd(long,long)">getLeastCommonMultiple(long a, long b)</link> {
   final long gcd = getGcd(a, b);
   if (1 == gcd) {
     return a * b;
@@ -6506,7 +6506,7 @@ Archive:  .../.m2/repository/.../sd1/helper/0.9/helper-0.9.jar
               the <acronym>GCD</acronym> value:</para>
 
               <programlisting language="java"><link
-                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#Fraction-long-long-">public Fraction(long numerator, long denominator)</link> {
+                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#Fraction(long,long)">public Fraction(long numerator, long denominator)</link> {
   final long gcd = Math.getGcd(numerator, denominator);
 
   setNumerator(numerator / gcd);
@@ -6589,7 +6589,7 @@ Archive:  .../.m2/repository/.../sd1/helper/0.9/helper-0.9.jar
                 </inlineequation>. We should thus implement:</para>
 
               <programlisting language="java">public Fraction <link
-                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#mult-de.hdm_stuttgart.mi.sd1.fraction.Fraction-">mult(Fraction f)</link> {
+                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#mult(de.hdm_stuttgart.mi.sd1.fraction.Fraction)">mult(Fraction f)</link> {
   final Fraction f1 = new Fraction(f.numerator, denominator),
                  f2 = new Fraction(numerator, f.denominator);
 
@@ -6604,7 +6604,7 @@ Archive:  .../.m2/repository/.../sd1/helper/0.9/helper-0.9.jar
               large numbers:</para>
 
               <programlisting language="java">public Fraction <link
-                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#add-de.hdm_stuttgart.mi.sd1.fraction.Fraction-">add(Fraction f)</link> {
+                  xlink:href="P/Sd1/fraction/V2/target/site/apidocs/de/hdm_stuttgart/mi/sd1/fraction/Fraction.html#add(de.hdm_stuttgart.mi.sd1.fraction.Fraction)">add(Fraction f)</link> {
 
   final long gcd = Math.getGcd(denominator, f.denominator);
 
@@ -6851,7 +6851,7 @@ static public long factorial(int n) {
                     <para>Returning a long is sensible since even small
                     argument values yield large factorials. <code
                     language="java">long</code> <link
-                    xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/math/BigInteger.html">(currently!)</link>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/math/BigInteger.html">(currently!)</link>
                     is the best (largest) choice among all <xref
                     linkend="glo_Java"/> built-in integer types. Consider the
                     following example code:</para>
@@ -7602,9 +7602,9 @@ System.out.println(factorial(3));</programlisting>
 
                     <tip>
                       <para>The standard methods <link
-                      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#currentTimeMillis--">currentTimeMillis()</link>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#currentTimeMillis()">currentTimeMillis()</link>
                       and <link
-                      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#nanoTime--">nanoTime</link>
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#nanoTime()">nanoTime</link>
                       allow for measuring method execution by means of
                       subtracting time stamp values prior and after execution.
                       <quote
@@ -7919,7 +7919,7 @@ Ratio Recursive / Loop: 65554</screen></td>
                 exp(double)</methodname> inside a class
                 <package>Math</package> choosing a package of your choice. The
                 name clash with the Java standard class <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">java.lang.Math</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">java.lang.Math</link>
                 is intended: You'll learn how to resolve naming
                 conflicts.</para>
 
@@ -7960,7 +7960,7 @@ Ratio Recursive / Loop: 65554</screen></td>
                 language="java">seriesLimit=8</code> terms and the
                 corresponding values from the professional implementation
                 <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#exp-double">java.lang.Math.exp</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#exp-double">java.lang.Math.exp</link>
                 by calculating <inlineequation>
                     <m:math display="inline">
                       <m:msup>
@@ -8015,7 +8015,7 @@ Ratio Recursive / Loop: 65554</screen></td>
                   <listitem>
                     <para>You should only use basic arithmetic operations like
                     +, - * and /. Do not use <link
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#pow-double-double-">Math.pow(double
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#pow(double,double)">Math.pow(double
                     a, double b)</link> and friends! Their implementations use
                     power series expansions as well and are designed for a
                     different purpose like having fractional exponent
@@ -8174,7 +8174,7 @@ Ratio Recursive / Loop: 65554</screen></td>
 
                 <para>You may also view the <productname>Javadoc</productname>
                 and the implementation of <link
-                xlink:href="P/Sd1/math/V1/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#exp-double-">double
+                xlink:href="P/Sd1/math/V1/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#exp(double)">double
                 Math.exp(double)</link>. We may use the subsequent code
                 snippet for testing and comparing our implementation:</para>
 
@@ -8655,7 +8655,7 @@ e^3=19.412499999999998, difference=-0.67303692318767</screen>
                       </m:mrow>
                     </m:math>
                   </inlineequation> using <varname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">java.lang.Math.PI</varname>.
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#PI">java.lang.Math.PI</varname>.
                 Explain your results' accuracy for these arguments.</para>
               </question>
 
@@ -8796,9 +8796,9 @@ sin(4 * PI)=-9143.306026012957, <emphasis role="bold">difference=-9143.306026012
                   </inlineequation>.</para>
 
                 <para>You may also view the implementation of <link
-                xlink:href="P/Sd1/math/V2/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin-double-">double
+                xlink:href="P/Sd1/math/V2/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin(double)">double
                 Math.sin(double)</link> along with its <link
-                xlink:href="P/Sd1/math/V2/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin-double-">Javadoc</link>.</para>
+                xlink:href="P/Sd1/math/V2/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin(double)">Javadoc</link>.</para>
               </answer>
             </qandaentry>
           </qandadiv>
@@ -9826,7 +9826,7 @@ System.out.println("((1 + a) - b) - 1:" + (((one + a) - b) -  one));</programlis
                 arguments to this interval appropriately.</para>
 
                 <para>Hint: The standard function <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#floor-double-">Math.rint(double)</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#floor(double)">Math.rint(double)</methodname>
                 could be helpful: It may turn e.g. 4.47 (<code
                 language="java">double</code>) to 4 (<code
                 language="java">long</code>).</para>
@@ -9870,7 +9870,7 @@ System.out.println("((1 + a) - b) - 1:" + (((one + a) - b) -  one));</programlis
                 two rules. You may also view the
                 <productname>Javadoc</productname> and the implementation of
                 <link
-                xlink:href="P/Sd1/math/V4/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin-double-">double
+                xlink:href="P/Sd1/math/V4/target/site/apidocs/de/hdm_stuttgart/sd1/math/Math.html#sin(double)">double
                 Math.sin(double)</link>.</para>
               </answer>
             </qandaentry>
@@ -10667,7 +10667,7 @@ public static long getSum (int limit) {
 
               <para>For the current exercise we do not make use of this.
               Instead we implement <link
-              xlink:href="P/Sd1/summing/target/site/apidocs/de/hdm_stuttgart/sd1/sum/Summing.html#getSum-int-">Summing.getSum(...)</link>
+              xlink:href="P/Sd1/summing/target/site/apidocs/de/hdm_stuttgart/sd1/sum/Summing.html#getSum(int)">Summing.getSum(...)</link>
               by coding a loop:</para>
 
               <programlisting language="java">/**
@@ -10779,7 +10779,7 @@ Actual   :-32768</screen>
               fit into an <code language="java">int</code>. But <code
               language="java">limit * (limit + 1)</code> itself not yet
               divided by 2 may exceed <code language="java"
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>.
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>.
               Since the multiplication happens prior to dividing by 2 we see
               this overflow error happen.</para>
 
@@ -10961,8 +10961,8 @@ System.out.println(seconds + " seconds are equal to " + tPeriod <co
                         <methodname>toString()</methodname> method within your
                         <classname>Timeperiod</classname> class matching
                         <classname
-                        xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
-                        xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>'s
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>.<methodname
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>'s
                         method signature.</para>
                       </callout>
                     </calloutlist></td>
@@ -11263,7 +11263,7 @@ public Timeperiod(final Timeperiod timeperiod) { ... }</programlisting>
   public void testAdditionMultiply() {</programlisting>
 
               <para>The current skeleton will yield a <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NullPointerException.html">NullPointerException</classname>
               on test execution. After completing your implementation remove
               this <interfacename
               xlink:href="https://junit.org/junit5/docs/5.3.0/api/org/junit/jupiter/api/Disabled.html">@Disabled</interfacename>
@@ -11801,7 +11801,7 @@ After call: <emphasis role="red">6</emphasis></screen></td>
 
         <tr>
           <td valign="top"><methodname role="bold"
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html#push(E)">push(...)</methodname></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html#push(E)">push(...)</methodname></td>
 
           <td valign="top"><para>Add object on top</para></td>
 
@@ -11812,7 +11812,7 @@ After call: <emphasis role="red">6</emphasis></screen></td>
 
         <tr>
           <td valign="top"><methodname role="bold"
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html#pop()">pop()</methodname></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html#pop()">pop()</methodname></td>
 
           <td valign="top"><para>Read + remove topmost object</para></td>
 
@@ -11823,7 +11823,7 @@ After call: <emphasis role="red">6</emphasis></screen></td>
 
         <tr>
           <td valign="top"><methodname role="bold"
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html#peek()">top()</methodname></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html#peek()">top()</methodname></td>
 
           <td valign="top"><para>Read topmost object</para></td>
 
@@ -11834,7 +11834,7 @@ After call: <emphasis role="red">6</emphasis></screen></td>
 
         <tr>
           <td valign="top"><methodname role="bold"
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html#empty()">empty()</methodname></td>
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html#empty()">empty()</methodname></td>
 
           <td valign="top"><para><code language="java">true</code> if and only
           if stack is empty</para></td>
@@ -11847,7 +11847,7 @@ After call: <emphasis role="red">6</emphasis></screen></td>
 
       <remark role="slideExclude">The <xref linkend="glo_JDK"/> implements a
       <methodname role="bold"
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html#peek()">peek()</methodname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html#peek()">peek()</methodname>
       method having exactly the «original» stack
       <methodname>top()</methodname> method's semantic.</remark>
     </figure>
@@ -12498,7 +12498,7 @@ System.out.println(northWest);</programlisting></td>
               <tip>
                 <para>Provide an appropriate constructor among with suitable
                 «internal» instance attributes and a corresponding <methodname
-                xlink:href="https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>
                 method.</para>
               </tip>
             </question>
@@ -12571,7 +12571,7 @@ System.out.println(northWest);</programlisting></td>
 
               <para>For creating output texts like <abbrev>e.g.</abbrev>
               <code>north by west (315°)</code> we need a <methodname
-              xlink:href="https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()">toString()</methodname>
               method. Also adding the yet missing directions our final result
               looks like:</para>
 
@@ -12637,7 +12637,7 @@ System.out.println(" Opposite: " + southWest.opposite());</programlisting></td>
                     values()</methodname> being added by the compiler
                     implicitly to any <code language="java">enum</code> class.
                     See the method 's <methodname
-                    xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#valueOf-java.lang.Class-java.lang.String-">valueOf()</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)">valueOf()</methodname>
                     explanation. It allows you to access the array of all
                     instances of a given <code
                     language="java">enum</code>.</para>
@@ -12645,7 +12645,7 @@ System.out.println(" Opposite: " + southWest.opposite());</programlisting></td>
 
                   <listitem>
                     <para>The <methodname
-                    xlink:href="https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Enum.html#ordinal()">ordinal()</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Enum.html#ordinal()">ordinal()</methodname>
                     method returns a given <code language="java">enum</code>'s
                     instance index with respect to the order of appearance.
                     Using the above values() method you can thus access any
diff --git a/Doc/Sd1/statements.xml b/Doc/Sd1/statements.xml
index 5a59cec5eaa173ae6e866045ee9111ee9a03fbd8..c314b8e3373979a3e81c9cce0de6ad121cee6193 100644
--- a/Doc/Sd1/statements.xml
+++ b/Doc/Sd1/statements.xml
@@ -869,9 +869,9 @@ public class App {
 
             <td valign="top"><screen>Enter a value:123
 You entered 123</screen><para>See <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextBoolean()">nextBoolean()</methodname>,
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#nextBoolean()">nextBoolean()</methodname>,
             <methodname><link
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextByte()">nextByte()</link></methodname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#nextByte()">nextByte()</link></methodname>
             and friends.</para></td>
           </tr>
         </informaltable>
@@ -1019,14 +1019,14 @@ You entered 123</screen><para>See <methodname
   final int pointsToAdd = 3;
 
   final int augmentedMark = <link
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#min(int,int)">Math.min</link>(maximumPoints, pointsReached + pointsToAdd);
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#min(int,int)">Math.min</link>(maximumPoints, pointsReached + pointsToAdd);
 
   System.out.println("New Result:" + augmentedMark);
 }</programlisting>
 
               <para>You will fully understand the above expression <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname>.<methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#min(int,int)">min(...)</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">Math</classname>.<methodname
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#min(int,int)">min(...)</methodname>
               after finishing the <quote>Static Final Variables</quote>
               section of <xref linkend="bib_Kurniawan"/>.</para>
             </answer>
@@ -1048,7 +1048,7 @@ You entered 123</screen><para>See <methodname
 
               <figure xml:id="sd1VideoUsingScannerClass">
                 <title>Using a <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</classname>
                 class collecting user input.</title>
 
                 <mediaobject>
@@ -1687,7 +1687,7 @@ switch(<emphasis role="red">day % 7</emphasis>) {
       <programlisting language="java">String month, season;  
 ...
 // Since Java 7: <link
-          xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</link> based <code
+          xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link> based <code
           language="java">case</code> labels
 switch(month) {
     case "March": case "April": case "May":
@@ -1728,7 +1728,7 @@ Unknown day name 'July'</screen>
               <orderedlist>
                 <listitem>
                   <para>Starting from <xref linkend="glo_Java"/> 7 <classname
-                  xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">String</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
                   based <code language="java">switch</code> statements are
                   allowed.</para>
                 </listitem>
@@ -1736,8 +1736,8 @@ Unknown day name 'July'</screen>
                 <listitem>
                   <para>You may read strings into your application using
                   <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</classname>.<methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#next()">next()</methodname>.</para>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</classname>.<methodname
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#next()">next()</methodname>.</para>
                 </listitem>
               </orderedlist>
             </tip>
@@ -2856,9 +2856,9 @@ for (int row = 0; row &lt; numberOfRows; row++) { <co
                                xml:id="sd1_callout_printTriangle-4">
                         <para>Print an individual character. Notice the
                         presence of a <methodname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print(java.lang.String)">print(....)</methodname>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(java.lang.String)">print(....)</methodname>
                         rather than a <methodname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println(java.lang.String)">println()</methodname>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">println()</methodname>
                         method call. This way printing continues within a
                         given line rather than breaking to a new one.</para>
                       </callout>
@@ -2868,12 +2868,12 @@ for (int row = 0; row &lt; numberOfRows; row++) { <co
                         <para>After each line we need a line break <code
                         language="java">'\n'</code> for starting the next one
                         using <methodname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println()">println()</methodname>.
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println()">println()</methodname>.
                         If you prefer explicit code you may use <package
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html">System</package>.<parameter
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">out</parameter>.
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html">System</package>.<parameter
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">out</parameter>.
                         <methodname
-                        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print(char)">print('\n')</methodname>
+                        xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(char)">print('\n')</methodname>
                         instead.</para>
                       </callout>
                     </calloutlist>
@@ -3105,7 +3105,7 @@ System.out.println("<emphasis role="red">###</emphasis>");
               printing fixed numbers of space (<code>''</code>) characters
               using loop statements. The
               <classname>System</classname><code>.</code><property>out</property><code>.</code><methodname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname>
               method as in <xref
               linkend="sd1QandaSquareNumberTableFormatted"/> allows for
               getting rid of these. As an example printing the tree's top
@@ -3144,9 +3144,9 @@ System.out.println("<emphasis role="red">X</emphasis>");     </programlisting></
 
               <para>Moreover starting with <xref linkend="glo_Java"/> 11 the
               <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">String</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>
               class features a <methodname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname>
               method:</para>
 
               <informaltable border="1">
@@ -3171,7 +3171,7 @@ for (int i = 0; i &lt; repetitions; i++) {
 
                 <tr>
                   <th>Using <methodname
-                  xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname>
                   instead</th>
                 </tr>
 
@@ -3263,15 +3263,15 @@ System.out.format("%"+ (numberOfRows + 1) + "s\n", "###");</programlisting>
                   <listitem>
                     <para>Read about using
                     <classname>System</classname><code>.</code><property>out</property><code>.</code><methodname
-                    xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname>
                     and <methodname
-                    xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname>
                     in the previous exercises solution.</para>
                   </listitem>
 
                   <listitem>
                     <para>The <methodname
-                    xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#indent(int)">indent(int)</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent(int)</methodname>
                     method allows for indenting multi line blocks:</para>
 
                     <informaltable border="1">
@@ -3606,11 +3606,11 @@ System.out.println("<emphasis role="red">[___]</emphasis>");
               <para>Similar to the previous exercise <xref
               linkend="sd1QandaXmasTree"/> this time we replace all inner
               loops by<classname> using </classname><classname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">String</classname>.<methodname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#indent(int)">indent()</methodname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.<methodname
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent()</methodname>
               and <classname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html">String</classname>.<methodname
-              xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname>.
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.<methodname
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname>.
               This variant's full source code is on offer at <link
               xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/tree/master/Doc/Sd1/Ref/Statements/MoreFunXmasTree/src/main/java/de/hdm_stuttgart/mi/sd1/XmasUsingFormat.java">XmasUsingFormat.java</link>.</para>
 
@@ -3791,11 +3791,11 @@ System.out.print("[___]".indent(numberOfRowGroups + 1));</programlisting>
                     xlink:href="https://docs.oracle.com/javase/tutorial/java/data/numberformat.html">Formatting
                     Numeric Print Output</link> and learn how to style numeric
                     output: Use <methodname><link
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</link>.<link
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format</link>(...%nd...)</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</link>.<link
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format</link>(...%nd...)</methodname>
                     instead of <methodname><link
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</link>.<link
-                    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println()">println</link>(...)</methodname>
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</link>.<link
+                    xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println()">println</link>(...)</methodname>
                     statements</para>
                   </tip></para>
               </question>
@@ -3922,7 +3922,7 @@ System.out.format("Start:<emphasis role="red">%5d</emphasis>:End", <emphasis
                 xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/-/blob/master/Doc/Sd1/Ref/Statements/MultSimpleHtmlTable/src/main/java/de/hdm_stuttgart/mi/sd1/App.java">App.java</link>.
                 This solution uses both <xref linkend="glo_Java"/> 15 multi
                 line blocks and the String.<link
-                xlink:href="https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/String.html#indent(int)">indent(..)</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent(..)</link>
                 method.</para>
               </answer>
             </qandaentry>
@@ -3978,7 +3978,7 @@ System.out.format("Start:<emphasis role="red">%5d</emphasis>:End", <emphasis
                       <para>Having integer values of differing lengths you
                       have to consider right justified output. The integer
                       <link
-                      xlink:href="https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Formatter.html#syntax">format
+                      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Formatter.html#syntax">format
                       specifier</link> <code>%...d</code> is your friend here.
                       The subsequent example prints four integer values in
                       right justified style within output fields of common
@@ -4790,7 +4790,7 @@ for (int i = 1; i &lt; 50; i++) {
                     </m:math>
                   </inlineequation> equals 6227020800 which is ways beyond
                 <code
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>
                 == 2147483647 giving rise to a (silent) arithmetic overflow.
                 But even declaring our variable <code
                 language="java">product</code> of type <code
@@ -4822,7 +4822,7 @@ for (int i = 1; i &lt; 50; i++) {
 
                 <para>This time <code>20! == 2432902008176640000</code> is the
                 last correct value being smaller than <code language="java"
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Long.html#MAX_VALUE">Long.MAX_VALUE</code>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html#MAX_VALUE">Long.MAX_VALUE</code>
                 == 9223372036854775807.</para>
 
                 <para>Fortunately we have another option. Consider an
@@ -5416,7 +5416,7 @@ import java.util.Random;
        // and number of tries.
 
       final int randomValue =  new Random() // Selecting a pseudo random value
-            .<link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Random.html#nextInt(int)">nextInt(11)</link>;                   // between 0 and 10 (inclusive).
+            .<link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html#nextInt(int)">nextInt(11)</link>;                   // between 0 and 10 (inclusive).
 
       // ToDo: complete the implementation
    }</programlisting>
diff --git a/Doc/Sd1/streams.xml b/Doc/Sd1/streams.xml
index f10787b9945e5e70a9af307065b5d650092eced3..2287b0f0893ff7661a802b8a6f68e97bb0f56429 100644
--- a/Doc/Sd1/streams.xml
+++ b/Doc/Sd1/streams.xml
@@ -70,7 +70,7 @@
               <listitem>
                 <para>Given the name of an existing file you may create an
                 instance of <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname>:</para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html">BufferedReader</classname>:</para>
 
                 <programlisting language="java">final FileReader fileReader = new FileReader(inputFileName);
 final BufferedReader inputBufferedReader = new BufferedReader(fileReader);</programlisting>
@@ -78,20 +78,20 @@ final BufferedReader inputBufferedReader = new BufferedReader(fileReader);</prog
 
               <listitem>
                 <para>You will have to deal with possible <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileNotFoundException.html">FileNotFoundException</classname>
                 problems providing meaningful error messages.</para>
               </listitem>
 
               <listitem>
                 <para>The <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html">BufferedReader</classname>
                 class provides a method <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html#readLine--">readLine()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html#readLine()">readLine()</methodname>
                 allowing to access a given file's content line by line.</para>
 
                 <caution>
                   <para>Even if a file exists you have my encounter <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/IOException.html">IOException</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html">IOException</classname>
                   problems being related to <acronym>i.e.</acronym> missing
                   permissions.</para>
                 </caution>
@@ -124,7 +124,7 @@ public void testReadMissingFile() throws FileNotFoundException, IOException {
 
             <para>Notice the second test which will only succeed if a
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/FileNotFoundException.html">FileNotFoundException</classname>
             is being thrown.</para>
           </answer>
         </qandaentry>
@@ -224,16 +224,16 @@ public void testReadMissingFile() throws FileNotFoundException, IOException {
                 being able to and count characters, words and lines of a
                 single input file. Instances of this class may be initialized
                 from a <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname>.</para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html">BufferedReader</classname>.</para>
 
                 <para>Write corresponding tests.</para>
               </listitem>
 
               <listitem>
                 <para>You may create an instance of <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedReader.html">BufferedReader</classname>
                 from <link
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#in">System.in</link>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#in">System.in</link>
                 via:</para>
 
                 <programlisting language="java">new BufferedReader(new InputStreamReader(System.in))</programlisting>
diff --git a/Doc/Sd1/workingWithNumbers.xml b/Doc/Sd1/workingWithNumbers.xml
index 1c192b2160f29175c815618416f2fd15ba7c8b7f..2ba8a9b41743161ca056d8820f3c03a641df3f6d 100644
--- a/Doc/Sd1/workingWithNumbers.xml
+++ b/Doc/Sd1/workingWithNumbers.xml
@@ -17,7 +17,7 @@
 
     <figure xml:id="sd1_numbers_fig_stack">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Stack.html">Stack</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Stack.html">Stack</classname>
       of integer values</title>
 
       <informaltable border="0">
@@ -54,15 +54,15 @@ while (!values.empty()) {
           <itemizedlist>
             <listitem>
               <para><methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals(java.lang.Object)">public
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)">public
               boolean equals</methodname>(<classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html">Object</classname>
               obj)</para>
             </listitem>
 
             <listitem>
               <para><methodname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode()">public
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()">public
               int hashCode()</methodname></para>
             </listitem>
           </itemizedlist>
@@ -161,14 +161,14 @@ int iPrimitiveFromInteger = <co linkends="sd1_numbers_fig_conventional-3"
               <callout arearefs="sd1_numbers_fig_boxingAndUnboxing-2-co"
                        xml:id="sd1_numbers_fig_boxingAndUnboxing-2">
                 <para>Creating an instance of <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>
                 by means of boxing.</para>
               </callout>
 
               <callout arearefs="sd1_numbers_fig_boxingAndUnboxing-3-co"
                        xml:id="sd1_numbers_fig_boxingAndUnboxing-3">
                 <para>Assigning an <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>'s
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>'s
                 value to a primitive <code language="java">int</code> by means
                 of unboxing.</para>
               </callout>
@@ -184,19 +184,19 @@ int iPrimitiveFromInteger = <co linkends="sd1_numbers_fig_conventional-3"
               <callout arearefs="sd1_numbers_fig_conventional-2-co"
                        xml:id="sd1_numbers_fig_conventional-2">
                 <para>Creating a new instance of <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>
                 using the class method <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#valueOf-int-">Integer
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#valueOf(int)">Integer
                 valueOf​(int i)</methodname>.</para>
               </callout>
 
               <callout arearefs="sd1_numbers_fig_conventional-3-co"
                        xml:id="sd1_numbers_fig_conventional-3">
                 <para>Assigning an <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>'s
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>'s
                 value to a primitive <code language="java">int</code> using
                 the <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#intValue--">int
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#intValue()">int
                 intValue()</methodname> instance method.</para>
               </callout>
             </calloutlist></td>
@@ -315,7 +315,7 @@ Double d = intValue;</programlisting>
 
     <figure xml:id="sd1_numbers_fig_parseIntegerString">
       <title>Parsing <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html">Integer</classname>
       user input</title>
 
       <informaltable border="0">
@@ -364,14 +364,14 @@ not an integer.</screen></td>
 
               <listitem>
                 <para>The <methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextLine--">Scanner.nextLine()</methodname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#nextLine()">Scanner.nextLine()</methodname>
                 method does not throw a <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname>.
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NumberFormatException.html">NumberFormatException</classname>.
                 Thus the only way to enter the <code language="java">catch
                 {...}</code> clause is by executing of <code
                 language="java">Integer.parseInt(userInput)</code> yielding a
                 <classname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NumberFormatException.html">NumberFormatException</classname>
                 . But this execution happens <emphasis>after</emphasis>
                 assigning <code language="java">userInput =
                 scanner.nextLine()</code>.</para>
@@ -440,39 +440,39 @@ System.out.println("Value: " + value)</programlisting><screen>Exception in threa
           <td valign="top"><itemizedlist>
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#parseByte-java.lang.String-">parseByte()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Byte.html#parseByte(java.lang.String)">parseByte()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#parseShort-java.lang.String-">parseShort()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Short.html#parseShort(java.lang.String)">parseShort()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#parseInt-java.lang.String-">parseInt()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#parseInt(java.lang.String)">parseInt()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Long.html#parseLong-java.lang.String-">parseLong()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html#parseLong(java.lang.String)">parseLong()</methodname></para>
               </listitem>
             </itemizedlist></td>
 
           <td valign="top"><itemizedlist>
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Float.html#parseFloat-java.lang.String-">parseFloat()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Float.html#parseFloat(java.lang.String)">parseFloat()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Double.html#parseDouble-java.lang.String-">parseDouble()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Double.html#parseDouble(java.lang.String)">parseDouble()</methodname></para>
               </listitem>
 
               <listitem>
                 <para><methodname
-                xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Boolean.html#parseBoolean-java.lang.String-">parseBoolean()</methodname></para>
+                xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html#parseBoolean(java.lang.String)">parseBoolean()</methodname></para>
               </listitem>
             </itemizedlist></td>
         </tr>
@@ -496,7 +496,7 @@ System.out.println(Short.parseShort("32768"));</programlisting>
 
           <answer>
             <para><code language="java"
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code>
             for primitive type <code language="java"
             xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1-100-B">short</code>
             is <inlineequation>
@@ -522,7 +522,7 @@ System.out.println(Short.parseShort("32768"));</programlisting>
               </inlineequation> which equals 32767. Thus 32786 is no longer
             assignment compatible. So the first line will execute well but the
             second one yields a <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NumberFormatException.html">NumberFormatException</classname>
             at runtime :</para>
 
             <screen>Value:32767
@@ -588,7 +588,7 @@ B: 11</screen>
           <answer>
             <para>Hexadecimal representation uses a radix value of 16 to be
             passed to <methodname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#parseShort-java.lang.String-int-">short
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Short.html#parseShort(java.lang.String,int)">short
             parseShort​(String s, int radix)</methodname>:</para>
 
             <programlisting language="java">/**
@@ -607,7 +607,7 @@ public static short getHexadecimal(final String input) {
 
           <answer>
             <para><code language="java"
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code>
             for primitive type <code language="java"
             xlink:href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.1-100-B">short</code>
             is <inlineequation>
@@ -633,7 +633,7 @@ public static short getHexadecimal(final String input) {
               </inlineequation> which equals 32767. Thus 32786 is no longer
             assignment compatible. So the first line will execute well but the
             second one yields a <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/NumberFormatException.html">NumberFormatException</classname>
             at runtime :</para>
 
             <screen>Value:32767
@@ -653,7 +653,7 @@ Exception in thread "main" java.lang.NumberFormatException:
 
     <figure xml:id="sd1_numbers_fig_locale">
       <title>Excerpt from <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">java.util.Locale</classname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Locale.html">java.util.Locale</classname></title>
 
       <para>A Locale object represents a specific geographical, political, or
       cultural region.</para>
@@ -669,7 +669,7 @@ Exception in thread "main" java.lang.NumberFormatException:
 
     <figure xml:id="sd1_numbers_fig_localeProperties">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Locale.html">Locale</classname>
       properties</title>
 
       <itemizedlist>
@@ -693,7 +693,7 @@ Exception in thread "main" java.lang.NumberFormatException:
 
     <figure xml:id="sd1_numbers_fig_constructNumberFormat">
       <title>Get a <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html">NumberFormat</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/NumberFormat.html">NumberFormat</classname>
       instance</title>
 
       <informaltable border="0">
@@ -731,7 +731,7 @@ System.out.println(weirdFormatter.format(12345.678));</programlisting>
     <qandaset defaultlabel="qanda"
               xml:id="sd1_numbers_qanda_getAvailableLocales">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Locale.html">Locale</classname>
       definitions</title>
 
       <qandadiv>
@@ -739,7 +739,7 @@ System.out.println(weirdFormatter.format(12345.678));</programlisting>
           <question>
             <para>Each <xref linkend="glo_JRE"/> ships with a set of available
             <classname
-            xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname>
+            xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Locale.html">Locale</classname>
             definitions. Write a simple program to get the following
             list:</para>
 
@@ -754,7 +754,7 @@ Locale: English(en_GB)</screen>
 
             <tip>
               <para>Read the documentation of <classname
-              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname>
+              xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Locale.html">Locale</classname>
               to find appropriate methods.</para>
             </tip>
           </question>
@@ -773,7 +773,7 @@ for (final Locale l: Locale.getAvailableLocales()) {
               xml:id="sd1_numbers_qanda_formatIntDoubleDate">
       <title>Formatting <code language="java">int</code>, <code
       language="java">double</code> and <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/LocalDate.html">LocaleDate</classname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/LocalDate.html">LocaleDate</classname></title>
 
       <qandadiv>
         <qandaentry>
@@ -845,9 +845,9 @@ December 22, 2024
               <itemizedlist>
                 <listitem>
                   <para>Read the <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html">NumberFormat</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/NumberFormat.html">NumberFormat</classname>
                   documentation and its <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html#getInstance-java.util.Locale-">static
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/NumberFormat.html#getInstance(java.util.Locale)">static
                   NumberFormat getInstance(Locale inLocale)</methodname> in
                   particular. Also note its multiply overloaded
                   <methodname>String format(...)</methodname> methods partly
@@ -856,15 +856,15 @@ December 22, 2024
 
                 <listitem>
                   <para>Regarding dates you may want to consider <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatter.html">DateTimeFormatter</classname>
                   providing the <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html#ofLocalizedDate-java.time.format.FormatStyle-">static
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatter.html#ofLocalizedDate(java.time.format.FormatStyle)">static
                   DateTimeFormatter ofLocalizedDate(FormatStyle
                   dateStyle)</methodname> method. Then read about class
                   <classname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/FormatStyle.html">FormatStyle</classname>
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/FormatStyle.html">FormatStyle</classname>
                   and the <methodname
-                  xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html#withLocale-java.util.Locale-">DateTimeFormatter
+                  xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatter.html#withLocale(java.util.Locale)">DateTimeFormatter
                   withLocale​(Locale locale)</methodname> method.</para>
                 </listitem>
               </itemizedlist>
@@ -964,7 +964,7 @@ System.out.println(result);</programlisting>
 
     <figure xml:id="sd1_numbers_fig_usingBigDecimal">
       <title>Using <classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/math/BigDecimal.html">BigDecimal</classname></title>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/math/BigDecimal.html">BigDecimal</classname></title>
 
       <programlisting language="java">final BigDecimal zero_dot_99 = new BigDecimal("0.99");
 final BigDecimal zero_dot_1 = new BigDecimal("0.1");
@@ -981,7 +981,7 @@ System.out.println(result);</programlisting>
 
     <figure xml:id="sd1_numbers_fig_usingBigDecimalFeatures">
       <title><classname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/math/BigDecimal.html">BigDecimal</classname>
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/math/BigDecimal.html">BigDecimal</classname>
       features</title>
 
       <itemizedlist>
@@ -1009,7 +1009,7 @@ System.out.println(result);</programlisting>
 
     <figure xml:id="sd1_numbers_fig_random">
       <title>Using <methodname
-      xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#random--">static
+      xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#random()">static
       double random​()</methodname></title>
 
       <programlisting language="java">for (int i = 0; i &lt; 10; i++) {