From 67fd260930bb31eaf1f2f41e4430336d9f1061b2 Mon Sep 17 00:00:00 2001 From: "Dr. Martin Goik" <goik@hdm-stuttgart.de> Date: Thu, 31 May 2018 18:37:58 +0200 Subject: [PATCH] Whitespace, Java 10 links --- Doc/Sd1/appendix.xml | 20 +-- Doc/Sd1/arrays.xml | 16 +- Doc/Sd1/collections.xml | 126 +++++++-------- Doc/Sd1/coreClasses.xml | 84 +++++----- Doc/Sd1/deployment.xml | 4 +- Doc/Sd1/errorHandling.xml | 20 +-- Doc/Sd1/inheritance.xml | 12 +- Doc/Sd1/interfacesAbstractClasses.xml | 18 +-- Doc/Sd1/languageFundamentals.xml | 52 +++--- Doc/Sd1/objectsClasses.xml | 223 +++++++++++++------------- Doc/Sd1/statements.xml | 158 +++++++----------- Doc/Sd1/streams.xml | 18 +-- Doc/Sd1/workingWithNumbers.xml | 84 +++++----- Doc/Sda1/dom.xml | 14 +- Doc/Sda1/jdbc.xml | 170 ++++++++++---------- Doc/Sda1/jpaintro.xml | 24 +-- Doc/Sda1/projects.xml | 4 +- Doc/Sda1/sax.xml | 6 +- 18 files changed, 516 insertions(+), 537 deletions(-) diff --git a/Doc/Sd1/appendix.xml b/Doc/Sd1/appendix.xml index 57b533713..b52524aed 100644 --- a/Doc/Sd1/appendix.xml +++ b/Doc/Sd1/appendix.xml @@ -1306,9 +1306,9 @@ Your choice: 2</screen> <para><xref linkend="glo_Java"/> allows for matching strings by <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html">regular + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html">regular expressions</link> to be used with e.g. <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#matches-java.lang.String-">String.matches(...)</link>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#matches-java.lang.String-">String.matches(...)</link>. Examples:</para> <glosslist> @@ -1368,7 +1368,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/9/docs/api/java/lang/String.html#split-java.lang.String-">String.split(...)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -1641,8 +1641,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/9/docs/api/java/lang/System.html#out">System.out</methodname><code>.</code><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#println-java.lang.String-">println(...)</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> calls. Consider the following code writing the string <quote>Hello World!</quote> to standard output:</para> @@ -1661,13 +1661,13 @@ The red cross acts worldwide</screen> xlink:href="http://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/9/docs/api/java/io/ByteArrayOutputStream.html">java.io.ByteArrayOutputStream</classname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/System.html#out">System.out</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</classname> during our tests:</para> <programlisting language="java">import java.io.ByteArrayOutputStream; @@ -1750,7 +1750,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/9/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -1762,7 +1762,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/9/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE / 2</code>. Start from the following skeleton:</para> <programlisting language="java">public class Sieve { @@ -1800,7 +1800,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/9/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 68b5562d8..a5a3f08d5 100644 --- a/Doc/Sd1/arrays.xml +++ b/Doc/Sd1/arrays.xml @@ -782,7 +782,7 @@ final String shapes[] = {"Triangle", "Circle"};</programlisting> <section xml:id="sd1_array_sect_classArraysHelper"> <title><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html">java.util.Arrays</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html">java.util.Arrays</classname> helpers</title> <figure xml:id="sd1_array_fig_arraysToStringSort"> @@ -964,7 +964,7 @@ toString: [N.N, N.N, N.N, N.N]</screen> <figure xml:id="sd1_array_fig_arraysCopyOf"> <title><classname xlink:href="https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOfRange-T:A-int-int-">copyOfRange(...)</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOfRange-T:A-int-int-">copyOfRange(...)</methodname></title> <programlisting language="none">final String[] names = {"Eve", "Aaron", "Paul", "Mandy"}; @@ -981,7 +981,7 @@ System.out.println("toString: " + Arrays.toString(lastTwoNames));</programlistin <figure xml:id="sd1_array_fig_arraysEquals"> <title><classname xlink:href="https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html">Arrays</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOfRange-T:A-int-int-">equals(...)</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#equals-java.lang.Object:A-java.lang.Object:A-">equals(...)</methodname></title> <programlisting language="java">final String[] l1 = {"Eve", "Aaron", "Paul", "Mandy"}, @@ -1089,7 +1089,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/9/docs/api/java/util/Arrays.html#copyOf-int:A-int-">Arrays.copyOf()</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOf-int:A-int-">Arrays.copyOf()</methodname></title> <programlisting language="none">public static void main(String[] args) { final int [] start = {1,7,-4}, @@ -2577,9 +2577,9 @@ public void testApp() { 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/9/docs/api/java/lang/System.html#currentTimeMillis--">System.currentTimeMillis()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#currentTimeMillis--">System.currentTimeMillis()</methodname> or <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#nanoTime--">System.nanoTime()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#nanoTime--">System.nanoTime()</methodname> for that purpose.</para> </listitem> </orderedlist> @@ -2814,7 +2814,7 @@ public void testApp() { <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/9/docs/api/java/util/Arrays.html#copyOfRange-int:A-int-int-">copyOfRange(...)</link>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Arrays.html#copyOfRange-int:A-int-int-">copyOfRange(...)</link>.</para> </caution> </listitem> @@ -2979,7 +2979,7 @@ Your sample's median is: 1.0</screen> <orderedlist> <listitem> <para>The <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#copyOfRange-int:A-int-int-">copyOfRange(...)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> returns that portion of our <code language="java">int[] diff --git a/Doc/Sd1/collections.xml b/Doc/Sd1/collections.xml index aaf4c3f27..1286b91a2 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/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/util/Set.html">Set</classname>.</title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>.</title> <qandadiv> <qandaentry> <question> <para>Create a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/util/List.html">List</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/util/List.html">List</classname>.</title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname>.</title> <qandadiv> <qandaentry> <question> <para>Create a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">List</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Object.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> to allow execution of:</para> <programlisting language="java"> // Defining and testing integer coordinates @@ -264,9 +264,9 @@ c12.equals("dummy"):false <answer> <para>Overriding <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> and adding a non-default constructor is a straightforward exercise:</para> @@ -307,20 +307,20 @@ c12.equals("dummy"):false <section xml:id="sd1SetCoordinate"> <title>A <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/util/Set.html">Set</classname>.</title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>.</title> <qandadiv> <qandaentry> <question> <para>Create a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname> of <link linkend="sd1CollectionDefCoordinate"><classname>Coordinate</classname></link> instances including duplicates. Iterate over this set and write @@ -361,9 +361,9 @@ c12.equals("dummy"):false (1|2)</screen> <para>This is due to our own fault not providing a <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> implementation being compatible to our overridden <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> method. Consider:</para> <programlisting language="java"> final Coordinate @@ -383,21 +383,21 @@ c12.equals("dummy"):false 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/9/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> being defined in our superclass <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">Object</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#hashCode--">hashCode()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> but <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">hashCode()</methodname> as well:</para> <programlisting language="java">public class Coordinate { @@ -434,7 +434,7 @@ c12.equals("dummy"):false <section xml:id="sd1CollectionExerciseWordSearch"> <title>Getting a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname> of strings from a text file</title> <qandaset defaultlabel="qanda" xml:id="sd1QandaWordSearch"> @@ -503,7 +503,7 @@ c12.equals("dummy"):false <emphasis role="bold"><code>.,:;?!"</code></emphasis> or white space characters may be achieved by means of <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#split-java.lang.String-">split(...)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 @@ -569,9 +569,9 @@ c12.equals("dummy"):false <answer> <para>The desired result is easy to achieve by exchanging our <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname> by a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/SortedSet.html">SortedSet</classname>:</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/SortedSet.html">SortedSet</classname>:</para> <programlisting language="java"> /** * The set of words found so far. @@ -623,15 +623,15 @@ printer</screen> <orderedlist> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Collections.html#sort-java.util.List-java.util.Comparator-">Collections.sort(</link>List<String>, + 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<String>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Comparator.html">Comparator</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname> c) is your friend.</para> </listitem> <listitem> <para>Defining a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Comparator.html">Comparator</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator</classname> class acting on strings works like:</para> <programlisting language="java">/** @@ -713,7 +713,7 @@ You found Pascal!"</literallayout> <listitem> <para>Define a class <classname>WordFrequency</classname> containing a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> attribute among with an integer number representing its frequency of appearance:</para> @@ -740,9 +740,9 @@ public class WordFrequency { any frequency value.</para> <para>Override <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals(...)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals(...)</methodname> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">hashValue()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">hashValue()</methodname> accordingly.</para> </listitem> @@ -795,9 +795,9 @@ public class WordFrequency { <para>After processing the input text file sort your <code>List<WordFrequency></code> by a suitable <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Comparator.html">Comparator<WordFrequency></classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html">Comparator<WordFrequency></classname> instance by means of <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Collections.html#sort-java.util.List-java.util.Comparator-">Collections.sort(...)</methodname>.</para> + 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> </listitem> </orderedlist> </listitem> @@ -971,7 +971,7 @@ End of records</screen> 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/9/docs/api/java/lang/String.html#split-java.lang.String-">split(...)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#split-java.lang.String-">split(...)</link> method:</para> <programlisting language="java">... = s.split("\",\"");</programlisting> @@ -1062,7 +1062,7 @@ End of records</screen> <para>This requires textually replacing special characters by the above entities e.g. by means of <classname>String</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#replace-java.lang.CharSequence-java.lang.CharSequence-">replace(...)</methodname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#replace-java.lang.CharSequence-java.lang.CharSequence-">replace(...)</methodname>.</para> </glossdef> </glossentry> </glosslist> @@ -1115,11 +1115,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/9/docs/api/java/lang/System.html#out">System.out</link>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#out">System.out</link>. This can be achieved by opening an output <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html">PrintStream</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html">PrintStream</classname> related to a file by means of the <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#PrintStream-java.lang.String-">PrintStream</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#PrintStream-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 @@ -1157,7 +1157,7 @@ End of records</screen> <question> <para>We want to partly implement a simplified version of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname>:</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname>:</para> <programlisting language="java">package de.hdm_stuttgart.mi.sd1.stringset; @@ -1293,7 +1293,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/9/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> in order to gain performance.</para> </listitem> </orderedlist> @@ -1380,28 +1380,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/9/docs/api/java/util/Map.html">Map</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>>. 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/9/docs/api/java/util/Map.html">Map</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>></th> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>></th> </tr> <tr> <th>Word (<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>)</th> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>)</th> <th>Frequency (<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>)</th> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>)</th> </tr> <tr> @@ -1437,10 +1437,10 @@ public interface Set_String { <qandaset defaultlabel="qanda" xml:id="sde1QandaWordFreqMap"> <title>Implementing word frequencies by <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Map.html">Map</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>> instances.</title> <qandadiv> @@ -1450,10 +1450,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/9/docs/api/java/util/Map.html">Map</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>>. For the time being consider the output sorting order yet as irrelevant.</para> </question> @@ -1470,7 +1470,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/9/docs/api/java/util/Map.html">Map</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname> instances.</para> <qandaset defaultlabel="qanda" xml:id="sde1QandaWordFreqMapSortOrder"> @@ -1487,19 +1487,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<Key,Value> in descending order based on the value</quote> you may create a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">List</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Map.Entry.html">Entry</classname>(<<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.Entry.html">Entry</classname>(<<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>>> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>>> from your <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Map.html">Map</classname><<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>> instance on demand (i.e. when sorting). Then define an appropriate <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Comparator.html">Comparator</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 75f9b453a..223f0635a 100644 --- a/Doc/Sd1/coreClasses.xml +++ b/Doc/Sd1/coreClasses.xml @@ -13,7 +13,7 @@ <figure xml:id="sd1_coreclasses_fig_object"> <title>Superclass <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">Object</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname></title> <itemizedlist> <listitem> @@ -210,7 +210,7 @@ s1.equals(s2): true</screen> <question> <para>This exercise aims at a better understanding of <code language="java">System.out.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#format-java.lang.String-java.lang.Object...-">format()</link></code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -245,18 +245,18 @@ s1.equals(s2): true</screen> <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/9/docs/api/java/io/PrintStream.html#format-java.util.Locale-java.lang.String-java.lang.Object...-">overloaded + 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 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/9/docs/api/java/io/PrintStream.html#format-java.lang.String-java.lang.Object...-">format(...)</methodname></code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/String.html">String</code>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/util/Formatter.html#syntax">format + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Formatter.html#syntax">format strings</link> inside the first argument. It uses the <acronym>varargs</acronym> mechanism being described in the <xref linkend="glo_Java"/> classes section of chapter 4 of @@ -311,16 +311,16 @@ java.util.IllegalFormatConversionException: <emphasis role="bold">d != java.lang <section xml:id="sw1SectionCoreClassesUsingMath"> <title>Using class <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html">Math</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname></title> <para><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html">Math</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Math.html">java.lang.Math</classname>.</title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">java.lang.Math</classname>.</title> <qandadiv> <qandaentry> @@ -347,7 +347,7 @@ java.util.IllegalFormatConversionException: <emphasis role="bold">d != java.lang </m:math> </inlineequation> yourself. Actually <xref linkend="glo_Java"/> predefines constants in <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html">java.lang.Math</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -371,9 +371,9 @@ java.util.IllegalFormatConversionException: <emphasis role="bold">d != java.lang }</programlisting> <para>In case you bother about using the somewhat clumsy <varname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#PI">Math.PI</varname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">Math.PI</varname> expression rather than just using <varname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#PI">PI</varname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -418,12 +418,12 @@ public final class Math { ...</programlisting> <para>This accounts for using the expression <varname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#field.summary">Math.PI</varname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Math.html">Math</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">Math</classname> class:</para> <programlisting language="java">import java.lang.<emphasis @@ -442,9 +442,9 @@ public class CircleAreaCalculator { }</programlisting> <para>But since the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Class.html">Math</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Class.html">Math</classname> class belongs to the <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-frame.html">java.lang</package> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-frame.html">java.lang</package> package it is present by default and does not have to be imported.</para> </answer> @@ -633,8 +633,8 @@ public class CircleAreaCalculator { <tip> <para>The method <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/StringBuffer.html">StringBuffer</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/StringBuffer.html#appendCodePoint-int-">appendCodePoint</methodname> + 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> allows the conversion of integer <xref linkend="glo_unicode"/> values to the corresponding character sequence.</para> </tip> @@ -718,7 +718,7 @@ public class CircleAreaCalculator { <listitem> <para>The <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -726,7 +726,7 @@ public class CircleAreaCalculator { <listitem> <para>The <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -745,9 +745,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/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> documentation the method<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#substring-int-int-"> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#substring-int-int-"> substring(...)</methodname> allows for accessing the set of all substrings of 13 adjacent digits:</para> @@ -793,7 +793,7 @@ public class CircleAreaCalculator { 0420752963450</screen> <para>The method <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#charAt-int-">charAt(int + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 Unicode value of e.g. @@ -838,7 +838,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/9/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -948,9 +948,9 @@ public class CircleAreaCalculator { <listitem> <para>Read the documentation of <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#identityHashCode-java.lang.Object-">System.identityHashCode(Object + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#identityHashCode-java.lang.Object-">System.identityHashCode(Object o)</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">Object.hashCode()</link>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">Object.hashCode()</link>.</para> </listitem> </itemizedlist> </tip> @@ -988,13 +988,13 @@ b1.equals(b2): true</programlisting> role="bold">"TestA" == "TestA"</emphasis>);</programlisting> <para>The method <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#identityHashCode-java.lang.Object-">System.identityHashCode(Object + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#identityHashCode-java.lang.Object-">System.identityHashCode(Object o)</link> returns <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">Object.hashCode()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">Object.hashCode()</link> rather then <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#hashCode--">String.hashCode()</link>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#hashCode--">String.hashCode()</link>. This hash code from <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">java.lang.Object</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -1007,14 +1007,14 @@ b1.equals(b2): true</programlisting> <para>So <code language="java">a1</code> and <code language="java">a2</code> indeed point to the same object resulting in true when using the <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> method for comparison.</para> </callout> <callout arearefs="answerCoStringOperatorEquality-2-co" xml:id="answerCoStringOperatorEquality-2"> <para>Every call to the <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#String-java.lang.String-">String + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#String-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 @@ -1035,7 +1035,7 @@ b1.equals(b2): true</programlisting> language="java">false</code>.</para> <para>The <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -1121,7 +1121,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/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> instance:</para> <informalfigure> @@ -1141,9 +1141,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/9/docs/api/java/lang/String.html#concat-java.lang.String-">concat(...)</methodname>will + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -1358,7 +1358,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/9/docs/api/java/lang/System.html">along + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html">along with its API</link>. The table of system properties in <xref linkend="bib_Kurniawan2015"/> will enable your implementation to work both on Windows and non-Windows systems @@ -1372,7 +1372,7 @@ File extension: html</screen> linkend="bib_Kurniawan2015"/> shows an example dissecting a string containing tokens being separated by space characters using the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/StringTokenizer.html">java.util.StringTokenizer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 @@ -1386,18 +1386,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/9/docs/api/java/lang/StringBuffer.html">StringBuffer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/StringBuffer.html">StringBuffer</classname> or a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/StringJoiner.html">StringJoiner</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/String.html#indexOf-int-">indexOf(...)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#indexOf-int-">indexOf(...)</methodname> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#substring-int-int-">substring(...)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 67a4b5bb7..d59234833 100644 --- a/Doc/Sd1/deployment.xml +++ b/Doc/Sd1/deployment.xml @@ -87,7 +87,7 @@ public class ArrayMethodTest { <para>You may search the <xref linkend="glo_API"/> of class <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Character.html">Character</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html">Character</classname> assisting you to distinguish letters from non-letters.</para> </listitem> @@ -175,7 +175,7 @@ Your sample's median is: 6.0</screen> 7</code></quote> to 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/9/docs/api/java/lang/Integer.html#parseInt-java.lang.String-">parseInt(String)</methodname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 diff --git a/Doc/Sd1/errorHandling.xml b/Doc/Sd1/errorHandling.xml index 97cf8636f..63e7631f2 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/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> is a class</title> <mediaobject> @@ -110,9 +110,9 @@ try { System.out.println("Business as usual ...");</programlisting> <para>What happens if <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> is being replaced by <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>?</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>?</para> <para>Is there a way to catch all possible exceptions?</para> </question> @@ -129,9 +129,9 @@ try { System.out.println("Business as usual ...");</programlisting> <para>The runtime system throws a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> which is no subclass of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>:</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname>:</para> <mediaobject> <imageobject> @@ -140,9 +140,9 @@ System.out.println("Business as usual ...");</programlisting> </mediaobject> <para>If <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname> was a subclass of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/OutOfMemoryError.html">OutOfMemoryError</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -273,7 +273,7 @@ public void copyFile() throws IOException { }</programlisting> <para>Since we swallow the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/nio/file/FileAlreadyExistsException.html">FileAlreadyExistsException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> diff --git a/Doc/Sd1/inheritance.xml b/Doc/Sd1/inheritance.xml index 92ad0efe8..2e1e420e3 100644 --- a/Doc/Sd1/inheritance.xml +++ b/Doc/Sd1/inheritance.xml @@ -265,7 +265,7 @@ public Shape(double x,double y) { <figure xml:id="sda_inherit_fig_shapeToStringRedefine"> <title>Overwriting <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#toString--">toString()</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname></title> <mediaobject> <imageobject> @@ -918,7 +918,7 @@ double p = c.move(1, 5).move(-3, 7).getPrimeter();</programlisting> <section xml:id="sd1SectFigureToString"> <title>Providing <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname> methods</title> <qandaset defaultlabel="qanda" xml:id="sd1QandaFigureToString"> @@ -939,9 +939,9 @@ double p = c.move(1, 5).move(-3, 7).getPrimeter();</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/9/docs/api/java/lang/Object.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#toString--">toString()</methodname> method being defined in the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">Object</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname> superclass. Override this method in <classname>Shape</classname>, <classname>Circle</classname> and <classname>Rectangle</classname> accordingly to @@ -1313,7 +1313,7 @@ Type Rectangle</screen></td> <figure xml:id="sd1_inherit_fig_rectangleEquals"> <title>Implementing <classname>Rectangle</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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) { @@ -1337,7 +1337,7 @@ Type Rectangle</screen></td> <figure xml:id="sd1_inherit_fig_circleEquals"> <title>Implementing <classname>Circle</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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) { diff --git a/Doc/Sd1/interfacesAbstractClasses.xml b/Doc/Sd1/interfacesAbstractClasses.xml index 00a298a5e..dbc87742c 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/9/docs/api/java/lang/AutoCloseable.html">java.lang.AutoCloseable</link> + <link xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname> promise</title> <informaltable border="0"> @@ -214,13 +214,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/9/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Override.html">@Override</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Override.html">@Override</classname> annotation resemblance to overriding base class methods in derived classes.</para> </callout> @@ -241,7 +241,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/9/docs/api/java/lang/Override.html">@Override</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Override.html">@Override</classname> here since close() is being implemented rather tan overriding a base class method not existing anyway.</para> </callout> @@ -249,7 +249,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/9/docs/api/java/io/PrintStream.html">PrintStream</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html">PrintStream</classname> thereby flushing buffered strings prior to releasing allocated operating system resources.</para> </callout> @@ -260,7 +260,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/9/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NullPointerException.html">NullPointerException</classname>. Thus silent errors become observable errors.</para> </callout> </calloutlist></td> @@ -340,7 +340,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/9/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname> interface.</para> </callout> @@ -457,7 +457,7 @@ public interface MyFlushable extends MyAutoCloseable { <qandaentry> <question> <para>Consider the following <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 2760e4876..4548a747b 100644 --- a/Doc/Sd1/languageFundamentals.xml +++ b/Doc/Sd1/languageFundamentals.xml @@ -1094,7 +1094,7 @@ int i = (int) d; // Explicit cast double to int</programlisting> <td>byte</td> <td><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Byte.html#BYTES">1</link></td> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#BYTES">1</link></td> <td><link xlink:href="https://docs.oracle.com/javase/9/docs/api/constant-values.html#java.lang.Byte.MIN_VALUE"><inlineequation> @@ -1133,7 +1133,7 @@ int i = (int) d; // Explicit cast double to int</programlisting> <td>char</td> <td><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Byte.html#BYTES">2</link></td> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#BYTES">2</link></td> <td>0</td> @@ -1586,13 +1586,13 @@ int i = (int) d; // Explicit cast double to int</programlisting> 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/9/docs/api/java/lang/Character.html">Character</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html">Character</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Byte.html">Byte</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html">Byte</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Short.html">Short</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html">Short</classname> and <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname> classes. You may want to execute:</para> <programlisting language="java"> System.out.println("int minimum:" + Integer.MIN_VALUE); @@ -1636,12 +1636,12 @@ Different</screen></td> <glosslist> <glossentry> - <glossterm>Bad</glossterm> + <glossterm>Bad:</glossterm> <glossdef> <programlisting language="java">double pi = 3.141592653589793; ... -pi = -4; // Woops, accidential redefinition</programlisting> +pi = -4; // Woops, accidential and erroneous redefinition</programlisting> </glossdef> </glossentry> @@ -1657,12 +1657,12 @@ pi = -4; // Compile time error: </glossentry> <glossentry> - <glossterm>Even better</glossterm> + <glossterm>Even better:</glossterm> <glossdef> <para><programlisting language="java">final double PI = 3.141592653589793; // Coding style (Best practices): // Using capital letters for -... // constant variable.</programlisting></para> + // constant variable.</programlisting></para> </glossdef> </glossentry> </glosslist> @@ -1919,7 +1919,7 @@ Arrow value: 10173</screen> value directly:</para> <programlisting language="java">System.out.println(Character.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Character.html#toChars-int-">toChars(0x1f60e)</methodname>);</programlisting> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Character.html#toChars-int-">toChars(0x1f60e)</methodname>);</programlisting> </listitem> </orderedlist> </answer> @@ -1934,7 +1934,7 @@ Arrow value: 10173</screen> role="red">L</emphasis>); // o.K. System.out.println(10000000000 ); // Compile time error: Integer number larger // than 2147483647 (2^31 - 1, Integer.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</link>) + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</link>) </programlisting> </figure> @@ -4308,8 +4308,8 @@ System.out.println(2147483647 + 1L);</programlisting> 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/9/docs/api/java/lang/Integer.html">Integer</classname>.<property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#MAX_VALUE">MAX_VALUE</property>. + 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>. The plus operator in the first expression <code language="java">2147483647 + 1</code> acts on two operands of type <code language="java" @@ -4415,7 +4415,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/9/docs/api/java/lang/Math.html#abs-double-">Math.abs</link>(x - y) < 1.E-14);</programlisting> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#abs-double-">Math.abs</link>(x - y) < 1.E-14);</programlisting> <para>The last line represents the boolean expression <inlineequation> @@ -4460,10 +4460,10 @@ System.out.println(<link <programlisting language="java">try { int sum = Math.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#addExact-int-int-">addExact(2147480000, 2147480000)</link>; + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/ArithmeticException.html">ArithmeticException</link> ex) { + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/ArithmeticException.html">ArithmeticException</link> ex) { System.err.println("Problem: " + ex.getMessage()); }</programlisting> @@ -4522,7 +4522,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/9/docs/api/java/lang/Double.html#NaN">not + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Double.html#NaN">not a number</quote> encoded value.</parameter></para> </listitem> </itemizedlist> @@ -4832,14 +4832,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/9/docs/api/java/lang/Math.html#PI">Math + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Math.html#PI">Math.PI</link>:</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 " + @@ -5412,11 +5412,11 @@ System.out.println("a = " + a + ", b = " + b + ", c = " + c);</programlisting> <title>Comments</title> <figure xml:id="sd1_fig_commentsTwoFlavors"> - <title>Two comment flavors</title> + <title><xref linkend="glo_Java"/> comment flavors</title> <glosslist> <glossentry> - <glossterm>Multiline comment</glossterm> + <glossterm>Multi line comment</glossterm> <glossdef> <programlisting language="java">int a; @@ -5438,9 +5438,15 @@ a = 33; // Then subsequently a value is being assigned</programlisting> </figure> <figure xml:id="sd1_fig_inlineComment"> - <title><quote>Inline</quote> comments</title> + <title>Inline comments</title> <programlisting language="java">int strength = a /* fixed value */ + b /* age */ + c /* courage */;</programlisting> + + <para>Run-time equivalent to:</para> + + <programlisting language="java">int strength = a + b + c;</programlisting> + + <programlisting/> </figure> </section> </chapter> diff --git a/Doc/Sd1/objectsClasses.xml b/Doc/Sd1/objectsClasses.xml index cc2a4ae4d..dc108eac1 100644 --- a/Doc/Sd1/objectsClasses.xml +++ b/Doc/Sd1/objectsClasses.xml @@ -247,8 +247,8 @@ if (null == r) { <itemizedlist> <listitem> <para><package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-frame.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/package-frame.html">java.lang</package>.<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname></para> </listitem> <listitem> @@ -380,9 +380,11 @@ public class Q {<lineannotation>Class def</lineannotation> role="red">*</emphasis>; public class Q { - public static void main(String[] args) { - Scanner s = new Scanner(System.in); - Date today = new Date(); + public static void + main(String[] args) { + Scanner s = + new Scanner(System.in); + Date today = new Date(); } }</programlisting></td> @@ -391,9 +393,11 @@ public class Q { import java.util.<emphasis role="red">Scanner</emphasis>; public class Q { - public static void main(String[] args) { - Scanner s = new Scanner(System.in); - Date today = new Date(); + public static void + main(String[] args) { + Scanner s = + new Scanner(System.in); + Date today = new Date(); } }</programlisting></td> </tr> @@ -417,33 +421,33 @@ public class Q { xml:id="sd1_fig_javaDotLangNoImportRequired-3-co"/> s = new Scanner(System.in); } }</programlisting> + </figure> - <calloutlist> - <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/9/docs/api/java/lang/package-summary.html">java.lang</package> - package are being imported automatically.</para> - </callout> + <calloutlist> + <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> + 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/9/docs/api/java/util/Scanner.html">Scanner</classname> - class belongs to the <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/package-summary.html">java.util</package> - package and must thus be imported.</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> + class belongs to the <package + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/package-summary.html">java.util</package> + package and must thus be imported.</para> + </callout> - <callout arearefs="sd1_fig_javaDotLangNoImportRequired-3-co" - xml:id="sd1_fig_javaDotLangNoImportRequired-3"> - <para>Without the import <classname>java.util.Scanner</classname> - statement we need the fully qualified class name:</para> + <callout arearefs="sd1_fig_javaDotLangNoImportRequired-3-co" + xml:id="sd1_fig_javaDotLangNoImportRequired-3"> + <para>Without the import <classname>java.util.Scanner</classname> + statement we need the fully qualified class name:</para> - <programlisting language="java">java.util.Scanner s = new java.util.Scanner(System.in);</programlisting> - </callout> - </calloutlist> - </figure> + <programlisting language="java">java.util.Scanner s = new java.util.Scanner(System.in);</programlisting> + </callout> + </calloutlist> <figure xml:id="sd1_fig_package2directory"> <title>Class, package and file system</title> @@ -1418,25 +1422,25 @@ public void writeSvg() { } public int getMinute() {<coref linkend="sd1_callout_publicPrivateInterface-2-co"/> - return - (int) (secondsSince_2000_01_01 / 60) % 60; + return (int) + (secondsSince_2000_01_01 / 60) % 60; } // ... }</programlisting></td> <td valign="top"><programlisting language="java">public class Time { - private int second, minute, <coref + private int second, minute,<coref linkend="sd1_callout_publicPrivateInterface-1-co"/> hour,day, month, year; - public int getSecond() { <coref + public int getSecond() { <coref linkend="sd1_callout_publicPrivateInterface-2-co"/> return second; - } - public int getMinute() { <coref + } + public int getMinute() { <coref linkend="sd1_callout_publicPrivateInterface-2-co"/> return minute; - } + } // ... }</programlisting></td> </tr> @@ -2227,47 +2231,47 @@ void main(void) { <informaltable border="0"> <tr> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-boolean-">print(boolean + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-boolean-">print(boolean b)</methodname></td> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-char-">print(char + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-char-">print(char c)</methodname></td> </tr> <tr> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-char:A-">print(char[] + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-char:A-">print(char[] s)</methodname></td> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-double-">print(double + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-double-">print(double d)</methodname></td> </tr> <tr> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-float-">print(float + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-float-">print(float f)</methodname></td> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-int-">print(int + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-int-">print(int i)</methodname></td> </tr> <tr> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-long-">print(long + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-long-">print(long l)</methodname></td> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-java.lang.Object-">print(Object + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-java.lang.Object-">print(Object obj)</methodname></td> </tr> <tr> <td><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-java.lang.String-">print(String + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-java.lang.String-">print(String s)</methodname></td> <td/> @@ -2324,21 +2328,21 @@ a = 33;</programlisting></td> this.hasSolidBorder = hasSolidBorder; } }</programlisting> + </figure> - <para>Similar to <xref linkend="fig_methodSyntax"/> but:</para> + <para>Similar to <xref linkend="fig_methodSyntax"/> but:</para> - <calloutlist> - <callout arearefs="sd1_callout_defineConstructor-1-co" - xml:id="sd1_callout_defineConstructor-1"> - <para>No return type declaration.</para> - </callout> + <calloutlist> + <callout arearefs="sd1_callout_defineConstructor-1-co" + xml:id="sd1_callout_defineConstructor-1"> + <para>No return type declaration.</para> + </callout> - <callout arearefs="sd1_callout_defineConstructor-2-co" - xml:id="sd1_callout_defineConstructor-2"> - <para>Constructor's name equals class name.</para> - </callout> - </calloutlist> - </figure> + <callout arearefs="sd1_callout_defineConstructor-2-co" + xml:id="sd1_callout_defineConstructor-2"> + <para>Constructor's name equals class name.</para> + </callout> + </calloutlist> <figure xml:id="sd1_fig_constructorSyntax"> <title>Constructor syntax</title> @@ -2425,22 +2429,26 @@ a = 33;</programlisting></td> <td valign="top"><programlisting language="java">public class Rectangle { int width, height; - public Rectangle(int width, int height){ + public Rectangle(int width, + int height){ this.width = width; this.height = height; } public Rectangle() { width = height = 1; } - public Rectangle(int widthAndHeight) { - width = height = widthAndHeight; + public Rectangle( + int widthAndHeight) { + width = height = + widthAndHeight; } }</programlisting></td> <td><programlisting language="java">public class Rectangle { int width, height; - public Rectangle(int width, int height){ + public Rectangle(int width, + int height){ this.width = width; this.height = height; } @@ -2448,8 +2456,10 @@ a = 33;</programlisting></td> this(1, 1); <co linkends="sd1_fig_rectangle_constructorCallsConstructor-1" xml:id="sd1_fig_rectangle_constructorCallsConstructor-1-co"/> } - public Rectangle(int widthAndHeight) { - this(widthAndHeight, widthAndHeight); <co + public Rectangle( + int widthAndHeight) { + this(widthAndHeight, + widthAndHeight); <co linkends="sd1_fig_rectangle_constructorCallsConstructor-2" xml:id="sd1_fig_rectangle_constructorCallsConstructor-2-co"/> } @@ -2524,22 +2534,22 @@ Rectangle individual = new Rectangle(2, 7); // 2 x 7</programlisting></td> <informaltable border="1"> <tr> <td rowspan="2"><programlisting language="java">public class Rectangle { - int width, height; - boolean hasSolidBorder; + int width, height; + boolean hasSolidBorder; - public Rectangle - (int width, - int height, - boolean hasSolidBorder){ - this.width = width; - this.height = height; - this.hasSolidBorder = - hasSolidBorder; - } + public Rectangle(int width, + int height, + boolean hasSolidBorder){ + this.width = width; + this.height = height; + this.hasSolidBorder = + hasSolidBorder; + } }</programlisting></td> - <td valign="top"><programlisting language="java">Rectangle r = new Rectangle(3, 6, false);</programlisting><para>o.K., - using non-default constructor.</para></td> + <td valign="top"><programlisting language="java">Rectangle r = + new Rectangle(3, 6, false);</programlisting><para>o.K.: Using non-default + constructor.</para></td> </tr> <tr> @@ -3053,8 +3063,8 @@ Hello 'John'</screen> <orderedlist> <listitem> <para>Use a <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + 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> instance variable inside your private <classname>String</classname> class.</para> </listitem> @@ -3063,7 +3073,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/9/docs/api/java/lang/String.html">java.lang.String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">java.lang.String</classname> internally requires a fully qualified class name.</para> </listitem> </orderedlist> @@ -3099,15 +3109,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/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>.</para> + 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> </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/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + 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> instance internally. Fully qualified class name required resolving potential name clash.</para> </callout> @@ -3116,16 +3126,16 @@ 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/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + 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> instance.</para> </callout> <callout arearefs="sd1_callout_createStringClass-4-co" xml:id="sd1_callout_createStringClass-4"> <para>Returning a <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + 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> instance.</para> </callout> </calloutlist> @@ -3133,15 +3143,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/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + 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> in the same scope:</para> <glosslist> <glossentry> <glossterm>Fully qualify <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/package-summary.html">java.lang</package>.<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname>:</glossterm> + 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> <glossdef> <programlisting language="java">package de.hdm_stuttgart.mi; @@ -3200,7 +3210,7 @@ public class Main { <callout arearefs="sd1_callout_createStringAnswer2-1-co" xml:id="sd1_callout_createStringAnswer2-1"> <para>A <xref linkend="glo_Java"/> standard <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> instance.</para> </callout> @@ -3949,7 +3959,7 @@ public class <link <orderedlist> <listitem> <para>Consider the <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#sin-double-">sin(...)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 @@ -3970,7 +3980,7 @@ public class <link <listitem> <para>Rounding the sine's value is the crucial part here. The function <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#round-double-">round()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#round-double-">round()</link> is quite helpful. Consider the following example rounding 23.22365 to four decimal places:</para> @@ -3981,7 +3991,7 @@ public class <link <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#round-double-">round(232236.5)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#round-double-">round(232236.5)</link> results in 232237 (long).</para> </listitem> @@ -5075,9 +5085,6 @@ Largest long value:9223372036854775807</screen></td> <imagedata fileref="Ref/ObjectsAndClasses/DependencyExample/newtonHooke.svg"/> </imageobject> </mediaobject> - - <para>»If I have seen further it is by standing on ye sholders of - Giants«</para> </figure> <figure xml:id="sd1_fig_projectDepenndencyExampla"> @@ -6375,9 +6382,9 @@ System.out.println(factorial(3));</programlisting> <tip> <para>The standard methods <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#currentTimeMillis--">currentTimeMillis()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#currentTimeMillis--">currentTimeMillis()</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#nanoTime--">nanoTime</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#nanoTime--">nanoTime</link> allow for measuring method execution by means of subtracting time stamp values prior and after execution. <quote @@ -6697,7 +6704,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/9/docs/api/java/lang/Math.html">java.lang.Math</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html">java.lang.Math</link> is intended: You'll learn how to resolve naming conflicts.</para> @@ -6738,7 +6745,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/9/docs/api/java/lang/Math.html#exp-double">java.lang.Math.exp</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#exp-double">java.lang.Math.exp</link> by calculating <inlineequation> <m:math display="inline"> <m:msup> @@ -6793,7 +6800,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/9/docs/api/java/lang/Math.html#pow-double-double-">Math.pow(double + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 @@ -7405,7 +7412,7 @@ e^3=19.412499999999998, difference=-0.67303692318767</screen> </m:mrow> </m:math> </inlineequation> using <varname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#PI">java.lang.Math.PI</varname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#PI">java.lang.Math.PI</varname>. Explain your results' accuracy for these arguments.</para> </question> @@ -8576,7 +8583,7 @@ sin(4 * PI)=4518.2187229323445, difference=4518.2187229323445</screen> arguments to this interval appropriately.</para> <para>Hint: The standard function <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#floor-double-">Math.rint(double)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -9956,7 +9963,7 @@ Actual :-32768</screen> 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/9/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> diff --git a/Doc/Sd1/statements.xml b/Doc/Sd1/statements.xml index 0c81c6b42..e1e040726 100644 --- a/Doc/Sd1/statements.xml +++ b/Doc/Sd1/statements.xml @@ -206,12 +206,15 @@ Done!</screen></td> <informaltable border="1"> <tr> <td valign="top"><programlisting language="java">double initialAmount = 420.00; - -if (100000 <= initialAmount) { +... +if (100000 <= initialAmount <co linkends="sd1_fig_ifElse-1" + xml:id="sd1_fig_ifElse-1-co"/>) { <co + linkends="sd1_fig_ifElse-2" xml:id="sd1_fig_ifElse-2-co"/> // Rich customer, 1,2% interest rate System.out.println( "Interest:" + 1.2 * initialAmount / 100); -} else { +} <co linkends="sd1_fig_ifElse-3" xml:id="sd1_fig_ifElse-3-co"/> else { <co + linkends="sd1_fig_ifElse-4" xml:id="sd1_fig_ifElse-4-co"/> // Joe customer, 0.8% standard interest rate System.out.println( "Interest:" + 0.8 * initialAmount / 100); @@ -226,31 +229,27 @@ Done!</screen></td> </mediaobject></td> </tr> </informaltable> + </figure> - <informaltable border="1"> - <tr> - <td><itemizedlist> - <listitem> - <para>Decision on boolean expression</para> - </listitem> + <calloutlist> + <callout arearefs="sd1_fig_ifElse-1-co" xml:id="sd1_fig_ifElse-1"> + <para>Decision on boolean expression.</para> + </callout> - <listitem> - <para>Acting on blocks or single statements</para> - </listitem> - </itemizedlist></td> + <callout arearefs="sd1_fig_ifElse-2-co" xml:id="sd1_fig_ifElse-2"> + <para>Conditional execution of on block or single statement.</para> + </callout> - <td><itemizedlist> - <listitem> - <para>Must have one branch.</para> - </listitem> + <callout arearefs="sd1_fig_ifElse-3-co" xml:id="sd1_fig_ifElse-3"> + <para>Required branch being executed in case of boolean expression + being true.</para> + </callout> - <listitem> - <para>May have a second branch.</para> - </listitem> - </itemizedlist></td> - </tr> - </informaltable> - </figure> + <callout arearefs="sd1_fig_ifElse-4-co" xml:id="sd1_fig_ifElse-4"> + <para>Optional branch corresponding to boolean expression being + false.</para> + </callout> + </calloutlist> <figure xml:id="sd1_fig_ifElseSyntax"> <title><code language="java">if ... else</code> execution syntax</title> @@ -469,7 +468,7 @@ else </figure> <figure xml:id="sd1_fig_corporateSafety"> - <title>Corporate network security</title> + <title>Aside: Corporate network security</title> <para>Would you access your online bank account using <emphasis role="bold">Stuttgart Media University's</emphasis> network?</para> @@ -526,12 +525,10 @@ else <quote><code>goto fail</code></quote> SSL bug</link></title> <programlisting language="c">static OSStatus -SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, - uint8_t *signature, UInt16 signatureLen) -{ +SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, + SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen) { OSStatus err; ... - if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) @@ -542,7 +539,6 @@ SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedPa err = sslRawVerify(...); ... - fail: SSLFreeBuffer(&signedHashes); SSLFreeBuffer(&hashCtx); @@ -556,12 +552,11 @@ fail: <informaltable border="0"> <tr> <td><programlisting language="c">... - if ((err = SSLHashSHA1.update(...)) != 0) goto fail; goto fail;</programlisting></td> - <td>Reachable code</td> + <td>Reachable code, <code>err</code> yet 0</td> </tr> <tr> @@ -578,10 +573,9 @@ err = sslRawVerify(...); <td><programlisting language="c">fail: SSLFreeBuffer(&signedHashes); SSLFreeBuffer(&hashCtx); - return err; -}</programlisting></td> + return err;</programlisting></td> - <td>Reachable code</td> + <td>Reachable code, <code>err</code> possibly still 0</td> </tr> </informaltable> </figure> @@ -831,10 +825,10 @@ System.out.println("Failed!");</programlisting> <programlisting language="java">try (final <link xlink:href="https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html">Scanner</link> scan = new <link xlink:href="https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html">Scanner</link>(<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#in">System.in</link>)){ + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/System.html#in">System.in</link>)){ System.out.print("Enter a value:"); final int value = scan.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html#nextInt--">nextInt()</link>; + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextInt--">nextInt()</link>; System.out.println("You entered " + value); }</programlisting> @@ -927,8 +921,8 @@ You entered 1234567</screen> }</programlisting> <para>You will fully understand the above expression <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html">Math</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#min-int-int-">min(...)</methodname> + 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> after finishing the <quote>Static Final Variables</quote> section of <xref linkend="bib_Kurniawan2015"/>.</para> </answer> @@ -950,7 +944,7 @@ You entered 1234567</screen> <figure xml:id="sd1VideoUsingScannerClass"> <title>Using a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html">Scanner</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">Scanner</classname> class collecting user input.</title> <mediaobject> @@ -1487,8 +1481,8 @@ Unknown day name 'July'</screen> <listitem> <para>You may read strings into your application using <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html">Scanner</classname>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html#next--">next()</methodname>;</para> + 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> </listitem> </orderedlist> </tip> @@ -2055,38 +2049,21 @@ while (i < 5 <coref linkend="sd1_callout_whileLoopJustCounting-2-co"/>) { <informaltable border="1"> <tr> - <td><programlisting language="java">for (int i = 0 <co - linkends="sd1_callout_forVariableScope-1" - xml:id="sd1_callout_forVariableScope-1-co"/>; i < 3; i++) { + <td><programlisting language="java">for (int i = 0 ; i < 3; i++) { System.out.println(i); } +<emphasis role="bold">// Error: i undefined outside +// loop body</emphasis> +System.out.println(i);</programlisting></td> -System.out.println(i); <emphasis role="bold">// Error: i undefined </emphasis></programlisting></td> - - <td><programlisting language="java">int i; <co - linkends="sd1_callout_forVariableScope-2" - xml:id="sd1_callout_forVariableScope-2-co"/> + <td><programlisting language="java">// i defined in »current« scope +int i; for (i = 0; i < 3; i++) { System.out.println(i); } - System.out.println(i); // o.K.</programlisting></td> </tr> </informaltable> - - <calloutlist> - <callout arearefs="sd1_callout_forVariableScope-1-co" - xml:id="sd1_callout_forVariableScope-1"> - <para>Scope of variable i bound to <code - language="java">for</code> loop</para> - </callout> - - <callout arearefs="sd1_callout_forVariableScope-2-co" - xml:id="sd1_callout_forVariableScope-2"> - <para>Variable <code language="java">i</code> defined in - <quote>current</quote> scope.</para> - </callout> - </calloutlist> </figure> <figure xml:id="sd1_fig_forVariableScopeEquivalence"> @@ -2224,19 +2201,8 @@ while (i < limit) { </informaltable> <tip> - <para>Consider renaming:</para> - - <itemizedlist> - <listitem> - <para><code language="java">i</code> to <code - language="java">row</code></para> - </listitem> - - <listitem> - <para><code language="java">j</code> to <code - language="java">column</code></para> - </listitem> - </itemizedlist> + <para>Consider renaming <code>i</code> to <code>row</code> and + <code>j</code> to <code>column</code>.</para> </tip> </figure> @@ -2363,9 +2329,9 @@ for (int row = 0; row < 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/9/docs/api/java/io/PrintStream.html#print-java.lang.String-">print(....)</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-java.lang.String-">print(....)</methodname> rather than a <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#println-java.lang.String-">println()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -2375,12 +2341,12 @@ for (int row = 0; row < 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/9/docs/api/java/io/PrintStream.html#println--">println()</methodname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#println--">println()</methodname>. If you prefer explicit code you may use <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html">System</package>.<parameter - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#out">out</parameter>. + 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>. <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#print-char-">print('\n')</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#print-char-">print('\n')</methodname> instead.</para> </callout> </calloutlist> @@ -2641,9 +2607,9 @@ for (int row = 0; row < numberOfRows; row++) { <methodname>printIndented(...)</methodname> which prints a string a configurable number of times being indented by a given number of whitespace characters using <package - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html">System</package>.<parameter - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#out">out</parameter>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#format-java.lang.String-java.lang.Object...-">format(...)</methodname> + 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>.<methodname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/PrintStream.html#format-java.lang.String-java.lang.Object...-">format(...)</methodname> as in <xref linkend="sd1QandaSquareNumberTableFormatted"/>.</para> @@ -2791,8 +2757,8 @@ for (int row = 0; row < numberOfRows; row++) { <answer> <para>The implementation requires <methodname><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#out">System.out</link>.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#println--">println</link>(...)</methodname> + 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> statements to print the table's head and a loop for printing the body:</para> @@ -2870,11 +2836,11 @@ for (int row = 0; row < numberOfRows; row++) { <answer> <para>The key difference is replacing <methodname><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#out">System.out</link>.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#println--">println</link>(...)</methodname> + 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> statements by <methodname><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#out">System.out</link>.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html#format-java.lang.String-java.lang.Object...-">format</link>(...)</methodname>:</para> + 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>(...)</methodname>:</para> <programlisting language="java"> public static void main(String[] args) { @@ -3771,7 +3737,7 @@ for (int i = 1; i < 50; i++) { </m:math> </inlineequation> equals 6227020800 which is ways beyond <code - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> == 2147483647 giving rise to a (silent) arithmetic overflow. But even declaring <code language="java">long product = 1</code> does not help much:</para> @@ -3802,7 +3768,7 @@ for (int i = 1; i < 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/9/docs/api/java/lang/Long.html#MAX_VALUE">Long.MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Long.html#MAX_VALUE">Long.MAX_VALUE</code> == 9223372036854775807.</para> <para>Fortunately we have another option. Consider an @@ -4393,7 +4359,7 @@ import java.util.Random; public static void main(String[] args) { final int randomValue = new Random() // Selecting a pseudo random value - .<link xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Random.html#nextInt--">nextInt(10)</link>; // between 0 and 10 (inclusive). + .<link xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Random.html#nextInt--">nextInt(10)</link>; // between 0 and 10 (inclusive). final Scanner scan = new Scanner(System.in); System.out.print("Input a number:"); diff --git a/Doc/Sd1/streams.xml b/Doc/Sd1/streams.xml index 39073f698..0ff4dcfff 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/9/docs/api/java/io/BufferedReader.html">BufferedReader</classname>:</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname> problems providing meaningful error messages.</para> </listitem> <listitem> <para>The <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/BufferedReader.html">BufferedReader</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname> class provides a method <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/BufferedReader.html#readLine--">readLine()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/io/IOException.html">IOException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/IOException.html">IOException</classname> problems being related to <acronym>i.e.</acronym> missing permissions.</para> </caution> @@ -124,7 +124,7 @@ final BufferedReader inputBufferedReader = new BufferedReader(fileReader);</prog <para>Notice the second test which will only succeed if a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/FileNotFoundException.html">FileNotFoundException</classname> is being thrown.</para> </answer> </qandaentry> @@ -224,16 +224,16 @@ final BufferedReader inputBufferedReader = new BufferedReader(fileReader);</prog 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/9/docs/api/java/io/BufferedReader.html">BufferedReader</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/io/BufferedReader.html">BufferedReader</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/BufferedReader.html">BufferedReader</classname> from <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/System.html#in">System.in</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 2ab3b6db1..c8f2f2241 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/9/docs/api/java/util/Stack.html">Stack</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">public + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">public boolean equals</methodname>(<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">Object</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname> obj)</para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#hashCode--">public + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#hashCode--">public int hashCode()</methodname></para> </listitem> </itemizedlist> @@ -162,14 +162,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/9/docs/api/java/lang/Integer.html">Integer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Integer.html">Integer</classname>'s + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname>'s value to a primitive <code language="java">int</code> by means of unboxing.</para> </callout> @@ -185,19 +185,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/9/docs/api/java/lang/Integer.html">Integer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname> using the class method <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#valueOf-int-">Integer + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Integer.html">Integer</classname>'s + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Integer.html#intValue--">int + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#intValue--">int intValue()</methodname> instance method.</para> </callout> </calloutlist></td> @@ -245,7 +245,7 @@ while (!values.empty()) { <figure xml:id="sd1_numbers_fig_parseIntegerString"> <title>Parsing <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html">Integer</classname> user input</title> <informaltable border="0"> @@ -294,14 +294,14 @@ not an integer.</screen></td> <listitem> <para>The <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html#nextLine--">Scanner.nextLine()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextLine--">Scanner.nextLine()</methodname> method does not throw a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> . But this execution happens <emphasis>after</emphasis> assigning <code language="java">userInput = scanner.nextLine()</code>.</para> @@ -370,39 +370,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/9/docs/api/java/lang/Byte.html#parseByte-java.lang.String-">parseByte()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Byte.html#parseByte-java.lang.String-">parseByte()</methodname></para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Short.html#parseShort-java.lang.String-">parseShort()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#parseShort-java.lang.String-">parseShort()</methodname></para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#parseInt-java.lang.String-">parseInt()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#parseInt-java.lang.String-">parseInt()</methodname></para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Long.html#parseLong-java.lang.String-">parseLong()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/lang/Float.html#parseFloat-java.lang.String-">parseFloat()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Float.html#parseFloat-java.lang.String-">parseFloat()</methodname></para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Double.html#parseDouble-java.lang.String-">parseDouble()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Double.html#parseDouble-java.lang.String-">parseDouble()</methodname></para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Boolean.html#parseBoolean-java.lang.String-">parseBoolean()</methodname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Boolean.html#parseBoolean-java.lang.String-">parseBoolean()</methodname></para> </listitem> </itemizedlist></td> </tr> @@ -426,7 +426,7 @@ System.out.println(Short.parseShort("32768"));</programlisting> <answer> <para><code language="java" - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -452,7 +452,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/9/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> at runtime :</para> <screen>Value:32767 @@ -518,7 +518,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/9/docs/api/java/lang/Short.html#parseShort-java.lang.String-int-">short + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Short.html#parseShort-java.lang.String-int-">short parseShort​(String s, int radix)</methodname>:</para> <programlisting language="java">/** @@ -537,7 +537,7 @@ public static short getHexadecimal(final String input) { <answer> <para><code language="java" - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Short.html#MAX_VALUE">MAX_VALUE</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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> @@ -563,7 +563,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/9/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/NumberFormatException.html">NumberFormatException</classname> at runtime :</para> <screen>Value:32767 @@ -583,7 +583,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/9/docs/api/java/util/Locale.html">java.util.Locale</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">java.util.Locale</classname></title> <para>A Locale object represents a specific geographical, political, or cultural region.</para> @@ -599,7 +599,7 @@ Exception in thread "main" java.lang.NumberFormatException: <figure xml:id="sd1_numbers_fig_localeProperties"> <title><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname> properties</title> <itemizedlist> @@ -623,7 +623,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/9/docs/api/java/text/NumberFormat.html">NumberFormat</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html">NumberFormat</classname> instance</title> <programlisting language="java">final NumberFormat standard = new DecimalFormat(); @@ -656,7 +656,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/9/docs/api/java/util/Locale.html">Locale</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname> definitions</title> <qandadiv> @@ -664,7 +664,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/9/docs/api/java/util/Locale.html">Locale</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname> definitions. Write a simple program to get the following list:</para> @@ -679,7 +679,7 @@ Locale: English(en_GB)</screen> <tip> <para>Read the documentation of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Locale.html">Locale</classname> to find appropriate methods.</para> </tip> </question> @@ -698,7 +698,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/9/docs/api/java/time/LocalDate.html">LocaleDate</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/LocalDate.html">LocaleDate</classname></title> <qandadiv> <qandaentry> @@ -770,9 +770,9 @@ December 22, 2024 <itemizedlist> <listitem> <para>Read the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/text/NumberFormat.html">NumberFormat</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/text/NumberFormat.html">NumberFormat</classname> documentation and its <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/text/NumberFormat.html#getInstance-java.util.Locale-">static + xlink:href="https://docs.oracle.com/javase/10/docs/api/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 @@ -781,15 +781,15 @@ December 22, 2024 <listitem> <para>Regarding dates you may want to consider <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</classname> providing the <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/time/format/DateTimeFormatter.html#ofLocalizedDate-java.time.format.FormatStyle-">static + xlink:href="https://docs.oracle.com/javase/10/docs/api/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/9/docs/api/java/time/format/FormatStyle.html">FormatStyle</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/FormatStyle.html">FormatStyle</classname> and the <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/time/format/DateTimeFormatter.html#withLocale-java.util.Locale-">DateTimeFormatter + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/time/format/DateTimeFormatter.html#withLocale-java.util.Locale-">DateTimeFormatter withLocale​(Locale locale)</methodname> method.</para> </listitem> </itemizedlist> @@ -889,7 +889,7 @@ System.out.println(result);</programlisting> <figure xml:id="sd1_numbers_fig_usingBigDecimal"> <title>Using <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html">BigDecimal</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/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"); @@ -906,7 +906,7 @@ System.out.println(result);</programlisting> <figure xml:id="sd1_numbers_fig_usingBigDecimalFeatures"> <title><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html">BigDecimal</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/math/BigDecimal.html">BigDecimal</classname> features</title> <itemizedlist> @@ -934,7 +934,7 @@ System.out.println(result);</programlisting> <figure xml:id="sd1_numbers_fig_random"> <title>Using <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#random--">static + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#random--">static double random​()</methodname></title> <programlisting language="java">for (int i = 0; i < 10; i++) { diff --git a/Doc/Sda1/dom.xml b/Doc/Sda1/dom.xml index acb0ddbd6..0bd87f1ac 100644 --- a/Doc/Sda1/dom.xml +++ b/Doc/Sda1/dom.xml @@ -347,7 +347,7 @@ public interface Node { // Node Types <listitem> <para>More Java compatible <abbrev>i.e.</abbrev> using <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Collection.html">native + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Collection.html">native collection interfaces</link></para> </listitem> @@ -967,9 +967,9 @@ Document contains 15 elements and 3 attributes.</screen> <tip> <para>Unit tests for this type of work frequently require comparing <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">List</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname> and <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Map.html">Map</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname> objects. The above code <coref linkend="sda1CalloutFunctionalJunit-5-co"/> uses <link xlink:href="https://github.com/google/guava/wiki">Guava</link> @@ -984,7 +984,7 @@ Document contains 15 elements and 3 attributes.</screen> be compared</link> with actual test outcomes. The test <methodname>public void studentNamesBySex()</methodname> contains a more complex example constructing a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Map.html">Map</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Map.html">Map</classname>.</para> <para>Larger numbers of immutable collection items may require using the <methodname @@ -2063,7 +2063,7 @@ final int targetCount = searchTargetId.evaluate(htmlInput).size();</programlisti applications may use XSL style sheets for processing. A <xref linkend="glo_DOM"/> tree may for example be transformed into another tree. The package <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/javax/xml/transform/package-frame.html">javax.xml.transform</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/javax/xml/transform/package-frame.html">javax.xml.transform</link> provides interfaces and classes for this purpose. We consider the following product catalog example:</para> @@ -2185,7 +2185,7 @@ final int targetCount = searchTargetId.evaluate(htmlInput).size();</programlisti demonstrate the usage of <abbrev xlink:href="https://www.w3.org/Style/XSL">XSL</abbrev> within a <xref linkend="glo_Java"/> application. This is done by a <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/javax/xml/transform/Transformer.html">Transformer</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/javax/xml/transform/Transformer.html">Transformer</link> instance:</para> <figure xml:id="xml2xml"> @@ -2353,7 +2353,7 @@ public class Xml2HtmlDriver { <classname>Map<String, Set<...>></classname> having namespaces as keys and sets of element names among with frequencies as values. Mind an appropriate <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> definition!</para> </tip> </question> diff --git a/Doc/Sda1/jdbc.xml b/Doc/Sda1/jdbc.xml index 11bc265eb..c6b6717bc 100644 --- a/Doc/Sda1/jdbc.xml +++ b/Doc/Sda1/jdbc.xml @@ -434,14 +434,14 @@ mysql-proxy 6446/udp</screen> </figure> <para>From a programmer's point of view the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname> is a bootstrapping object: Other objects like <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">Connection</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">Connection</classname> instances are being created from this central and unique object.</para> <figure xml:id="sda1_jdbc_fig_jdbcBootstrap"> <title><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">DriverManager</classname>: + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">DriverManager</classname>: Bootstrapping connections</title> <itemizedlist> @@ -451,7 +451,7 @@ mysql-proxy 6446/udp</screen> <listitem> <para><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname> shipped with <xref linkend="glo_JRE"/>.</para> </listitem> @@ -462,7 +462,7 @@ mysql-proxy 6446/udp</screen> <listitem> <para>Provides instances of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">java.sql.Connection</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">java.sql.Connection</classname>.</para> </listitem> <listitem> @@ -480,7 +480,7 @@ mysql-proxy 6446/udp</screen> <para>Interface <classname xlink:href="https://github.com/mysql/mysql-connector-j/blob/release/5.1/src/com/mysql/jdbc/MySQLConnection.java#L35">MySQLConnection</classname> <code>extends</code> <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">java.sql.Connection</classname></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">java.sql.Connection</classname></para> </listitem> <listitem> @@ -550,7 +550,7 @@ mysql-proxy 6446/udp</screen> <glosslist> <glossentry> <glossterm><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">java.sql.Connection</classname></glossterm> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">java.sql.Connection</classname></glossterm> <glossdef> <itemizedlist> @@ -565,17 +565,17 @@ mysql-proxy 6446/udp</screen> <listitem> <para>Per connection properties: <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setTransactionIsolation-int-">Isolation + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setTransactionIsolation-int-">Isolation level</link>, <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setAutoCommit-boolean-">auto + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setAutoCommit-boolean-">auto commit</link>,...</para> </listitem> <listitem> <para><methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#rollback--">rollback()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#rollback--">rollback()</methodname> / <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit--">commit()</methodname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit--">commit()</methodname>.</para> </listitem> </itemizedlist> </glossdef> @@ -589,7 +589,7 @@ mysql-proxy 6446/udp</screen> <glosslist> <glossentry> <glossterm><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html">java.sql.Statement</classname></glossterm> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html">java.sql.Statement</classname></glossterm> <glossdef> <para>Two distinct operation classes:</para> @@ -597,7 +597,7 @@ mysql-proxy 6446/udp</screen> <glosslist> <glossentry> <glossterm><code - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">executeUpdate()</code></glossterm> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">executeUpdate()</code></glossterm> <glossdef> <para><code>INSERT</code>, <code>UPDATE</code>, @@ -607,11 +607,11 @@ mysql-proxy 6446/udp</screen> <glossentry> <glossterm><code - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeQuery-java.lang.String-">executeQuery()</code></glossterm> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#executeQuery-java.lang.String-">executeQuery()</code></glossterm> <glossdef> <para><code>SELECT</code>: Returning <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname>, see <xref linkend="jdbcRead"/>.</para> </glossdef> </glossentry> @@ -639,39 +639,39 @@ mysql-proxy 6446/udp</screen> <itemizedlist> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#createStatement()">createStatement()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#createStatement()">createStatement()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setAutoCommit(boolean)">setAutoCommit()</link>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setAutoCommit(boolean)">setAutoCommit()</link>, <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#getAutoCommit()">getAutoCommit()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#getAutoCommit()">getAutoCommit()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#getWarnings()">getWarnings()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#getWarnings()">getWarnings()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#isClosed()">isClosed()</link>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#isClosed()">isClosed()</link>, <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#isValid(int)">isValid(int + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#isValid(int)">isValid(int timeout)</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#rollback()">rollback()</link>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#rollback()">rollback()</link>, <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit()">commit()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit()">commit()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#close()">close()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#close()">close()</link></para> </listitem> </itemizedlist> </figure> @@ -682,25 +682,25 @@ mysql-proxy 6446/udp</screen> <itemizedlist> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)">executeUpdate(String + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)">executeUpdate(String sql)</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#getConnection()">getConnection()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#getConnection()">getConnection()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#getResultSet()">getResultSet()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#getResultSet()">getResultSet()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#close()">close()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#close()">close()</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#isClosed()">isClosed()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#isClosed()">isClosed()</link></para> </listitem> </itemizedlist> </figure> @@ -788,12 +788,12 @@ mysql-proxy 6446/udp</screen> <xref linkend="glo_JDBC"/> based application requires just interfaces rather than classes at compile time. The actual instances of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">java.sql.Connection</classname>, + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">java.sql.Connection</classname>, <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html">java.sql.Statement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html">java.sql.Statement</classname> and friends will be created during the bootstrap process starting from <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">java.sql.DriverManager</classname>.</para> </answer> </qandaentry> </qandadiv> @@ -822,7 +822,7 @@ mysql-proxy 6446/udp</screen> <itemizedlist> <listitem> <para>No database read required (No <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname>).</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname>).</para> </listitem> <listitem> @@ -839,18 +839,18 @@ mysql-proxy 6446/udp</screen> <programlisting language="java">// <link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/ws/eclipse/Jdbc/src/main/java/sda/jdbc/intro/SimpleInsert.java#L22">Step 1: Open connection to database server</link> final Connection conn = DriverManager.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html#getConnection-java.lang.String-">getConnection</link> ( + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html#getConnection-java.lang.String-">getConnection</link> ( "jdbc:mysql://localhost:3306/hdm", // Connection parameter URL "hdmuser", // Username "XYZ"); // Password // Step 2: Create a Statement instance final Statement stmt = conn.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#createStatement--">createStatement()</link>; + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#createStatement--">createStatement()</link>; // Step 3: Execute the desired INSERT final int updateCount = stmt.<link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">executeUpdate</link>( + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">executeUpdate</link>( "INSERT INTO Person VALUES('Jim', 'jim@foo.org')"); // Step 4: Give feedback to the end user @@ -866,7 +866,7 @@ System.out.println("Successfully inserted " + updateCount + " dataset(s)");</pro <note> <para>The database server <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">returns</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-">returns</link> the number of inserted datasets.</para> </note> </figure> @@ -1169,7 +1169,7 @@ conn.close(); // Important! Wanna use a <link <figure xml:id="sda1_fig_jdbcAutoCloseConnection"> <title>Employ <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname></title> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/AutoCloseable.html">AutoCloseable</classname></title> <para>Using <link xlink:href="https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html">try-with-resources @@ -1189,7 +1189,7 @@ conn.close(); // Important! Wanna use a <link <question> <para>Extend the previous example by adding support for interactive insert of person data. <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Scanner.html">java.util.Scanner</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html">java.util.Scanner</classname> is your friend:</para> <para>Ask the end user to enter name and email addresses of @@ -1229,7 +1229,7 @@ conn.close(); // Important! Wanna use a <link <listitem> <para>Consider catching <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/SQLIntegrityConstraintViolationException.html">java.sql.SQLIntegrityConstraintViolationException</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/SQLIntegrityConstraintViolationException.html">java.sql.SQLIntegrityConstraintViolationException</classname> in case of email duplicates.</para> </listitem> @@ -1296,9 +1296,9 @@ static public int insertPerson( an <quote>all or nothing</quote> fashion by grouping all <code>INSERT</code>s into a single transaction. You may want to read about <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setAutoCommit-boolean-">setAutoCommit(boolean + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setAutoCommit-boolean-">setAutoCommit(boolean autoCommit)</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit--">commit()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit--">commit()</link> for this purpose.</para> </question> @@ -1329,12 +1329,12 @@ static public int insertPerson( <para>The <trademark xlink:href="https://en.wikipedia.org/wiki/Java_Database_Connectivity">JDBC</trademark> standard mostly defines interfaces like <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">Connection</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">Connection</classname> and <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html">Statement</classname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html">Statement</classname>. Why are these not being defined as classes? Moreover why is <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">DriverManager</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">DriverManager</classname> being defined as a class rather than an interface?</para> <para>You may want to supply code examples backing your @@ -1378,7 +1378,7 @@ Statement createStatement(int resultSetType, by a set of interfaces.</para> <para>Regarding the special role of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html">DriverManager</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html">DriverManager</classname> we notice the need for a starting point: An application requires an initial entry point for accessing a given framework. In theory (<emphasis role="bold">BUT NOT IN PRACTICE!!!</emphasis>) @@ -1452,11 +1452,11 @@ public someClass { <qandaentry> <question> <para>Why is it important to call the <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#close()">close()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html#close()">close()</link> method for <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html">Connection</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html">Connection</classname> and / or <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html">Statement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Statement.html">Statement</classname> instances?</para> </question> @@ -1499,7 +1499,7 @@ public someClass { <classname>java.sql.DriverManager</classname>. For this purpose the standard defines the <code language="java">static</code> <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html#registerDriver(java.sql.Driver)">registerDriver(Driver)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html#registerDriver(java.sql.Driver)">registerDriver(Driver)</link> method. On success driver is being added to an internal dictionary:</para> @@ -1534,7 +1534,7 @@ public someClass { </informaltable> <para>So whenever the method <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DriverManager.html#getConnection(java.lang.String,%20java.lang.String,%20java.lang.String)">getConnection()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DriverManager.html#getConnection(java.lang.String,%20java.lang.String,%20java.lang.String)">getConnection()</link> is being called the <classname>java.sql.DriverManager</classname> will scan the <trademark @@ -2417,7 +2417,7 @@ INSERT INTO Person VALUES ('Pete', 'p@rr.com') <orderedlist> <listitem> <para xml:id="exerciseGuiWritePrepared"><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> instance creation: Parsing <xref linkend="glo_SQL"/> statement possibly containing place holders.</para> </listitem> @@ -2439,12 +2439,12 @@ INSERT INTO Person VALUES ('Pete', 'p@rr.com') <para>Our introductory toy application <xref linkend="sda1_fig_jdbcSimpleWrite"/> may be rewritten using <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> objects:</para> <figure xml:id="sda1_jdbc_fig_preparedStatementExample"> <title><classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> example</title> <programlisting language="java">final Connection conn = DriverManager.getConnection (... @@ -2564,7 +2564,7 @@ ResultSet rs = statement.executeQuery() <co <qandaentry> <question> <para>Use <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/PreparedStatement.html">PreparedStatement</classname> objects to sanitize your flawed <xref linkend="quandaentry_DupInsertUnitTest"/> implementation being susceptible to <xref linkend="glo_SQL"/> injection @@ -2632,12 +2632,12 @@ ResultSet rs = statement.executeQuery() <co <itemizedlist> <listitem> <para>No standard Collections container e.g. <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">java.util.List</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">java.util.List</classname>.</para> </listitem> <listitem> <para><quote>Own</quote> container standard <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html">java.sql.ResultSet</classname> holding transient database.</para> </listitem> </itemizedlist> @@ -2708,10 +2708,10 @@ while (data.next()) {</emphasis> <co linkends="listingJdbcRead-2" <callout arearefs="listingJdbcRead-2-co" xml:id="listingJdbcRead-2"> <para>Calling <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#next()">next()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#next()">next()</link> prior to actually accessing data on the client side is mandatory! The <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#next()">next()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#next()">next()</link> method positions an internal iterator to the first element of our dataset unless the latter being empty. Follow the link address and **read** the documentation.</para> @@ -2728,7 +2728,7 @@ while (data.next()) {</emphasis> <co linkends="listingJdbcRead-2" <figure xml:id="sda1_jdbc_fig_ResultSetStates"> <title>Important <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html">ResultSet</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html">ResultSet</classname> states</title> <glosslist> @@ -2872,7 +2872,7 @@ Date getDate​(int columnIndex) <programlisting language="java">Object getObject​(int columnIndex)</programlisting> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getObject-int-">Gets + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getObject-int-">Gets the value of the designated column in the current row of this ResultSet object as an Object in the Java programming language.</link></para> @@ -2932,19 +2932,19 @@ final Date birthDate = <question> <para>Apart from type mappings the <xref linkend="glo_JDBC"/> access methods like <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getString(int)">getString()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getString(int)">getString()</link> may also be used for type conversion. Modify <xref linkend="sda1_jdbc_fig_codeReadingFriendsData"/> by:</para> <itemizedlist> <listitem> <para>Read the database attribute <code>id</code> by <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getString(java.lang.String)">getString(String)</link>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getString(java.lang.String)">getString(String)</link>.</para> </listitem> <listitem> <para>Read the database attribute nickname by <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getInt(java.lang.String)">getInt(String)</link>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getInt(java.lang.String)">getInt(String)</link>.</para> </listitem> </itemizedlist> @@ -2971,7 +2971,7 @@ while (data.next()) { <callout arearefs="jdbcReadWrongType-1-co" xml:id="jdbcReadWrongType-1"> <para>Calling <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getString(int)">getString()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getString(int)">getString()</link> for a database attribute of type INTEGER does not cause any trouble: The value gets silently converted to a string value.</para> @@ -2980,7 +2980,7 @@ while (data.next()) { <callout arearefs="jdbcReadWrongType-2-co" xml:id="jdbcReadWrongType-2"> <para>Calling <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#getInt(java.lang.String)">getInt(String)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#getInt(java.lang.String)">getInt(String)</link> for the database field of type CHAR yields an (expected) Exception:</para> </callout> @@ -3004,7 +3004,7 @@ INSERT INTO Friends VALUES (1, <emphasis role="bold">'31'</emphasis>, '1991-10-1 <para>Conclusion: The <xref linkend="glo_JDBC"/> driver performs a conversion from a string type to an integer similar like the <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#parseInt(java.lang.String)">parseInt(String)</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Integer.html#parseInt(java.lang.String)">parseInt(String)</link> method.</para> <para>The next series of exercises aims on a more powerful @@ -3050,7 +3050,7 @@ if (resultSet.wasNull()) { }</programlisting> <para>See <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#wasNull--">wasNull()</methodname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#wasNull--">wasNull()</methodname>.</para> </figure> </section> @@ -3088,7 +3088,7 @@ if (resultSet.wasNull()) { values.</para> <para>Hint: Read the documentation of <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSet.html#wasNull()">wasNull()</link>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSet.html#wasNull()">wasNull()</link>.</para> </question> <answer> @@ -3489,27 +3489,27 @@ INSERT INTO Product VALUES('w-124', 110.40); <itemizedlist> <listitem> <para>Transaction unsupported: <property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_NONE">Connection.TRANSACTION_NONE</property></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_NONE">Connection.TRANSACTION_NONE</property></para> </listitem> <listitem> <para>Level 0: <property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_READ_COMMITTED">Connection.TRANSACTION_READ_COMMITTED</property></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_READ_COMMITTED">Connection.TRANSACTION_READ_COMMITTED</property></para> </listitem> <listitem> <para>Level 1: <property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_READ_UNCOMMITTED">Connection.TRANSACTION_READ_UNCOMMITTED</property></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_READ_UNCOMMITTED">Connection.TRANSACTION_READ_UNCOMMITTED</property></para> </listitem> <listitem> <para>Level 2: <property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_REPEATABLE_READ">Connection.TRANSACTION_REPEATABLE_READ</property></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_REPEATABLE_READ">Connection.TRANSACTION_REPEATABLE_READ</property></para> </listitem> <listitem> <para>Level 2: <property - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_SERIALIZABLE">Connection.TRANSACTION_SERIALIZABL</property></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_SERIALIZABLE">Connection.TRANSACTION_SERIALIZABL</property></para> </listitem> </itemizedlist> </figure> @@ -3520,9 +3520,9 @@ INSERT INTO Product VALUES('w-124', 110.40); <programlisting language="java">connection.setTransactionIsolation​(Connection.TRANSACTION_READ_COMMITTED);</programlisting> <para>See <code - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#TRANSACTION_READ_COMMITTED">Connection.TRANSACTION_READ_COMMITTED</code> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#TRANSACTION_READ_COMMITTED">Connection.TRANSACTION_READ_COMMITTED</code> and <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setTransactionIsolation-int-">setTransactionIsolation</methodname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setTransactionIsolation-int-">setTransactionIsolation</methodname>.</para> <note> <para>Will become effective when starting next transaction.</para> @@ -3535,11 +3535,11 @@ INSERT INTO Product VALUES('w-124', 110.40); <itemizedlist> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#setAutoCommit(boolean)">How + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#setAutoCommit(boolean)">How does the method setAutoCommit()</link> relate to <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit()">commit()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit()">commit()</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#rollback()">rollback()</link>? + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#rollback()">rollback()</link>? Is there a <quote>start transaction</quote> method on offer?</para> </listitem> @@ -3561,7 +3561,7 @@ INSERT INTO Product VALUES('w-124', 110.40); <quote>start transaction</quote> equivalent. Instead transactions are being started implicitly and last until <code language="java">connection</code>.<methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit--">commit()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit--">commit()</methodname> is being executed.</para> <para>Grouping two or more <xref linkend="glo_SQL"/> statements @@ -3582,12 +3582,12 @@ INSERT INTO Product VALUES('w-124', 110.40); <orderedlist numeration="loweralpha"> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit()">commit()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit()">commit()</link></para> </listitem> <listitem> <para><link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#rollback()">rollback()</link></para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#rollback()">rollback()</link></para> </listitem> <listitem> @@ -3599,9 +3599,9 @@ INSERT INTO Product VALUES('w-124', 110.40); <note> <para>Both <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#commit()">commit()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#commit()">commit()</link> and <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/Connection.html#rollback()">rollback()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/Connection.html#rollback()">rollback()</link> are being initiated from the client side whereas aborting a transaction happens on behalf of the database server.</para> @@ -3633,7 +3633,7 @@ INSERT INTO Product VALUES('w-124', 110.40); <para>On aborting a transaction a database server will cause the corresponding <xref linkend="glo_JDBC"/> client to throw a <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/SQLException.html">SQLException</classname>. + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/SQLException.html">SQLException</classname>. An application is obliged to implement a sensible <code language="java">catch(...)</code> clause.</para> </answer> diff --git a/Doc/Sda1/jpaintro.xml b/Doc/Sda1/jpaintro.xml index 11fcad5fb..c09fda597 100644 --- a/Doc/Sda1/jpaintro.xml +++ b/Doc/Sda1/jpaintro.xml @@ -746,7 +746,7 @@ System.out.println("Read '" + studyCourse + "'"); <co method tries to retrieve a database record corresponding to an <classname>@Entity</classname> annotated instance of the desired <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Class.html">Class</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Class.html">Class</classname> value.</para> </callout> @@ -799,18 +799,18 @@ studyCourses.stream().map(s -> "Read '" + s + "'"). <callout arearefs="sda1_jpaintro_fig_readStudyCourseAll-1-co" xml:id="sda1_jpaintro_fig_readStudyCourseAll-1"> <para>Notice: <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">List</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">List</classname> in favour of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Set.html">Set</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/Set.html">Set</classname> respecting database ordering.</para> </callout> <callout arearefs="sda1_jpaintro_fig_readStudyCourseAll-2-co" xml:id="sda1_jpaintro_fig_readStudyCourseAll-2"> <para>Unchecked assignment <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">java.util.List</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">java.util.List</classname> to <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/List.html">java.util.List</classname><<classname + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/util/List.html">java.util.List</classname><<classname xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/JpaIntro/P/StudyCourse_basic/src/main/java/de/hdm_stuttgart/mi/sda1/model/StudyCourse.java">StudyCourse</classname>>.</para> </callout> </calloutlist> @@ -851,7 +851,7 @@ try { <co linkends="sda1_jpaintro_fig_readTypeViolate-1" <callout arearefs="sda1_jpaintro_fig_readTypeViolate-2-co" xml:id="sda1_jpaintro_fig_readTypeViolate-2"> <para>The culprit causing the <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/ClassCastException.html">ClassCastException</classname>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/ClassCastException.html">ClassCastException</classname>.</para> </callout> <callout arearefs="sda1_jpaintro_fig_readTypeViolate-3-co" @@ -902,9 +902,9 @@ studyCourseShortNames.stream(). xml:id="sda1_jpaintro_fig_readShortNames-3"> <para><code language="java">s</code> already represents an instance of <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> thus no <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#toString--">toString()</methodname> conversion is being required.</para> </callout> </calloutlist> @@ -1162,13 +1162,13 @@ queryRecords.getResultList().stream(). <para>The two casts are used for illustration purposes: In the current example omitting these will have no effect at all: The <xref linkend="glo_Java"/> runtime will call the overridden <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#toString--">toString()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#toString--">toString()</methodname> method anyway.</para> <para>Calling non-<classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html">Object</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html">Object</classname> methods like e.g. <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#toUpperCase--">toUpperCase()</methodname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#toUpperCase--">toUpperCase()</methodname> however requires a cast:</para> <programlisting language="none">final Query queryRecords = entityManager.createQuery( @@ -1804,7 +1804,7 @@ insert into Airline (icaoCode, name) values (?, ?) <co <para>Inserting data using PreparedStatements. Notice the two question marks (?, ?) representing <xref linkend="glo_JDBC"/> <interfacename - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/PreparedStatement.html">PreparedStatement</interfacename> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/PreparedStatement.html">PreparedStatement</interfacename> place holders.</para> </callout> </calloutlist> diff --git a/Doc/Sda1/projects.xml b/Doc/Sda1/projects.xml index f0544f389..ada720e96 100644 --- a/Doc/Sda1/projects.xml +++ b/Doc/Sda1/projects.xml @@ -195,9 +195,9 @@ <listitem> <para>Reading a database's schema requires <xref linkend="glo_JDBC"/> meta data support e.g. <interfacename - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/ResultSetMetaData.html">ResultSetMetaData</interfacename> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/ResultSetMetaData.html">ResultSetMetaData</interfacename> and possibly <interfacename - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/sql/DatabaseMetaData.html">DatabaseMetaData</interfacename>.</para> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/sql/DatabaseMetaData.html">DatabaseMetaData</interfacename>.</para> </listitem> <listitem> diff --git a/Doc/Sda1/sax.xml b/Doc/Sda1/sax.xml index caad4f8ec..1b3a84990 100644 --- a/Doc/Sda1/sax.xml +++ b/Doc/Sda1/sax.xml @@ -140,7 +140,7 @@ INSERT INTO Product VALUES('<emphasis role="bold">9921</emphasis>', 121.50)</pro xlink:href="https://en.wikipedia.org/wiki/Java_Database_Connectivity">JDBC</trademark> for database access. But how do we actually read and parse a XML file? Sticking to the <xref linkend="glo_Java"/> standard we might use a <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/io/InputStream.html">FileInputStream</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/io/InputStream.html">FileInputStream</link> instance to read from <code>catalog.xml</code> and write a XML parser by ourself. Fortunately <orgname>SUN</orgname>'s <trademark xlink:href="http://www.oracle.com/technetwork/java/javase">JDK</trademark> @@ -552,7 +552,7 @@ Closing Document content <code>Earphone</code> both fit in the second buffer. Subsequent content may require further buffer allocations. Such a strategy minimizes the number of time consuming <code>new </code> <classname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/String.html">String</classname> + xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html">String</classname> <code>(...)</code> constructor calls being necessary for the more convenient API variant <code>characters(String s)</code>.</para> </section> @@ -593,7 +593,7 @@ Closing Document to conveniently <emphasis>register</emphasis> event- and error handler instances independently instead of passing both interfaces as a single argument to the <link - xlink:href="https://docs.oracle.com/javase/9/docs/api/javax/xml/parsers/SAXParser.html#parse-java.io.File-org.xml.sax.helpers.DefaultHandler-">parse()</link> + xlink:href="https://docs.oracle.com/javase/10/docs/api/javax/xml/parsers/SAXParser.html#parse(java.io.File,org.xml.sax.helpers.DefaultHandler)">parse()</link> method. We first code an error handler class by implementing the interface <classname>org.xml.sax.ErrorHandler</classname> being part of the <acronym xlink:href="http://www.saxproject.org">SAX</acronym> API:</para> -- GitLab