changeset 45223:8bbaa704983d

Merge
author duke
date Wed, 05 Jul 2017 23:30:30 +0200
parents 6446b3f1479f 7a14f03b6880
children 1d05146d4579
files hotspot/make/templates/gpl-cp-header hotspot/make/templates/gpl-header jdk/src/java.base/share/classes/sun/security/ssl/RecordType.java jdk/src/java.base/share/specs/serialization/changelog.md jdk/src/java.base/share/specs/serialization/images/class.gif jdk/test/java/nio/channels/DatagramChannel/NetworkConfiguration.java jdk/test/lib/testlibrary/ModuleInfoMaker.java jdk/test/lib/testlibrary/jdk/testlibrary/FilterClassLoader.java jdk/test/lib/testlibrary/jdk/testlibrary/IOUtils.java jdk/test/lib/testlibrary/jdk/testlibrary/LockFreeLogManager.java jdk/test/lib/testlibrary/jdk/testlibrary/NetworkConfiguration.java jdk/test/lib/testlibrary/jdk/testlibrary/ParentLastURLClassLoader.java jdk/test/lib/testlibrary/jdk/testlibrary/SerializationUtils.java jdk/test/lib/testlibrary/jdk/testlibrary/management/InputArguments.java jdk/test/lib/testlibrary/jdk/testlibrary/management/ThreadMXBeanTool.java make/Javadoc.gmk test/lib/jdk/test/lib/DynamicVMOption.java test/lib/jdk/test/lib/InMemoryJavaCompiler.java
diffstat 330 files changed, 5564 insertions(+), 4247 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags-top-repo	Tue May 23 22:39:06 2017 +0000
+++ b/.hgtags-top-repo	Wed Jul 05 23:30:30 2017 +0200
@@ -419,4 +419,7 @@
 111e2e7d00f45c983cdbc9c59ae40552152fcc23 jdk-10+5
 03fe61bb7670644cf6e46b5cfafb6b27c0e0157e jdk-10+6
 b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
+4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
 
+aa3c97810d7c484c93a2fd75d3c76ff574deb6d8 jdk-10+7
+df33ef1dc163f994177fd97d4d0e73a1e3cb5d85 jdk-10+8
--- a/common/autoconf/generated-configure.sh	Tue May 23 22:39:06 2017 +0000
+++ b/common/autoconf/generated-configure.sh	Wed Jul 05 23:30:30 2017 +0200
@@ -5186,7 +5186,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1494615666
+DATE_WHEN_GENERATED=1494858828
 
 ###############################################################################
 #
@@ -48811,173 +48811,63 @@
 # Check whether --with-jtreg was given.
 if test "${with_jtreg+set}" = set; then :
   withval=$with_jtreg;
-else
-  with_jtreg=no
 fi
 
 
   if test "x$with_jtreg" = xno; then
     # jtreg disabled
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
-$as_echo_n "checking for jtreg... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    if test "x$with_jtreg" != xyes; then
-      # with path specified.
-      JT_HOME="$with_jtreg"
-    fi
-
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabled" >&5
+$as_echo "no, disabled" >&6; }
+  elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
+    # An explicit path is specified, use it.
+    JT_HOME="$with_jtreg"
+    if test ! -d "$JT_HOME"; then
+      as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not exist" "$LINENO" 5
+    fi
+
+    if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+      as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home" "$LINENO" 5
+    fi
+
+    JTREGEXE="$JT_HOME/bin/jtreg"
+    if test ! -x "$JTREGEXE"; then
+      as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable" "$LINENO" 5
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
+$as_echo "$JT_HOME" >&6; }
+  else
+    # Try to locate jtreg
     if test "x$JT_HOME" != x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg" >&5
-$as_echo_n "checking for jtreg... " >&6; }
-
-      # use JT_HOME enviroment var.
-
-  # Only process if variable expands to non-empty
-
-  if test "x$JT_HOME" != x; then
-    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
-
-  # Input might be given as Windows format, start by converting to
-  # unix format.
-  path="$JT_HOME"
-  new_path=`$CYGPATH -u "$path"`
-
-  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
-  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
-  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
-  # "foo.exe" is OK but "foo" is an error.
-  #
-  # This test is therefore slightly more accurate than "test -f" to check for file precense.
-  # It is also a way to make sure we got the proper file name for the real test later on.
-  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
-  if test "x$test_shortpath" = x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
-    as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
-  fi
-
-  # Call helper function which possibly converts this using DOS-style short mode.
-  # If so, the updated path is stored in $new_path.
-
-  input_path="$new_path"
-  # Check if we need to convert this using DOS-style short mode. If the path
-  # contains just simple characters, use it. Otherwise (spaces, weird characters),
-  # take no chances and rewrite it.
-  # Note: m4 eats our [], so we need to use [ and ] instead.
-  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
-  if test "x$has_forbidden_chars" != x; then
-    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
-    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
-    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
-    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
-      # Going to short mode and back again did indeed matter. Since short mode is
-      # case insensitive, let's make it lowercase to improve readability.
-      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-      # Now convert it back to Unix-style (cygpath)
-      input_path=`$CYGPATH -u "$shortmode_path"`
-      new_path="$input_path"
-    fi
-  fi
-
-  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
-  if test "x$test_cygdrive_prefix" = x; then
-    # As a simple fix, exclude /usr/bin since it's not a real path.
-    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
-      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
-      # a path prefixed by /cygdrive for fixpath to work.
-      new_path="$CYGWIN_ROOT_PATH$input_path"
-    fi
-  fi
-
-
-  if test "x$path" != "x$new_path"; then
-    JT_HOME="$new_path"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
-  fi
-
-    elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
-
-  path="$JT_HOME"
-  has_colon=`$ECHO $path | $GREP ^.:`
-  new_path="$path"
-  if test "x$has_colon" = x; then
-    # Not in mixed or Windows style, start by that.
-    new_path=`cmd //c echo $path`
-  fi
-
-
-  input_path="$new_path"
-  # Check if we need to convert this using DOS-style short mode. If the path
-  # contains just simple characters, use it. Otherwise (spaces, weird characters),
-  # take no chances and rewrite it.
-  # Note: m4 eats our [], so we need to use [ and ] instead.
-  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
-  if test "x$has_forbidden_chars" != x; then
-    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
-    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-  fi
-
-
-  windows_path="$new_path"
-  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
-    unix_path=`$CYGPATH -u "$windows_path"`
-    new_path="$unix_path"
-  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
-    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
-    new_path="$unix_path"
-  fi
-
-  if test "x$path" != "x$new_path"; then
-    JT_HOME="$new_path"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
-  fi
-
-  # Save the first 10 bytes of this path to the storage, so fixpath can work.
-  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
-
-    else
-      # We're on a unix platform. Hooray! :)
-      path="$JT_HOME"
-      has_space=`$ECHO "$path" | $GREP " "`
-      if test "x$has_space" != x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
-        as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
-      fi
-
-      # Use eval to expand a potential ~
-      eval path="$path"
-      if test ! -f "$path" && test ! -d "$path"; then
-        as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
-      fi
-
-      if test -d "$path"; then
-        JT_HOME="`cd "$path"; $THEPWDCMD -L`"
-      else
-        dir="`$DIRNAME "$path"`"
-        base="`$BASENAME "$path"`"
-        JT_HOME="`cd "$dir"; $THEPWDCMD -L`/$base"
-      fi
-    fi
-  fi
-
-
-      # jtreg win32 script works for everybody
-      JTREGEXE="$JT_HOME/bin/jtreg"
-
-      if test ! -f "$JTREGEXE"; then
-        as_fn_error $? "JTReg executable does not exist: $JTREGEXE" "$LINENO" 5
-      fi
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
-$as_echo "$JTREGEXE" >&6; }
-    else
-      # try to find jtreg on path
-
+      # JT_HOME set in environment, use it
+      if test ! -d "$JT_HOME"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&2;}
+        JT_HOME=
+      else
+        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&2;}
+          JT_HOME=
+        elif test ! -x "$JT_HOME/bin/jtreg"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&2;}
+          JT_HOME=
+        else
+          JTREGEXE="$JT_HOME/bin/jtreg"
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using JT_HOME from environment" >&5
+$as_echo "$as_me: Located jtreg using JT_HOME from environment" >&6;}
+        fi
+      fi
+    fi
+
+    if test "x$JT_HOME" = x; then
+      # JT_HOME is not set in environment, or was deemed invalid.
+      # Try to find jtreg on path
 
 
   # Publish this variable in the help.
@@ -49175,13 +49065,451 @@
   fi
 
 
-
-  if test "x$JTREGEXE" = x; then
-    as_fn_error $? "Could not find required tool for JTREGEXE" "$LINENO" 5
-  fi
-
-
-      JT_HOME="`$DIRNAME $JTREGEXE`"
+      if test "x$JTREGEXE" != x; then
+        # That's good, now try to derive JT_HOME
+        JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
+        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&5
+$as_echo "$as_me: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&2;}
+          JT_HOME=
+          JTREGEXE=
+        else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using jtreg executable in path" >&5
+$as_echo "$as_me: Located jtreg using jtreg executable in path" >&6;}
+        fi
+      fi
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+    if test "x$JT_HOME" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
+$as_echo "$JT_HOME" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, not found" >&5
+$as_echo "no, not found" >&6; }
+
+      if test "x$with_jtreg" = xyes; then
+        as_fn_error $? "--with-jtreg was specified, but no jtreg found." "$LINENO" 5
+      fi
+    fi
+  fi
+
+
+  # Only process if variable expands to non-empty
+
+  if test "x$JTREGEXE" != x; then
+    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$JTREGEXE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  # bat and cmd files are not always considered executable in cygwin causing which
+  # to not find them
+  if test "x$new_path" = x \
+      && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+      && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+    new_path=`$CYGPATH -u "$path"`
+  fi
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    # bat and cmd files are not always considered executable in cygwin causing which
+    # to not find them
+    if test "x$new_path" = x \
+        && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+        && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+      new_path=`$CYGPATH -u "$path"`
+    fi
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file presence.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+      input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+      input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-style (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+    elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$JTREGEXE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    # bat and cmd files are not always considered executable in MSYS causing which
+    # to not find them
+    if test "x$new_path" = x \
+        && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+        && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+      new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    fi
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+    else
+      # We're on a unix platform. Hooray! :)
+      # First separate the path from the arguments. This will split at the first
+      # space.
+      complete="$JTREGEXE"
+      path="${complete%% *}"
+      tmp="$complete EOL"
+      arguments="${tmp#* }"
+
+      # Cannot rely on the command "which" here since it doesn't always work.
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test -z "$is_absolute_path"; then
+        # Path to executable is not absolute. Find it.
+        IFS_save="$IFS"
+        IFS=:
+        for p in $PATH; do
+          if test -f "$p/$path" && test -x "$p/$path"; then
+            new_path="$p/$path"
+            break
+          fi
+        done
+        IFS="$IFS_save"
+      else
+        # This is an absolute path, we can use it without further modifications.
+        new_path="$path"
+      fi
+
+      if test "x$new_path" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+      fi
+    fi
+
+    # Now join together the path and the arguments once again
+    if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+    else
+      new_complete="$new_path"
+    fi
+
+    if test "x$complete" != "x$new_complete"; then
+      JTREGEXE="$new_complete"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JTREGEXE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting JTREGEXE to \"$new_complete\"" >&6;}
+    fi
+  fi
+
+
+  # Only process if variable expands to non-empty
+
+  if test "x$JT_HOME" != x; then
+    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$JT_HOME"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-style (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    JT_HOME="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+  fi
+
+    elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$JT_HOME"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    JT_HOME="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+    else
+      # We're on a unix platform. Hooray! :)
+      path="$JT_HOME"
+      has_space=`$ECHO "$path" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+        as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+      fi
+
+      # Use eval to expand a potential ~
+      eval path="$path"
+      if test ! -f "$path" && test ! -d "$path"; then
+        as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
+      fi
+
+      if test -d "$path"; then
+        JT_HOME="`cd "$path"; $THEPWDCMD -L`"
+      else
+        dir="`$DIRNAME "$path"`"
+        base="`$BASENAME "$path"`"
+        JT_HOME="`cd "$dir"; $THEPWDCMD -L`/$base"
+      fi
     fi
   fi
 
--- a/common/autoconf/spec.gmk.in	Tue May 23 22:39:06 2017 +0000
+++ b/common/autoconf/spec.gmk.in	Wed Jul 05 23:30:30 2017 +0200
@@ -271,9 +271,6 @@
 TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
 MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
 
-# By default, output javadoc directly into image
-JAVADOC_OUTPUTDIR = $(DOCS_IMAGE_DIR)
-
 # This does not get overridden in a bootcycle build
 CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
 BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
@@ -819,6 +816,8 @@
 # Docs image
 DOCS_IMAGE_SUBDIR := docs
 DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
+# Output docs directly into image
+DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
 
 # Macosx bundles directory definitions
 JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
--- a/common/autoconf/toolchain.m4	Tue May 23 22:39:06 2017 +0000
+++ b/common/autoconf/toolchain.m4	Wed Jul 05 23:30:30 2017 +0200
@@ -926,41 +926,82 @@
 AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
 [
   AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
-      [Regression Test Harness @<:@probed@:>@])],
-      [],
-      [with_jtreg=no])
+      [Regression Test Harness @<:@probed@:>@])])
 
   if test "x$with_jtreg" = xno; then
     # jtreg disabled
-    AC_MSG_CHECKING([for jtreg])
-    AC_MSG_RESULT(no)
-  else
-    if test "x$with_jtreg" != xyes; then
-      # with path specified.
-      JT_HOME="$with_jtreg"
+    AC_MSG_CHECKING([for jtreg test harness])
+    AC_MSG_RESULT([no, disabled])
+  elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
+    # An explicit path is specified, use it.
+    JT_HOME="$with_jtreg"
+    if test ! -d "$JT_HOME"; then
+      AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
     fi
 
+    if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+      AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
+    fi
+
+    JTREGEXE="$JT_HOME/bin/jtreg"
+    if test ! -x "$JTREGEXE"; then
+      AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
+    fi
+
+    AC_MSG_CHECKING([for jtreg test harness])
+    AC_MSG_RESULT([$JT_HOME])
+  else
+    # Try to locate jtreg
     if test "x$JT_HOME" != x; then
-      AC_MSG_CHECKING([for jtreg])
+      # JT_HOME set in environment, use it
+      if test ! -d "$JT_HOME"; then
+        AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
+        JT_HOME=
+      else
+        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+          AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
+          JT_HOME=
+        elif test ! -x "$JT_HOME/bin/jtreg"; then
+          AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME])
+          JT_HOME=
+        else
+          JTREGEXE="$JT_HOME/bin/jtreg"
+          AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
+        fi
+      fi
+    fi
 
-      # use JT_HOME enviroment var.
-      BASIC_FIXUP_PATH([JT_HOME])
+    if test "x$JT_HOME" = x; then
+      # JT_HOME is not set in environment, or was deemed invalid.
+      # Try to find jtreg on path
+      BASIC_PATH_PROGS(JTREGEXE, jtreg)
+      if test "x$JTREGEXE" != x; then
+        # That's good, now try to derive JT_HOME
+        JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
+        if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+          AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
+          JT_HOME=
+          JTREGEXE=
+        else
+          AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
+        fi
+      fi
+    fi
 
-      # jtreg win32 script works for everybody
-      JTREGEXE="$JT_HOME/bin/jtreg"
+    AC_MSG_CHECKING([for jtreg test harness])
+    if test "x$JT_HOME" != x; then
+      AC_MSG_RESULT([$JT_HOME])
+    else
+      AC_MSG_RESULT([no, not found])
 
-      if test ! -f "$JTREGEXE"; then
-        AC_MSG_ERROR([JTReg executable does not exist: $JTREGEXE])
+      if test "x$with_jtreg" = xyes; then
+        AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
       fi
-
-      AC_MSG_RESULT($JTREGEXE)
-    else
-      # try to find jtreg on path
-      BASIC_REQUIRE_PROGS(JTREGEXE, jtreg)
-      JT_HOME="`$DIRNAME $JTREGEXE`"
     fi
   fi
 
+  BASIC_FIXUP_EXECUTABLE(JTREGEXE)
+  BASIC_FIXUP_PATH(JT_HOME)
   AC_SUBST(JT_HOME)
   AC_SUBST(JTREGEXE)
 ])
--- a/common/bin/hgforest.sh	Tue May 23 22:39:06 2017 +0000
+++ b/common/bin/hgforest.sh	Wed Jul 05 23:30:30 2017 +0200
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -183,7 +183,7 @@
 
 subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
 jdk_subrepos_extra="closed jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed"
-subrepos_extra="$jdk_subrepos_extra deploy install sponsors pubs"
+subrepos_extra="$jdk_subrepos_extra deploy install sponsors"
 
 # Only look in specific locations for possible forests (avoids long searches)
 pull_default=""
--- a/common/conf/jib-profiles.js	Tue May 23 22:39:06 2017 +0000
+++ b/common/conf/jib-profiles.js	Wed Jul 05 23:30:30 2017 +0200
@@ -997,7 +997,8 @@
             ext: "tar.gz",
             revision: "2.38.0-1+1.1",
             module: "graphviz-" + input.target_platform,
-            configure_args: "DOT=" + input.get("graphviz", "install_path") + "/dot"
+            configure_args: "DOT=" + input.get("graphviz", "install_path") + "/dot",
+            environment_path: input.get("graphviz", "install_path")
         },
 
         pandoc: {
@@ -1005,7 +1006,8 @@
             ext: "tar.gz",
             revision: "1.17.2+1.0",
             module: "pandoc-" + input.target_platform,
-            configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc"
+            configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc",
+            environment_path: input.get("pandoc", "install_path") + "/pandoc"
         },
     };
 
--- a/common/doc/building.html	Tue May 23 22:39:06 2017 +0000
+++ b/common/doc/building.html	Wed Jul 05 23:30:30 2017 +0200
@@ -6,6 +6,7 @@
   <meta name="generator" content="pandoc" />
   <title>OpenJDK Build README</title>
   <style type="text/css">code{white-space: pre;}</style>
+  <link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
 </head>
 <body>
 <div id="header">
--- a/common/doc/testing.html	Tue May 23 22:39:06 2017 +0000
+++ b/common/doc/testing.html	Wed Jul 05 23:30:30 2017 +0200
@@ -6,9 +6,8 @@
   <meta name="generator" content="pandoc" />
   <title>Testing OpenJDK</title>
   <style type="text/css">code{white-space: pre;}</style>
-  <link rel="stylesheet" href="http://openjdk.java.net/page.css" type="text/css" />
+  <link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
   <style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
-  <style type="text/css">pre { font-size: 10pt; }</style>
 </head>
 <body>
 <div id="header">
--- a/corba/.hgtags	Tue May 23 22:39:06 2017 +0000
+++ b/corba/.hgtags	Wed Jul 05 23:30:30 2017 +0200
@@ -419,3 +419,6 @@
 43de67f51801b9e16507865fcb7e8344f4ca4aa9 jdk-9+167
 03a2cc9c8a1e8f87924c9863e917bc8b91770d5f jdk-9+168
 b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
+8a4ab3b0ab9a86df73d9a1e337134f2dbe006725 jdk-9+170
+aed5a4edc8275c1c50195503756ff92bfe0197f5 jdk-10+7
+648b0a00824eb29e71936bc3258d309a25e3b8c0 jdk-10+8
--- a/corba/src/java.corba/share/classes/com/sun/corba/se/spi/monitoring/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/com/sun/corba/se/spi/monitoring/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,4 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!doctype html>
 <html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
@@ -6,7 +6,7 @@
    <title>package</title>
 <!--
  
-Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/Any.java	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/Any.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -52,7 +52,7 @@
  * </OL>
  *
  * <P>
- * <a name="anyOps"></a>
+ * <a id="anyOps"></a>
  * A large part of the <code>Any</code> class consists of pairs of methods
  * for inserting values into and extracting values from an
  * <code>Any</code> object.
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/ORB.java	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/ORB.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -85,13 +85,17 @@
  * three {@code init} methods.  Two of the three methods use the properties
  * (associations of a name with a value) shown in the
  * table below.<BR>
- * <TABLE BORDER=1 SUMMARY="Standard Java CORBA Properties">
+ * <TABLE class="plain">
+ * <CAPTION>Standard Java CORBA Properties:</CAPTION>
+ * <thead>
  * <TR><TH>Property Name</TH>   <TH>Property Value</TH></TR>
- * <CAPTION>Standard Java CORBA Properties:</CAPTION>
+ * </thead>
+ * <tbody>
  *     <TR><TD>org.omg.CORBA.ORBClass</TD>
  *     <TD>class name of an ORB implementation</TD></TR>
  *     <TR><TD>org.omg.CORBA.ORBSingletonClass</TD>
  *     <TD>class name of the ORB returned by {@code init()}</TD></TR>
+ * </tbody>
  * </TABLE>
  * <P>
  * These properties allow a different vendor's {@code ORB}
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/doc-files/compliance.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/doc-files/compliance.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,4 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!doctype html>
 <html>
 <head>
    <meta http-equiv="Content-Type" content="text/html">
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/doc-files/generatedfiles.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/doc-files/generatedfiles.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,4 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!doctype html>
 <html>
 <head>
    <meta http-equiv="Content-Type" content="text/html">
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,3 +1,4 @@
+<!doctype html>
 <HTML>
 <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
@@ -6,7 +7,7 @@
    <TITLE>package</TITLE>
 <!--
 /*
-* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
@@ -31,9 +32,8 @@
 */  
 -->
 </HEAD>
-<BODY BGCOLOR="#FFFFFF">
-Provides the mapping of the OMG CORBA APIs to the Java<SUP><FONT 
-SIZE=-2>TM</FONT></SUP>
+<BODY>
+Provides the mapping of the OMG CORBA APIs to the Java&trade;
 programming language, including the class <code>ORB</code>, which is implemented
 so that a programmer can use it as a fully-functional Object Request Broker
 (ORB).
@@ -427,7 +427,7 @@
 in this case, <code>Account</code> objects.
 
 
-<a name="narrow"></a>
+<a id="narrow"></a>
 <h3>The <code>narrow</code> Method</h3>
 When an object is the return value for a method, it is returned in the
 form of a generic object, either an <code>org.omg.CORBA.Object</code> object
@@ -465,7 +465,7 @@
         helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
 </PRE>
 
-<a name="basic"></a>
+<a id="basic"></a>
 <h3>Example of a Basic Helper Class</h3>
 A basic helper class, for purposes of this explanation, is one with
 the methods that are provided by every helper class, plus a <code>narrow</code>
@@ -671,7 +671,7 @@
 &nbsp;&nbsp;&nbsp;&nbsp; WStringSeqHelper
 &nbsp;&nbsp;&nbsp;&nbsp; WStringValueHelper
 </code></PRE>
-<a name="adv"></a>
+<a id="adv"></a>
 <H1>
 Other Classes</H1>
 The other classes and interfaces in the <code>CORBA</code> package, which are
@@ -868,17 +868,17 @@
 
 
 
-<P><A NAME="unimpl"></A>
+<P><A id="unimpl"></A>
 <H1>
 CORBA Features Not Implemented in Java IDL</H1>
 
 <P>Some of the API included in <code>org.omg</code> subpackages is provided for
 conformance with the current OMG CORBA specification but is not implemented
-in Sun's release of the JDK<SUP><FONT SIZE=-2>TM</FONT></SUP>. This enables
+in Sun's release of the JDK&trade;. This enables
 other JDK licensees to provide implementations of this API in standard
 extensions and products.
 
-<P><A NAME="NO_IMPLEMENT"></A>
+<P><A id="NO_IMPLEMENT"></A>
 <h2>Features That Throw NO_IMPLEMENT</h2>
 
 <P>Some of the API included in <code>org.omg</code> subpackages throw
--- a/corba/src/java.corba/share/classes/org/omg/CORBA/portable/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA/portable/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,8 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!doctype html>
 <html>
 <head>
 <!--
-Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 questions.
 -->
 </head>
-<body bgcolor="white">
+<body>
 
 Provides a portability layer, that is, a set of ORB APIs
 that makes it possible for code generated
@@ -38,7 +38,7 @@
 
 
 <p>
-<a name="unimpl"></a>
+<a id="unimpl"></a>
 <hr>
 <h1>CORBA Features Throwing NO_IMPLEMENT() Exceptions</h1>
 <hr>
--- a/corba/src/java.corba/share/classes/org/omg/CORBA_2_3/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/CORBA_2_3/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,4 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!doctype html>
 <html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
@@ -6,7 +6,7 @@
    <title>package</title>
 <!--
 /*
-* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
 */ 
 -->
 </head>
-<body bgcolor="#FFFFFF">
+<body>
 The CORBA_2_3 package defines additions to existing CORBA interfaces
 in the Java[tm] Standard Edition 6.&nbsp;&nbsp; These changes occurred in recent
 revisions to the CORBA API defined by the OMG.&nbsp; The new methods were
@@ -46,7 +46,7 @@
 HREF="../CORBA/doc-files/compliance.html">Official Specifications for CORBA
 support in Java[tm] SE 6</A>.
 <P>
-<a name="unimpl"></a>
+<a id="unimpl"></a>
 The following methods in the abstract class 
 <code>org.omg.CORBA_2_3.ORB</code> are unimplemented:
 <UL>
--- a/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/IOP.idl	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/IOP.idl	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -425,7 +425,7 @@
      * encoded using GIOP 1.2 with a TCS-W of UTF-16.  This service context
      * may be sent on Reply messages with a reply_status of SYSTEM_EXCEPTION
      * or USER_EXCEPTION. The usage of this service context is defined
-     * by language mappings. <br/> <br/>
+     * by language mappings. <br> <br>
      *
      * IDL/Java: ptc/02-01-22: 1.15.2: 
      * When a System Exception is marshaled, its GIOP Reply message shall
--- a/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/Interceptors.idl	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/Interceptors.idl	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -580,7 +580,8 @@
    * to access it will result in a <code>BAD_INV_ORDER</code> being thrown
    * with a standard minor code of 14.
    *
-   * <table border=1 summary="Shows the validity of each attribute or operation">
+   * <table class="plain">
+   * <caption style="display:none">Shows the validity of each attribute or operation</caption>
    *  <thead>
    *    <tr>
    *      <th>&nbsp;</th>
@@ -597,42 +598,42 @@
    *     <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
    *  </tr>
    * 
-   *  <tr><th id="req_id"><p align="left">request_id</p></th>
+   *  <tr><th id="req_id"><p style="text-align:left">request_id</p></th>
    *  <td headers="ri req_id send_req">yes</td> 
    *  <td headers="ri req_id send_poll">yes</td> 
    *  <td headers="ri req_id rec_reply">yes</td> 
    *  <td headers="ri req_id rec_ex">yes</td> 
    *  <td headers="ri req_id rec_oth">yes</td></tr>
    * 
-   *  <tr><th id="op"><p align="left">operation</p></th>
+   *  <tr><th id="op"><p style="text-align:left">operation</p></th>
    *  <td headers="ri op send_req">yes</td> 
    *  <td headers="ri op send_poll">yes</td> 
    *  <td headers="ri op rec_reply">yes</td> 
    *  <td headers="ri op rec_ex">yes</td> 
    *  <td headers="ri op rec_oth">yes</td></tr>
    *
-   *  <tr><th id="arg"><p align="left">arguments</p></th>
+   *  <tr><th id="arg"><p style="text-align:left">arguments</p></th>
    *  <td headers="ri arg send_req">yes<sub>1</sub></td>
    *  <td headers="ri arg send_poll">no </td> 
    *  <td headers="ri arg rec_reply">yes</td> 
    *  <td headers="ri arg rec_ex">no </td> 
    *  <td headers="ri arg rec_oth">no </td></tr>
    *
-   *  <tr><th id="exc"><p align="left">exceptions</p></th>
+   *  <tr><th id="exc"><p style="text-align:left">exceptions</p></th>
    *  <td headers="ri exc send_req">yes</td> 
    *  <td headers="ri exc send_poll">no </td> 
    *  <td headers="ri exc rec_reply">yes</td> 
    *  <td headers="ri exc rec_ex">yes</td> 
    *  <td headers="ri exc rec_oth">yes</td></tr>
    *
-   *  <tr><th id="con"><p align="left">contexts</p></th>
+   *  <tr><th id="con"><p style="text-align:left">contexts</p></th>
    *  <td headers="ri con send_req">yes</td> 
    *  <td headers="ri con send_poll">no </td> 
    *  <td headers="ri con rec_reply">yes</td> 
    *  <td headers="ri con rec_ex">yes</td> 
    *  <td headers="ri con rec_oth">yes</td></tr>
    *
-   *  <tr><th id="op_con"><p align="left">operation_context</p></th>
+   *  <tr><th id="op_con"><p style="text-align:left">operation_context</p></th>
    *  <td headers="ri op_con send_req">yes</td> 
    *  <td headers="ri op_con send_poll">no </td> 
    *  <td headers="ri op_con rec_reply">yes</td> 
@@ -640,7 +641,7 @@
    *  <td headers="ri op_con rec_oth">yes</td>
    *  </tr>
    *
-   *  <tr><th id="result"><p align="left">result</p></th>
+   *  <tr><th id="result"><p style="text-align:left">result</p></th>
    *  <td headers="ri result send_req">no </td> 
    *  <td headers="ri result send_poll">no </td> 
    *  <td headers="ri result rec_reply">yes</td> 
@@ -648,14 +649,14 @@
    *  <td headers="ri result rec_oth">no </td>
    *  </tr>
    *
-   *  <tr><th id="res_exp"><p align="left">response_expected</p></th>
+   *  <tr><th id="res_exp"><p style="text-align:left">response_expected</p></th>
    *  <td headers="ri res_exp send_req">yes</td> 
    *  <td headers="ri res_exp send_poll">yes</td> 
    *  <td headers="ri res_exp rec_reply">yes</td> 
    *  <td headers="ri res_exp rec_ex">yes</td> 
    *  <td headers="ri res_exp rec_oth">yes</td></tr>
    *
-   *  <tr><th id="sync_sco"><p align="left">sync_scope</p></th>
+   *  <tr><th id="sync_sco"><p style="text-align:left">sync_scope</p></th>
    *  <td headers="ri sync_sco send_req">yes</td> 
    *  <td headers="ri sync_sco send_poll">no </td> 
    *  <td headers="ri sync_sco rec_reply">yes</td> 
@@ -663,14 +664,14 @@
    *  <td headers="ri sync_sco rec_oth">yes</td>
    *  </tr>
    *
-   *  <tr><th id="rep_stat"><p align="left">reply_status</p></th>
+   *  <tr><th id="rep_stat"><p style="text-align:left">reply_status</p></th>
    *  <td headers="ri rep_stat send_req">no </td> 
    *  <td headers="ri rep_stat send_poll">no </td> 
    *  <td headers="ri rep_stat rec_reply">yes</td> 
    *  <td headers="ri rep_stat rec_ex">yes</td> 
    *  <td headers="ri rep_stat rec_oth">yes</td></tr>
    *
-   *  <tr><th id="for_ref"><p align="left">forward_reference</p></th>
+   *  <tr><th id="for_ref"><p style="text-align:left">forward_reference</p></th>
    *  <td headers="ri for_ref send_req">no </td>
    *  <td headers="ri for_ref send_poll">no </td> 
    *  <td headers="ri for_ref rec_reply">no </td> 
@@ -678,21 +679,21 @@
    *  <td headers="ri for_ref rec_oth">yes<sub>2</sub>
    *  </td></tr>
    *
-   *  <tr><th id="get_slot"><p align="left">get_slot</p></th>
+   *  <tr><th id="get_slot"><p style="text-align:left">get_slot</p></th>
    *  <td headers="ri get_slot send_req">yes</td> 
    *  <td headers="ri get_slot send_poll">yes</td> 
    *  <td headers="ri get_slot rec_reply">yes</td> 
    *  <td headers="ri get_slot rec_ex">yes</td> 
    *  <td headers="ri get_slot rec_oth">yes</td></tr>
    *
-   *  <tr><th id="grsc"><p align="left">get_request_service_context</p></th>
+   *  <tr><th id="grsc"><p style="text-align:left">get_request_service_context</p></th>
    *  <td headers="ri grsc send_req">yes</td> 
    *  <td headers="ri grsc send_poll">no </td> 
    *  <td headers="ri grsc rec_reply">yes</td> 
    *  <td headers="ri grsc rec_ex">yes</td> 
    *  <td headers="ri grsc rec_oth">yes</td></tr>
    *
-   *  <tr><th id="gpsc"><p align="left">get_reply_service_context</p></th>
+   *  <tr><th id="gpsc"><p style="text-align:left">get_reply_service_context</p></th>
    *  <td headers="ri gpsc send_req">no </td> 
    *  <td headers="ri gpsc send_poll">no </td> 
    *  <td headers="ri gpsc rec_reply">yes</td> 
@@ -704,14 +705,14 @@
    *    <td id="cri" colspan=6><i>ClientRequestInfo-specific:</i></td>
    *  </tr>
    *
-   *  <tr><th id="target"><p align="left">target</p></th>
+   *  <tr><th id="target"><p style="text-align:left">target</p></th>
    *  <td headers="cri target send_req">yes</td> 
    *  <td headers="cri target send_poll">yes</td> 
    *  <td headers="cri target rec_reply">yes</td> 
    *  <td headers="cri target rec_ex">yes</td> 
    *  <td headers="cri target rec_oth">yes</td></tr>
    *
-   *  <tr><th id="eftarget"><p align="left">effective_target</p></th>
+   *  <tr><th id="eftarget"><p style="text-align:left">effective_target</p></th>
    *  <td headers="cri eftarget send_req">yes</td> 
    *  <td headers="cri eftarget send_poll">yes</td> 
    *  <td headers="cri eftarget rec_reply">yes</td> 
@@ -719,49 +720,49 @@
    *  <td headers="cri eftarget rec_oth">yes</td>
    *  </tr>
    *
-   *  <tr><th id="efprof"><p align="left">effective_profile</p></th>
+   *  <tr><th id="efprof"><p style="text-align:left">effective_profile</p></th>
    *  <td headers="cri efprof send_req">yes</td> 
    *  <td headers="cri efprof send_poll">yes</td> 
    *  <td headers="cri efprof rec_reply">yes</td> 
    *  <td headers="cri efprof rec_ex">yes</td> 
    *  <td headers="cri efprof rec_oth">yes</td></tr>
    *
-   *  <tr><th id="rxp"><p align="left">received_exception</p></th>
+   *  <tr><th id="rxp"><p style="text-align:left">received_exception</p></th>
    *  <td headers="cri rxp send_req">no </td> 
    *  <td headers="cri rxp send_poll">no </td> 
    *  <td headers="cri rxp rec_reply">no </td> 
    *  <td headers="cri rxp rec_ex">yes</td> 
    *  <td headers="cri rxp rec_oth">no </td></tr>
    *
-   *  <tr><th id="rei"><p align="left">received_exception_id</p></th>
+   *  <tr><th id="rei"><p style="text-align:left">received_exception_id</p></th>
    *  <td headers="cri rei send_req">no </td> 
    *  <td headers="cri rei send_poll">no </td> 
    *  <td headers="cri rei rec_reply">no </td> 
    *  <td headers="cri rei rec_ex">yes</td> 
    *  <td headers="cri rei rec_oth">no </td></tr>
    *
-   *  <tr><th id="gec"><p align="left">get_effective_component</p></th>
+   *  <tr><th id="gec"><p style="text-align:left">get_effective_component</p></th>
    *  <td headers="cri gec send_req">yes</td> 
    *  <td headers="cri gec send_poll">no </td> 
    *  <td headers="cri gec rec_reply">yes</td> 
    *  <td headers="cri gec rec_ex">yes</td> 
    *  <td headers="cri gec rec_oth">yes</td></tr>
    *
-   *  <tr><th id="gecs"><p align="left">get_effective_components</p></th>
+   *  <tr><th id="gecs"><p style="text-align:left">get_effective_components</p></th>
    *  <td headers="cri gecs send_req">yes</td> 
    *  <td headers="cri gecs send_poll">no </td> 
    *  <td headers="cri gecs rec_reply">yes</td> 
    *  <td headers="cri gecs rec_ex">yes</td> 
    *  <td headers="cri gecs rec_oth">yes</td></tr>
    *
-   *  <tr><th id="grpcy"><p align="left">get_request_policy</p></th>
+   *  <tr><th id="grpcy"><p style="text-align:left">get_request_policy</p></th>
    *  <td headers="cri grpcy send_req">yes</td>
    *  <td headers="cri grpcy send_poll">no </td> 
    *  <td headers="cri grpcy rec_reply">yes</td> 
    *  <td headers="cri grpcy rec_ex">yes</td> 
    *  <td headers="cri grpcy rec_oth">yes</td></tr>
    *
-   *  <tr><th id="arsc"><p align="left">add_request_service_context</p></th>
+   *  <tr><th id="arsc"><p style="text-align:left">add_request_service_context</p></th>
    *    <td headers="cri arsc send_req">yes</td> 
    *    <td headers="cri arsc send_poll">no </td> 
    *    <td headers="cri arsc rec_reply">no </td> 
@@ -935,7 +936,8 @@
    * standard minor code of 14.
    *
    *
-   * <table border=1 summary="Shows the validity of each attribute or operation">
+   * <table class="plain">
+   *   <caption style="display:none">Shows the validity of each attribute or operation</caption>
    *   <thead>
    *     <tr>
    *       <th>&nbsp;</th>
@@ -953,21 +955,21 @@
    *   <td id="ri" colspan=6><i>Inherited from RequestInfo:</i></td>
    * </tr>
    *
-   * <tr><th id="req_id"><p align="left">request_id</p></th>
+   * <tr><th id="req_id"><p style="text-align:left">request_id</p></th>
    * <td headers="ri req_id rec_req_ser_con">yes</td> 
    * <td headers="ri req_id rec_req">yes</td> 
    * <td headers="ri req_id send_rep">yes</td> 
    * <td headers="ri req_id send_exc">yes</td> 
    * <td headers="ri req_id send_oth">yes</td></tr>
    *
-   * <tr><th id="op"><p align="left">operation</p></th>
+   * <tr><th id="op"><p style="text-align:left">operation</p></th>
    * <td headers="ri op rec_req_ser_con">yes</td> 
    * <td headers="ri op rec_req">yes</td> 
    * <td headers="ri op send_rep">yes</td> 
    * <td headers="ri op send_exc">yes</td> 
    * <td headers="ri op send_oth">yes</td></tr>
    *
-   * <tr><th id="args"><p align="left">arguments</p></th>
+   * <tr><th id="args"><p style="text-align:left">arguments</p></th>
    * <td headers="ri args rec_req_ser_con">no </td> 
    * <td headers="ri args rec_req">yes<sub>1</sub></td>
    * <td headers="ri args send_rep">yes</td> 
@@ -975,21 +977,21 @@
    * <td headers="ri args send_oth">no<sub>2</sub>
    * </td></tr>
    *
-   * <tr><th id="exps"><p align="left">exceptions</p></th>
+   * <tr><th id="exps"><p style="text-align:left">exceptions</p></th>
    * <td headers="ri exps rec_req_ser_con">no </td> 
    * <td headers="ri exps rec_req">yes</td> 
    * <td headers="ri exps send_rep">yes</td> 
    * <td headers="ri exps send_exc">yes</td> 
    * <td headers="ri exps send_oth">yes</td></tr>
    *
-   * <tr><th id="contexts"><p align="left">contexts</p></th>
+   * <tr><th id="contexts"><p style="text-align:left">contexts</p></th>
    * <td headers="ri contexts rec_req_ser_con">no </td> 
    * <td headers="ri contexts rec_req">yes</td> 
    * <td headers="ri contexts send_rep">yes</td> 
    * <td headers="ri contexts send_exc">yes</td> 
    * <td headers="ri contexts send_oth">yes</td></tr>
    *
-   * <tr><th id="op_con"><p align="left">operation_context</p></th>
+   * <tr><th id="op_con"><p style="text-align:left">operation_context</p></th>
    * <td headers="ri op_con rec_req_ser_con">no </td> 
    * <td headers="ri op_con rec_req">yes</td> 
    * <td headers="ri op_con send_rep">yes</td> 
@@ -997,7 +999,7 @@
    * <td headers="ri op_con send_oth">no </td>
    * </tr>
    * 
-   * <tr><th id="result"><p align="left">result</p></th>
+   * <tr><th id="result"><p style="text-align:left">result</p></th>
    * <td headers="ri result rec_req_ser_con">no </td> 
    * <td headers="ri result rec_req">no </td> 
    * <td headers="ri result send_rep">yes</td> 
@@ -1005,14 +1007,14 @@
    * <td headers="ri result send_oth">no </td>
    * </tr>
    *
-   * <tr><th id="res_ex"><p align="left">response_expected</p></th>
+   * <tr><th id="res_ex"><p style="text-align:left">response_expected</p></th>
    * <td headers="ri res_ex rec_req_ser_con">yes</td> 
    * <td headers="ri res_ex rec_req">yes</td> 
    * <td headers="ri res_ex send_rep">yes</td> 
    * <td headers="ri res_ex send_exc">yes</td> 
    * <td headers="ri res_ex send_oth">yes</td></tr>
    *
-   * <tr><th id="syn_scp"><p align="left">sync_scope</p></th>
+   * <tr><th id="syn_scp"><p style="text-align:left">sync_scope</p></th>
    * <td headers="ri syn_scp rec_req_ser_con">yes</td> 
    * <td headers="ri syn_scp rec_req">yes</td> 
    * <td headers="ri syn_scp send_rep">yes</td> 
--- a/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/PortableInterceptor/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,9 +1,9 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!doctype html>
 <html>
 <head>
 <!--
 
-Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
 -->
 
 </head>
-<body bgcolor="white">
+<body>
 
 Provides a mechanism to register ORB hooks through which ORB services
 can intercept the normal flow of execution of the ORB.
@@ -52,7 +52,7 @@
 {@link org.omg.PortableInterceptor.ORBInitializer ORBInitializer}</code> 
 for how to go about registering interceptors.
 
-<a name="unimpl"></a>
+<a id="unimpl"></a>
 <h2>Known limitations / unimplemented methods in package 
 <code>org.omg.PortableInterceptor</code></h2>
 
--- a/corba/src/java.corba/share/classes/org/omg/PortableServer/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/corba/src/java.corba/share/classes/org/omg/PortableServer/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,9 +1,9 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!doctype html>
 <html>
 <head>
 <!--
 
- Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 -->
 
 </head>
-<body bgcolor="white">
+<body>
 Provides classes and interfaces for making the server side of your applications 
 portable across multivendor ORBs.
 
@@ -160,7 +160,7 @@
 <A HREF="../../../../technotes/guides/idl/index.html">Java IDL home page</A>.
 
 <H2>Example Code</H2>
-<a name="sampleserver"></a>
+<a id="sampleserver"></a>
 <H3>Example Server Code</H3>
 <PRE>
 import javax.naming.InitialContext;
--- a/hotspot/.hgtags	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/.hgtags	Wed Jul 05 23:30:30 2017 +0200
@@ -579,3 +579,6 @@
 1ca7ed1b17b5776930d641d1379834f3140a74e4 jdk-9+167
 fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
 16d692be099c5c38eb48cc9aca78b0c900910d5b jdk-9+169
+38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170
+9d4746eca95aec3e5a344bf2520745dcc1d17eed jdk-10+7
+f5ded0cf954c770deeecb80f2ba1ba6a05cd979b jdk-10+8
--- a/hotspot/make/templates/gpl-cp-header	Tue May 23 22:39:06 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-Copyright (c) %YEARS%, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--- a/hotspot/make/templates/gpl-header	Tue May 23 22:39:06 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-Copyright (c) %YEARS%, Oracle and/or its affiliates. All rights reserved.
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-This code is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--- a/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -1347,6 +1347,16 @@
 
 void LIRGenerator::volatile_field_load(LIR_Address* address, LIR_Opr result,
                                        CodeEmitInfo* info) {
+  // 8179954: We need to make sure that the code generated for
+  // volatile accesses forms a sequentially-consistent set of
+  // operations when combined with STLR and LDAR.  Without a leading
+  // membar it's possible for a simple Dekker test to fail if loads
+  // use LD;DMB but stores use STLR.  This can happen if C2 compiles
+  // the stores in one method and C1 compiles the loads in another.
+  if (! UseBarriersForVolatile) {
+    __ membar();
+  }
+
   __ volatile_load_mem_reg(address, result, info);
 }
 
--- a/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -2389,17 +2389,31 @@
   const Register obj   = r4;
   const Register off   = r19;
   const Register flags = r0;
+  const Register raw_flags = r6;
   const Register bc    = r4; // uses same reg as obj, so don't mix them
 
   resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
   jvmti_post_field_access(cache, index, is_static, false);
-  load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
+  load_field_cp_cache_entry(obj, cache, index, off, raw_flags, is_static);
 
   if (!is_static) {
     // obj is on the stack
     pop_and_check_object(obj);
   }
 
+  // 8179954: We need to make sure that the code generated for
+  // volatile accesses forms a sequentially-consistent set of
+  // operations when combined with STLR and LDAR.  Without a leading
+  // membar it's possible for a simple Dekker test to fail if loads
+  // use LDR;DMB but stores use STLR.  This can happen if C2 compiles
+  // the stores in one method and we interpret the loads in another.
+  if (! UseBarriersForVolatile) {
+    Label notVolatile;
+    __ tbz(raw_flags, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
+    __ membar(MacroAssembler::AnyAny);
+    __ bind(notVolatile);
+  }
+
   const Address field(obj, off);
 
   Label Done, notByte, notBool, notInt, notShort, notChar,
@@ -2407,7 +2421,8 @@
 
   // x86 uses a shift and mask or wings it with a shift plus assert
   // the mask is not needed. aarch64 just uses bitfield extract
-  __ ubfxw(flags, flags, ConstantPoolCacheEntry::tos_state_shift,  ConstantPoolCacheEntry::tos_state_bits);
+  __ ubfxw(flags, raw_flags, ConstantPoolCacheEntry::tos_state_shift,
+           ConstantPoolCacheEntry::tos_state_bits);
 
   assert(btos == 0, "change code, btos != 0");
   __ cbnz(flags, notByte);
@@ -2529,9 +2544,11 @@
 #endif
 
   __ bind(Done);
-  // It's really not worth bothering to check whether this field
-  // really is volatile in the slow case.
+
+  Label notVolatile;
+  __ tbz(raw_flags, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
   __ membar(MacroAssembler::LoadLoad | MacroAssembler::LoadStore);
+  __ bind(notVolatile);
 }
 
 
@@ -2979,6 +2996,19 @@
   __ null_check(r0);
   const Address field(r0, r1);
 
+  // 8179954: We need to make sure that the code generated for
+  // volatile accesses forms a sequentially-consistent set of
+  // operations when combined with STLR and LDAR.  Without a leading
+  // membar it's possible for a simple Dekker test to fail if loads
+  // use LDR;DMB but stores use STLR.  This can happen if C2 compiles
+  // the stores in one method and we interpret the loads in another.
+  if (! UseBarriersForVolatile) {
+    Label notVolatile;
+    __ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
+    __ membar(MacroAssembler::AnyAny);
+    __ bind(notVolatile);
+  }
+
   // access field
   switch (bytecode()) {
   case Bytecodes::_fast_agetfield:
@@ -3027,6 +3057,22 @@
   __ get_cache_and_index_at_bcp(r2, r3, 2);
   __ ldr(r1, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
                                   ConstantPoolCacheEntry::f2_offset())));
+
+  // 8179954: We need to make sure that the code generated for
+  // volatile accesses forms a sequentially-consistent set of
+  // operations when combined with STLR and LDAR.  Without a leading
+  // membar it's possible for a simple Dekker test to fail if loads
+  // use LDR;DMB but stores use STLR.  This can happen if C2 compiles
+  // the stores in one method and we interpret the loads in another.
+  if (! UseBarriersForVolatile) {
+    Label notVolatile;
+    __ ldrw(r3, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
+                                     ConstantPoolCacheEntry::flags_offset())));
+    __ tbz(r3, ConstantPoolCacheEntry::is_volatile_shift, notVolatile);
+    __ membar(MacroAssembler::AnyAny);
+    __ bind(notVolatile);
+  }
+
   // make sure exception is reported in correct bcp range (getfield is
   // next instruction)
   __ increment(rbcp);
--- a/hotspot/src/share/vm/classfile/stringTable.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/classfile/stringTable.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -314,7 +314,11 @@
 }
 
 void StringTable::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
-  buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), processed, removed);
+  BucketUnlinkContext context;
+  buckets_unlink_or_oops_do(is_alive, f, 0, the_table()->table_size(), &context);
+  _the_table->bulk_free_entries(&context);
+  *processed = context._num_processed;
+  *removed = context._num_removed;
 }
 
 void StringTable::possibly_parallel_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int* processed, int* removed) {
@@ -323,6 +327,7 @@
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   const int limit = the_table()->table_size();
 
+  BucketUnlinkContext context;
   for (;;) {
     // Grab next set of buckets to scan
     int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
@@ -332,8 +337,11 @@
     }
 
     int end_idx = MIN2(limit, start_idx + ClaimChunkSize);
-    buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, processed, removed);
+    buckets_unlink_or_oops_do(is_alive, f, start_idx, end_idx, &context);
   }
+  _the_table->bulk_free_entries(&context);
+  *processed = context._num_processed;
+  *removed = context._num_removed;
 }
 
 void StringTable::buckets_oops_do(OopClosure* f, int start_idx, int end_idx) {
@@ -359,7 +367,7 @@
   }
 }
 
-void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed) {
+void StringTable::buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context) {
   const int limit = the_table()->table_size();
 
   assert(0 <= start_idx && start_idx <= limit,
@@ -383,10 +391,9 @@
         p = entry->next_addr();
       } else {
         *p = entry->next();
-        the_table()->free_entry(entry);
-        (*removed)++;
+        context->free_entry(entry);
       }
-      (*processed)++;
+      context->_num_processed++;
       entry = *p;
     }
   }
--- a/hotspot/src/share/vm/classfile/stringTable.hpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/classfile/stringTable.hpp	Wed Jul 05 23:30:30 2017 +0200
@@ -61,9 +61,13 @@
   // Apply the give oop closure to the entries to the buckets
   // in the range [start_idx, end_idx).
   static void buckets_oops_do(OopClosure* f, int start_idx, int end_idx);
+
+  typedef StringTable::BucketUnlinkContext BucketUnlinkContext;
   // Unlink or apply the give oop closure to the entries to the buckets
-  // in the range [start_idx, end_idx).
-  static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, int* processed, int* removed);
+  // in the range [start_idx, end_idx). Unlinked bucket entries are collected in the given
+  // context to be freed later.
+  // This allows multiple threads to work on the table at once.
+  static void buckets_unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* f, int start_idx, int end_idx, BucketUnlinkContext* context);
 
   // Hashing algorithm, used as the hash value used by the
   //     StringTable for bucket selection and comparison (stored in the
--- a/hotspot/src/share/vm/classfile/symbolTable.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/classfile/symbolTable.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -98,7 +98,7 @@
 int SymbolTable::_symbols_counted = 0;
 volatile int SymbolTable::_parallel_claimed_idx = 0;
 
-void SymbolTable::buckets_unlink(int start_idx, int end_idx, int* processed, int* removed) {
+void SymbolTable::buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context) {
   for (int i = start_idx; i < end_idx; ++i) {
     HashtableEntry<Symbol*, mtSymbol>** p = the_table()->bucket_addr(i);
     HashtableEntry<Symbol*, mtSymbol>* entry = the_table()->bucket(i);
@@ -111,15 +111,14 @@
         break;
       }
       Symbol* s = entry->literal();
-      (*processed)++;
+      context->_num_processed++;
       assert(s != NULL, "just checking");
       // If reference count is zero, remove.
       if (s->refcount() == 0) {
         assert(!entry->is_shared(), "shared entries should be kept live");
         delete s;
-        (*removed)++;
         *p = entry->next();
-        the_table()->free_entry(entry);
+        context->free_entry(entry);
       } else {
         p = entry->next_addr();
       }
@@ -132,17 +131,20 @@
 // Remove unreferenced symbols from the symbol table
 // This is done late during GC.
 void SymbolTable::unlink(int* processed, int* removed) {
-  size_t memory_total = 0;
-  buckets_unlink(0, the_table()->table_size(), processed, removed);
-  _symbols_removed += *removed;
-  _symbols_counted += *processed;
+  BucketUnlinkContext context;
+  buckets_unlink(0, the_table()->table_size(), &context);
+  _the_table->bulk_free_entries(&context);
+  *processed = context._num_processed;
+  *removed = context._num_removed;
+
+  _symbols_removed = context._num_removed;
+  _symbols_counted = context._num_processed;
 }
 
 void SymbolTable::possibly_parallel_unlink(int* processed, int* removed) {
   const int limit = the_table()->table_size();
 
-  size_t memory_total = 0;
-
+  BucketUnlinkContext context;
   for (;;) {
     // Grab next set of buckets to scan
     int start_idx = Atomic::add(ClaimChunkSize, &_parallel_claimed_idx) - ClaimChunkSize;
@@ -152,10 +154,15 @@
     }
 
     int end_idx = MIN2(limit, start_idx + ClaimChunkSize);
-    buckets_unlink(start_idx, end_idx, processed, removed);
+    buckets_unlink(start_idx, end_idx, &context);
   }
-  Atomic::add(*processed, &_symbols_counted);
-  Atomic::add(*removed, &_symbols_removed);
+
+  _the_table->bulk_free_entries(&context);
+  *processed = context._num_processed;
+  *removed = context._num_removed;
+
+  Atomic::add(context._num_processed, &_symbols_counted);
+  Atomic::add(context._num_removed, &_symbols_removed);
 }
 
 // Create a new table and using alternate hash code, populate the new table
--- a/hotspot/src/share/vm/classfile/symbolTable.hpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/classfile/symbolTable.hpp	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -154,8 +154,11 @@
 
   static volatile int _parallel_claimed_idx;
 
-  // Release any dead symbols
-  static void buckets_unlink(int start_idx, int end_idx, int* processed, int* removed);
+  typedef SymbolTable::BucketUnlinkContext BucketUnlinkContext;
+  // Release any dead symbols. Unlinked bucket entries are collected in the given
+  // context to be freed later.
+  // This allows multiple threads to work on the table at once.
+  static void buckets_unlink(int start_idx, int end_idx, BucketUnlinkContext* context);
 public:
   enum {
     symbol_alloc_batch_size = 8,
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -675,7 +675,7 @@
                                                                                                                                      \
   nonstatic_field(BasicHashtable<mtInternal>,  _table_size,                                   int)                                   \
   nonstatic_field(BasicHashtable<mtInternal>,  _buckets,                                      HashtableBucket<mtInternal>*)          \
-  nonstatic_field(BasicHashtable<mtInternal>,  _free_list,                                    BasicHashtableEntry<mtInternal>*)      \
+  volatile_nonstatic_field(BasicHashtable<mtInternal>,  _free_list,                           BasicHashtableEntry<mtInternal>*)      \
   nonstatic_field(BasicHashtable<mtInternal>,  _first_free_entry,                             char*)                                 \
   nonstatic_field(BasicHashtable<mtInternal>,  _end_block,                                    char*)                                 \
   nonstatic_field(BasicHashtable<mtInternal>,  _entry_size,                                   int)                                   \
--- a/hotspot/src/share/vm/utilities/hashtable.cpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/utilities/hashtable.cpp	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -173,6 +173,35 @@
   }
 }
 
+template <MEMFLAGS F> void BasicHashtable<F>::BucketUnlinkContext::free_entry(BasicHashtableEntry<F>* entry) {
+  entry->set_next(_removed_head);
+  _removed_head = entry;
+  if (_removed_tail == NULL) {
+    _removed_tail = entry;
+  }
+  _num_removed++;
+}
+
+template <MEMFLAGS F> void BasicHashtable<F>::bulk_free_entries(BucketUnlinkContext* context) {
+  if (context->_num_removed == 0) {
+    assert(context->_removed_head == NULL && context->_removed_tail == NULL,
+           "Zero entries in the unlink context, but elements linked from " PTR_FORMAT " to " PTR_FORMAT,
+           p2i(context->_removed_head), p2i(context->_removed_tail));
+    return;
+  }
+
+  // MT-safe add of the list of BasicHashTableEntrys from the context to the free list.
+  BasicHashtableEntry<F>* current = _free_list;
+  while (true) {
+    context->_removed_tail->set_next(current);
+    BasicHashtableEntry<F>* old = (BasicHashtableEntry<F>*)Atomic::cmpxchg_ptr(context->_removed_head, &_free_list, current);
+    if (old == current) {
+      break;
+    }
+    current = old;
+  }
+  Atomic::add(-context->_num_removed, &_number_of_entries);
+}
 
 // Copy the table to the shared space.
 
--- a/hotspot/src/share/vm/utilities/hashtable.hpp	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/src/share/vm/utilities/hashtable.hpp	Wed Jul 05 23:30:30 2017 +0200
@@ -173,11 +173,11 @@
   // Instance variables
   int               _table_size;
   HashtableBucket<F>*     _buckets;
-  BasicHashtableEntry<F>* _free_list;
+  BasicHashtableEntry<F>* volatile _free_list;
   char*             _first_free_entry;
   char*             _end_block;
   int               _entry_size;
-  int               _number_of_entries;
+  volatile int      _number_of_entries;
 
 protected:
 
@@ -225,6 +225,24 @@
   // Free the buckets in this hashtable
   void free_buckets();
 
+  // Helper data structure containing context for the bucket entry unlink process,
+  // storing the unlinked buckets in a linked list.
+  // Also avoids the need to pass around these four members as parameters everywhere.
+  struct BucketUnlinkContext {
+    int _num_processed;
+    int _num_removed;
+    // Head and tail pointers for the linked list of removed entries.
+    BasicHashtableEntry<F>* _removed_head;
+    BasicHashtableEntry<F>* _removed_tail;
+
+    BucketUnlinkContext() : _num_processed(0), _num_removed(0), _removed_head(NULL), _removed_tail(NULL) {
+    }
+
+    void free_entry(BasicHashtableEntry<F>* entry);
+  };
+  // Add of bucket entries linked together in the given context to the global free list. This method
+  // is mt-safe wrt. to other calls of this method.
+  void bulk_free_entries(BucketUnlinkContext* context);
 public:
   int table_size() { return _table_size; }
   void set_entry(int index, BasicHashtableEntry<F>* entry);
--- a/hotspot/test/gc/arguments/TestDynMaxHeapFreeRatio.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/gc/arguments/TestDynMaxHeapFreeRatio.java	Wed Jul 05 23:30:30 2017 +0200
@@ -24,7 +24,7 @@
 import static jdk.test.lib.Asserts.assertEQ;
 import static jdk.test.lib.Asserts.assertFalse;
 import static jdk.test.lib.Asserts.assertTrue;
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 
 /**
  * @test TestDynMaxHeapFreeRatio
--- a/hotspot/test/gc/arguments/TestDynMinHeapFreeRatio.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/gc/arguments/TestDynMinHeapFreeRatio.java	Wed Jul 05 23:30:30 2017 +0200
@@ -38,7 +38,7 @@
 import static jdk.test.lib.Asserts.assertEQ;
 import static jdk.test.lib.Asserts.assertFalse;
 import static jdk.test.lib.Asserts.assertTrue;
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 
 public class TestDynMinHeapFreeRatio {
 
--- a/hotspot/test/gc/metaspace/TestMetaspacePerfCounters.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/gc/metaspace/TestMetaspacePerfCounters.java	Wed Jul 05 23:30:30 2017 +0200
@@ -26,7 +26,7 @@
 import java.util.ArrayList;
 
 import jdk.test.lib.ByteCodeLoader;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.Platform;
 
 import sun.management.ManagementFactoryHelper;
--- a/hotspot/test/gc/parallel/TestDynShrinkHeap.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/gc/parallel/TestDynShrinkHeap.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @library /test/lib /
  * @run main/othervm -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=0 -XX:MaxHeapFreeRatio=100 -Xmx1g -verbose:gc TestDynShrinkHeap
  */
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryUsage;
 import java.util.ArrayList;
--- a/hotspot/test/runtime/BadObjectClass/BootstrapRedefine.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/BadObjectClass/BootstrapRedefine.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @run main BootstrapRedefine
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.process.OutputAnalyzer;
 
--- a/hotspot/test/runtime/CommandLine/OptionsValidation/TestJcmdOutput.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/CommandLine/OptionsValidation/TestJcmdOutput.java	Wed Jul 05 23:30:30 2017 +0200
@@ -34,7 +34,7 @@
  */
 
 import jdk.test.lib.Asserts;
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.dcmd.PidJcmdExecutor;
--- a/hotspot/test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java	Wed Jul 05 23:30:30 2017 +0200
@@ -29,7 +29,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.dcmd.CommandExecutor;
--- a/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java	Wed Jul 05 23:30:30 2017 +0200
@@ -51,7 +51,7 @@
 import java.util.Properties;
 import java.util.Set;
 import jdk.test.lib.Asserts;
-import jdk.test.lib.DynamicVMOption;
+import jdk.test.lib.management.DynamicVMOption;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/RedefineTests/ModifyAnonymous.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/RedefineTests/ModifyAnonymous.java	Wed Jul 05 23:30:30 2017 +0200
@@ -34,15 +34,14 @@
 
 import java.io.FileNotFoundException;
 import java.io.PrintWriter;
-import java.lang.NoSuchFieldException;
-import java.lang.NoSuchMethodException;
 import java.lang.RuntimeException;
 import java.lang.instrument.ClassDefinition;
 import java.lang.instrument.ClassFileTransformer;
 import java.lang.instrument.IllegalClassFormatException;
 import java.lang.instrument.Instrumentation;
 import java.security.ProtectionDomain;
-import jdk.test.lib.*;
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 
 public class ModifyAnonymous {
 
--- a/hotspot/test/runtime/Unsafe/DefineClass.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/Unsafe/DefineClass.java	Wed Jul 05 23:30:30 2017 +0200
@@ -32,8 +32,8 @@
  */
 
 import java.security.ProtectionDomain;
-import java.io.InputStream;
-import jdk.test.lib.InMemoryJavaCompiler;
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.internal.misc.Unsafe;
 import static jdk.test.lib.Asserts.*;
 
--- a/hotspot/test/runtime/Unsafe/NestedUnsafe.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/Unsafe/NestedUnsafe.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,12 +31,9 @@
  * @run main NestedUnsafe
  */
 
-import java.security.ProtectionDomain;
-import java.io.InputStream;
 import java.lang.*;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.internal.misc.Unsafe;
-import static jdk.test.lib.Asserts.*;
 
 // package p;
 
--- a/hotspot/test/runtime/defineAnonClass/NestedUnsafe.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/defineAnonClass/NestedUnsafe.java	Wed Jul 05 23:30:30 2017 +0200
@@ -34,11 +34,10 @@
 
 package p;
 
-import java.security.ProtectionDomain;
-import java.io.InputStream;
 import java.lang.*;
-import jdk.test.lib.*;
+
 import jdk.internal.misc.Unsafe;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 
 
 // Test that an anonymous class in package 'p' cannot define its own anonymous class
--- a/hotspot/test/runtime/defineAnonClass/NestedUnsafe2.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/defineAnonClass/NestedUnsafe2.java	Wed Jul 05 23:30:30 2017 +0200
@@ -34,11 +34,10 @@
 
 package p;
 
-import java.security.ProtectionDomain;
-import java.io.InputStream;
 import java.lang.*;
-import jdk.test.lib.*;
+
 import jdk.internal.misc.Unsafe;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 
 
 // Test that an anonymous class that gets put in its host's package cannot define
--- a/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java	Wed Jul 05 23:30:30 2017 +0200
@@ -33,7 +33,7 @@
 import java.io.File;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.process.OutputAnalyzer;
 
--- a/hotspot/test/runtime/modules/ModuleStress/ModuleStress.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/ModuleStress/ModuleStress.java	Wed Jul 05 23:30:30 2017 +0200
@@ -38,8 +38,7 @@
 
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.process.OutputAnalyzer;
-import jdk.test.lib.InMemoryJavaCompiler;
-import java.io.File;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 
 public class ModuleStress {
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModule2Dirs.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModule2Dirs.java	Wed Jul 05 23:30:30 2017 +0200
@@ -30,10 +30,9 @@
  * @run main PatchModule2Dirs
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
-import java.io.File;
 
 public class PatchModule2Dirs {
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleCDS.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleCDS.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,8 +31,7 @@
  * @run main PatchModuleCDS
  */
 
-import java.io.File;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleClassList.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleClassList.java	Wed Jul 05 23:30:30 2017 +0200
@@ -33,7 +33,7 @@
 
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleJavaBase.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleJavaBase.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @run main PatchModuleJavaBase
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTest.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTest.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @run main PatchModuleTest
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJar.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJar.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @run main PatchModuleTestJar
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJarDir.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTestJarDir.java	Wed Jul 05 23:30:30 2017 +0200
@@ -32,8 +32,8 @@
  */
 
 import java.io.File;
-import java.nio.file.Files;
-import jdk.test.lib.InMemoryJavaCompiler;
+
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/PatchModule/PatchModuleTraceCL.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/PatchModule/PatchModuleTraceCL.java	Wed Jul 05 23:30:30 2017 +0200
@@ -32,8 +32,7 @@
  * @run main PatchModuleTraceCL
  */
 
-import java.io.File;
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/Visibility/PatchModuleVisibility.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/Visibility/PatchModuleVisibility.java	Wed Jul 05 23:30:30 2017 +0200
@@ -36,7 +36,7 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/hotspot/test/runtime/modules/Visibility/XbootcpNoVisibility.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/Visibility/XbootcpNoVisibility.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,7 +31,7 @@
  * @run main/othervm XbootcpNoVisibility
  */
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.ProcessTools;
 import jdk.test.lib.process.OutputAnalyzer;
 
--- a/hotspot/test/runtime/modules/Visibility/XbootcpVisibility.java	Tue May 23 22:39:06 2017 +0000
+++ b/hotspot/test/runtime/modules/Visibility/XbootcpVisibility.java	Wed Jul 05 23:30:30 2017 +0200
@@ -36,7 +36,7 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
 
-import jdk.test.lib.InMemoryJavaCompiler;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
 
--- a/jaxp/.hgtags	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/.hgtags	Wed Jul 05 23:30:30 2017 +0200
@@ -419,3 +419,6 @@
 646567dcfa64b9a39b33d71330427737d1c1a0d5 jdk-9+167
 23a87f409371fb8ce7b764cccb3a74c3f6b29900 jdk-9+168
 5d9d2a65fb26aa183019346c11d9314819621665 jdk-9+169
+6e78f902f477a093afca85a1042f97410d01eb69 jdk-9+170
+09cae4c36242734f5450de739b8264523a030809 jdk-10+7
+856998840907b67b7e1fc49259f785ac085a189b jdk-10+8
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/FeatureState.java	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/FeatureState.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,14 +23,6 @@
  * questions.
  */
 
-/*
- * Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
- */
-
-/*
- * $Id: FeatureState.java 3024 2011-03-01 03:46:13Z joehw $
- */
-
 package com.sun.org.apache.xerces.internal.util;
 
 public class FeatureState {
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/ParserConfigurationSettings.java	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/ParserConfigurationSettings.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/PropertyState.java	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/PropertyState.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,13 +23,6 @@
  * questions.
  */
 
-/*
- * Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
- */
-
-/*
- * $Id: PropertyState.java 3024 2011-03-01 03:46:13Z joehw $
- */
 package com.sun.org.apache.xerces.internal.util;
 
 public class PropertyState {
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/Status.java	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/Status.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,13 +23,6 @@
  * questions.
  */
 
-/*
- * Copyright (c) 2009 by Oracle Corporation. All Rights Reserved.
- */
-
-/*
- * $Id: Status.java 3024 2011-03-01 03:46:13Z joehw $
- */
 package com.sun.org.apache.xerces.internal.util;
 
 public enum Status {
--- a/jaxp/src/java.xml/share/classes/com/sun/xml/internal/stream/dtd/nonvalidating/XMLSimpleType.java	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/com/sun/xml/internal/stream/dtd/nonvalidating/XMLSimpleType.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,32 +1,21 @@
 /*
  * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- * THIS FILE WAS MODIFIED BY SUN MICROSYSTEMS, INC.
- */
-
-/*
- * Copyright 2005 The Apache Software Foundation.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package com.sun.xml.internal.stream.dtd.nonvalidating;
--- a/jaxp/src/java.xml/share/classes/javax/xml/transform/stax/package.html	Tue May 23 22:39:06 2017 +0000
+++ b/jaxp/src/java.xml/share/classes/javax/xml/transform/stax/package.html	Wed Jul 05 23:30:30 2017 +0200
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-
-Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -23,48 +22,45 @@
 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 or visit www.oracle.com if you need additional information or have any
 questions. 
-
 -->
 
 <!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
 <html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<title>javax.xml.transform.stax</title>
+    <head>
+        <title>javax.xml.transform.stax</title>
 
-		<meta name="CVS"
-			content="$Id: package.html,v 1.2 2005/11/03 19:34:28 jeffsuttor Exp $" />
-		<meta name="AUTHOR"
-			content="Jeff.Suttor@Sun.com" />
-		<meta name="AUTHOR"
-			content="Neeraj.Bajaj@Sun.com" />
-	</head>
-	<body>
-		<p>
-			Provides for StAX-specific transformation APIs.
-			TODO: better description(s).
-		</p>
+        <meta name="CVS"
+              content="$Id: package.html,v 1.2 2005/11/03 19:34:28 jeffsuttor Exp $" />
+        <meta name="AUTHOR"
+              content="Jeff.Suttor@Sun.com" />
+        <meta name="AUTHOR"
+              content="Neeraj.Bajaj@Sun.com" />
+    </head>
+    <body>
+        <p>
+            This package implements StAX-specific transformation APIs. It provides
+            classes which allow input from a StAX reader, that is, 
+            {@link javax.xml.stream.XMLStreamReader} or {@link javax.xml.stream.XMLEventReader}, 
+            and output to a StAX writer, that is, 
+            {@link javax.xml.stream.XMLStreamWriter} or {@link javax.xml.stream.XMLEventWriter}.
+        </p>
+        <p>
+            The {@link javax.xml.transform.stax.StAXSource} class encapsulates a 
+            {@link javax.xml.stream.XMLStreamReader} or {@link javax.xml.stream.XMLEventReader} 
+            and can be used as an input where a {@link javax.xml.transform.Source}
+            object is accepted.
+        </p>
+        <p>
+            The {@link javax.xml.transform.stax.StAXResult} class encapsulates a 
+            {@link javax.xml.stream.XMLStreamWriter} or {@link javax.xml.stream.XMLEventWriter} 
+            and can be used as an output where a {@link javax.xml.transform.Result}
+            object is accepted.
+        </p>
 
-		<h2>Package Specification</h2>
-		<ul>
-			<li><a href="http://jcp.org/en/jsr/detail?id=173">JSR 173: Streaming API for XML</a></li>
-		</ul>
+        @since 1.6
+    </body>
+</html>
 
-		<h2>Related Documentation</h2>
-
-		<p>For overviews, tutorials, examples, guides, and tool documentation, please see:</p>
-		<ul>
-			<li><a href="">TODO: Refer to non-spec documentation</a></li>
-		</ul>
-
-		<!-- Put @see and @since tags down here. -->
-		<ul>
-			<li>@see XMLStreamReader</li>
-			<li>@see XMLEventReader</li>
-		</ul>
-		
-		@since 1.6
-	</body>
-</html>
--- a/jaxws/.hgtags	Tue May 23 22:39:06 2017 +0000
+++ b/jaxws/.hgtags	Wed Jul 05 23:30:30 2017 +0200
@@ -422,3 +422,6 @@
 1c610f1b4097c64cdd722a7fb59f5a4d9cc15ca9 jdk-9+167
 2746716dcc5a8c28ccf41df0c8fb620b1a1e7098 jdk-9+168
 912cf69806d518c5af7fba30b340c4cb5458dd22 jdk-9+169
+e75d3abe579a7b39b762fc0a1a337c49eb072d82 jdk-9+170
+b0efae7df1dfa14926058baebaf999e4268c955c jdk-10+7
+e705867d9989d00e4357f66f18b302c95e13b5e7 jdk-10+8
--- a/jdk/.hgtags	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/.hgtags	Wed Jul 05 23:30:30 2017 +0200
@@ -419,3 +419,6 @@
 7828aedcb525df40b7c8122bcc3f997c75ebaf7f jdk-9+167
 e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
 177436a54ca13730ffc725a6e5dbfcd9486f3da3 jdk-9+169
+ef9954f6896bb0b95ac62bf769f68b59a7a56ccd jdk-9+170
+cbd65760a005766610583949b3b5c9ace92e74b3 jdk-10+7
+f0adc10ed8316e6cf316e3208c5ecf6835d22bc4 jdk-10+8
--- a/jdk/make/CompileDemos.gmk	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/make/CompileDemos.gmk	Wed Jul 05 23:30:30 2017 +0200
@@ -291,9 +291,21 @@
 
 ################################################################################
 
+ifneq ($(filter images, $(MAKECMDGOALS)), )
+  $(eval $(call SetupCopyFiles, COPY_TO_TEST_IMAGE, \
+      SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
+      DEST := $(TEST_IMAGE_DIR)/jdk/demos, \
+      FILES := $(call DoubleDollar, $(call CacheFind, $(SUPPORT_OUTPUTDIR)/demos/image)), \
+  ))
+
+  IMAGES_TARGETS := $(COPY_TO_TEST_IMAGE)
+endif
+
+################################################################################
 # Hook to include the corresponding custom file, if present.
 $(eval $(call IncludeCustomExtension, jdk, CompileDemos.gmk))
 
 all: $(TARGETS)
+images: $(IMAGES_TARGETS)
 
 .PHONY: all
--- a/jdk/make/CompileModuleTools.gmk	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/make/CompileModuleTools.gmk	Wed Jul 05 23:30:30 2017 +0200
@@ -23,21 +23,33 @@
 # questions.
 #
 
+default: all
+
 include $(SPEC)
 include MakeBase.gmk
 include JavaCompilation.gmk
 include SetupJavaCompilers.gmk
 
+################################################################################
+
 TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
 
 $(eval $(call SetupJavaCompilation,BUILD_JIGSAW_TOOLS, \
     SETUP := GENERATE_USINGJDKBYTECODE, \
     SRC := $(JDK_TOPDIR)/make/src/classes, \
     INCLUDES := build/tools/deps \
+                build/tools/docs \
                 build/tools/jigsaw, \
+    COPY := .properties .html, \
     BIN := $(TOOLS_CLASSES_DIR), \
     ADD_JAVAC_FLAGS := \
         --add-modules jdk.jdeps \
         --add-exports java.base/jdk.internal.module=ALL-UNNAMED \
         --add-exports jdk.jdeps/com.sun.tools.jdeps=ALL-UNNAMED \
 ))
+
+TARGETS += $(BUILD_JIGSAW_TOOLS)
+
+################################################################################
+
+all: $(TARGETS)
--- a/jdk/make/CompileTools.gmk	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/make/CompileTools.gmk	Wed Jul 05 23:30:30 2017 +0200
@@ -46,6 +46,7 @@
     SETUP := GENERATE_OLDBYTECODE, \
     SRC := $(BUILD_TOOLS_SRC_DIRS), \
     EXCLUDES := build/tools/deps \
+                build/tools/docs \
                 build/tools/jigsaw, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes))
 
--- a/jdk/make/ModuleTools.gmk	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/make/ModuleTools.gmk	Wed Jul 05 23:30:30 2017 +0200
@@ -49,4 +49,7 @@
     --add-exports java.base/jdk.internal.module=ALL-UNNAMED \
     build.tools.jigsaw.AddPackagesAttribute
 
+TOOL_GEN_DOCS_BUNDLE_PAGE := $(BUILD_JAVA) -esa -ea -cp $(TOOLS_CLASSES_DIR) \
+    build.tools.docs.GenDocsBundlePage
+
 endif # _MODULE_TOOLS_GMK
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/src/classes/build/tools/docs/GenDocsBundlePage.java	Wed Jul 05 23:30:30 2017 +0200
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package build.tools.docs;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.lang.module.ModuleFinder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Build tool to generate the docs bundle index page.
+ */
+public class GenDocsBundlePage {
+    private static String DOCS_BUNDLE_PAGE = "docs-bundle-page.html";
+    private static String MODULE_GROUPS_PROPS = "docs-module-groups.properties";
+
+    private static String USAGE =
+        "GenDocsBundlePage --output <file path> --title <title>" +
+        "                  [--template <template>]";
+
+    public static void main(String... args) throws IOException {
+        String title = null;
+        Path outputfile = null;
+        Path template = null;
+        for (int i=0; i < args.length; i++) {
+            String option = args[i];
+            if (option.equals("--output")) {
+                outputfile = Paths.get(getArgument(args, option, ++i));
+            } else if (option.equals("--title")) {
+                title = getArgument(args, option, ++i);
+            } else if (option.equals("--template")) {
+                template = Paths.get(getArgument(args, option, ++i));
+            } else if (option.startsWith("-")) {
+                throw new IllegalArgumentException("Invalid option: " + option);
+            }
+        }
+
+        if (outputfile == null) {
+            System.err.println("ERROR: must specify --output option");
+            System.exit(1);
+        }
+        if (title == null) {
+            System.err.println("ERROR: must specify --title option");
+            System.exit(1);
+        }
+
+        try (InputStream is = readTemplate(template);
+             BufferedReader reader = new BufferedReader(new InputStreamReader(is)))
+        {
+            new GenDocsBundlePage(title, outputfile).run(reader);
+        }
+    }
+
+    private static String getArgument(String[] args, String option, int index) {
+        if (index < args.length) {
+            return args[index];
+        }
+        throw new IllegalArgumentException("Argument must be specified for " + option);
+    }
+
+    private static InputStream readTemplate(Path template) throws IOException {
+        if (template != null) {
+            return Files.newInputStream(template);
+        } else {
+            return GenDocsBundlePage.class.getResourceAsStream(DOCS_BUNDLE_PAGE);
+        }
+    }
+
+    private static final String HEADER_TITLE = "@HEADER_TITLE@";
+    final Path outputfile;
+    final String title;
+    final Map<String, String> moduleGroups;
+
+    GenDocsBundlePage(String title, Path outputfile) throws IOException
+    {
+        this.outputfile = outputfile;
+        this.title = title;
+        this.moduleGroups = moduleGroups();
+    }
+
+    static Map<String, String> moduleGroups() throws IOException {
+        ModuleFinder finder = ModuleFinder.ofSystem();
+        Map<String, String> groups = new HashMap<>();
+        try (InputStream in = GenDocsBundlePage.class.getResourceAsStream(MODULE_GROUPS_PROPS)) {
+            Properties props = new Properties();
+            props.load(in);
+            for (String key: props.stringPropertyNames()) {
+                Set<String> mods = Stream.of(props.getProperty(key).split("\\s+"))
+                                         .filter(mn -> finder.find(mn).isPresent())
+                                         .map(String::trim)
+                                         .collect(Collectors.toSet());
+
+                // divide into 3 columns: Java SE, JDK, JavaFX
+                StringBuilder sb = new StringBuilder();
+                sb.append(mods.stream()
+                              .filter(mn -> mn.startsWith("java."))
+                              .sorted()
+                              .map(GenDocsBundlePage::toHRef)
+                              .collect(Collectors.joining("\n")));
+                sb.append("</td>\n<td>")
+                  .append(mods.stream()
+                              .filter(mn -> mn.startsWith("jdk."))
+                              .sorted()
+                              .map(GenDocsBundlePage::toHRef)
+                              .collect(Collectors.joining("\n")));
+                sb.append("</td>\n<td>");
+                if (mods.stream().anyMatch(mn -> mn.startsWith("javafx."))) {
+                    sb.append(mods.stream()
+                                  .filter(mn -> mn.startsWith("javafx."))
+                                  .sorted()
+                                  .map(GenDocsBundlePage::toHRef)
+                                  .collect(Collectors.joining("\n")));
+                }
+                String name = "@" + key.toUpperCase(Locale.ENGLISH) + "@";
+                groups.put(name, sb.toString());
+            }
+        }
+        return groups;
+    }
+
+    static String toHRef(String mn) {
+        return String.format("<a href=\"api/%s-summary.html\">%s</a><br>", mn, mn);
+    }
+
+    void run(BufferedReader reader) throws IOException {
+        if (Files.notExists(outputfile.getParent())) {
+            Files.createDirectories(outputfile.getParent());
+        }
+        try (BufferedWriter bw = Files.newBufferedWriter(outputfile, StandardCharsets.UTF_8);
+             PrintWriter writer = new PrintWriter(bw)) {
+            reader.lines().map(this::genOutputLine)
+                  .forEach(writer::println);
+        }
+    }
+
+    String genOutputLine(String line) {
+        if (line.contains(HEADER_TITLE)) {
+            line = line.replace(HEADER_TITLE, title);
+        }
+        if (line.contains("@")) {
+            for (Map.Entry<String,String> e: moduleGroups.entrySet()) {
+                if (line.contains(e.getKey())) {
+                    line = line.replace(e.getKey(), e.getValue());
+                }
+            }
+        }
+        return line;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/src/classes/build/tools/docs/docs-bundle-page.html	Wed Jul 05 23:30:30 2017 +0200
@@ -0,0 +1,146 @@
+<!--
+Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html;" charset="utf-8">
+  <style type="text/css">
+table {
+  border-collapse: collapse;
+}
+table {
+  border: 1px solid black;
+}
+th ,td {
+  border: 0px solid black;
+}
+thead th {
+  background-color: #DDD;
+}
+tbody > tr:nth-child(even) {
+    background-color: #EEE
+}
+tbody > tr:nth-child(odd) {
+    background-color: #FFF
+}
+th, td {
+  font-family: sans-serif; /* could eventually be DejaVu */
+  font-size: small;
+  padding: 5px 10px;
+  vertical-align:top;
+}
+td a {
+  text-decoration: none;
+}
+tr th {
+  text-align:left;
+}
+caption {
+  font-size: smaller;
+  font-weight: bold;
+}
+</style>
+<title>@HEADER_TITLE@</title>
+</head>
+<body>
+
+<h1>@HEADER_TITLE@</h1>
+
+<ul>
+<li><a href="api/index.html">JDK API Specification</a></li>
+<li>Java Language Specification</li>
+<li>Java Virtual Machine Specification</li>
+</ul>
+
+<table>
+<caption>Modules</caption>
+<thead>
+<tr>
+  <th scope="col">Group</th>
+  <th scope="col">Java SE</th>
+  <th scope="col">JDK</th>
+  <th scope="col">JavaFX</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <th scope="row">Foundation</th>
+  <td>@CORE_MODULES@</td>
+</tr>
+<tr>
+<th scope="row">Security</th>
+  <td>@SECURITY_MODULES@</td>
+</tr>
+<tr>
+<th scope="row">Instrumentation and<br>Management</th>
+  <td>@INSTRUMENT_MGMT_MODULES@</td>
+</tr>
+<tr>
+<th scope="row">Integration</th>
+  <td>@INTEGRATION_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">User Interface</th>
+  <td>@UI_TOOLKITS_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">Compiler and Scripting</th>
+  <td>@COMPILER_SCRIPTING_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">Debugging</th>
+  <td>@DEBUG_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">Tools and Tool APIs</th>
+  <td>@TOOL_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">Incubating Features</th>
+  <td>@INCUBATOR_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row">Java EE</th>
+  <td>@JAVA_EE_MODULES@</td>
+</tr>
+<tr>
+  <th scope="row"></th>
+  <th scope="row">Outside Java SE</th>
+  <th scope="row">JDK</th>
+  <th scope="row">JavaFX</th>
+</tr>
+<tr>
+  <th scope="row">Others</th>
+  <td>@OTHER_MODULES@</td>
+</tr>
+</tbody>
+</table>
+
+<p>
+<hr/>
+<a href="legal/cpyr.html">Copyright</a>&copy; 1993, 2017, Oracle and/or its affiliates. All rights reserved.</p>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/src/classes/build/tools/docs/docs-module-groups.properties	Wed Jul 05 23:30:30 2017 +0200
@@ -0,0 +1,101 @@
+# Module Grouping for the docs bundle page
+#
+
+core_modules=\
+java.base \
+jdk.charsets \
+jdk.localedata \
+jdk.net \
+jdk.sctp \
+jdk.zipfs
+
+java_ee_modules=\
+java.activation \
+java.corba \
+java.transaction \
+java.xml.bind \
+java.xml.ws \
+java.xml.ws.annotation
+
+security_modules=\
+java.security.jgss \
+java.security.sasl \
+java.xml.crypto \
+jdk.security.auth \
+jdk.security.jgss \
+jdk.crypto.cryptoki \
+jdk.crypto.ec \
+jdk.crypto.mscapi \
+jdk.crypto.ucrypto
+
+instrument_mgmt_modules=\
+java.instrument \
+java.management \
+java.management.rmi \
+jdk.jfr \
+jdk.management \
+jdk.management.agent \
+jdk.management.cmm \
+jdk.management.jfr \
+jdk.management.resource \
+
+integration_modules=\
+java.logging \
+java.naming \
+java.prefs \
+java.rmi \
+java.sql \
+java.sql.rowset \
+java.xml \
+jdk.httpserver \
+jdk.naming.dns \
+jdk.naming.rmi
+
+ui_toolkits_modules=\
+java.datatransfer \
+java.desktop \
+javafx.base \
+javafx.controls \
+javafx.fxml \
+javafx.graphics \
+javafx.media \
+javafx.swing \
+javafx.web \
+jdk.accessibility
+
+other_modules=\
+java.jnlp \
+java.smartcardio \
+jdk.jsobject \
+jdk.xml.dom
+
+debug_modules=\
+jdk.jdi \
+jdk.jdwp.agent
+
+tool_modules=\
+jdk.attach \
+jdk.editpad \
+jdk.jartool \
+jdk.javadoc \
+jdk.jcmd \
+jdk.jconsole \
+jdk.jdeps \
+jdk.jlink \
+jdk.jshell \
+jdk.jstatd \
+jdk.pack \
+jdk.policytool \
+jdk.packager.services \
+jdk.rmic
+
+compiler_scripting_modules=\
+java.compiler \
+java.scripting \
+jdk.compiler \
+jdk.dynalink \
+jdk.scripting.nashorn \
+jdk.scripting.nashorn.shell
+
+incubator_modules=\
+jdk.incubator.httpclient
--- a/jdk/src/java.base/share/classes/java/io/DataInput.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/DataInput.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -59,8 +59,9 @@
  * far left-hand column.
  *
  * <blockquote>
- *   <table border="1" cellspacing="0" cellpadding="8"
- *          summary="Bit values and bytes">
+ *   <table class="plain">
+ *     <caption style="display:none">Bit values and bytes</caption>
+ *     <tbody>
  *     <tr>
  *       <th colspan="9"><span style="font-weight:normal">
  *         All characters in the range {@code '\u005Cu0001'} to
@@ -71,7 +72,7 @@
  *       <th colspan="8" id="bit_a">Bit Values</th>
  *     </tr>
  *     <tr>
- *       <th id="byte1_a">Byte 1</th>
+ *       <th id="byte1_a" style="text-align:left">Byte 1</th>
  *       <td style="text-align:center">0
  *       <td colspan="7" style="text-align:center">bits 6-0
  *     </tr>
@@ -86,14 +87,14 @@
  *       <th colspan="8" id="bit_b">Bit Values</th>
  *     </tr>
  *     <tr>
- *       <th id="byte1_b">Byte 1</th>
+ *       <th id="byte1_b" style="text-align:left">Byte 1</th>
  *       <td style="text-align:center">1
  *       <td style="text-align:center">1
  *       <td style="text-align:center">0
  *       <td colspan="5" style="text-align:center">bits 10-6
  *     </tr>
  *     <tr>
- *       <th id="byte2_a">Byte 2</th>
+ *       <th id="byte2_a" style="text-align:left">Byte 2</th>
  *       <td style="text-align:center">1
  *       <td style="text-align:center">0
  *       <td colspan="6" style="text-align:center">bits 5-0
@@ -108,7 +109,7 @@
  *       <th colspan="8"id="bit_c">Bit Values</th>
  *     </tr>
  *     <tr>
- *       <th id="byte1_c">Byte 1</th>
+ *       <th id="byte1_c" style="text-align:left">Byte 1</th>
  *       <td style="text-align:center">1
  *       <td style="text-align:center">1
  *       <td style="text-align:center">1
@@ -116,17 +117,18 @@
  *       <td colspan="4" style="text-align:center">bits 15-12
  *     </tr>
  *     <tr>
- *       <th id="byte2_b">Byte 2</th>
+ *       <th id="byte2_b" style="text-align:left">Byte 2</th>
  *       <td style="text-align:center">1
  *       <td style="text-align:center">0
  *       <td colspan="6" style="text-align:center">bits 11-6
  *     </tr>
  *     <tr>
- *       <th id="byte3">Byte 3</th>
+ *       <th id="byte3" style="text-align:left">Byte 3</th>
  *       <td style="text-align:center">1
  *       <td style="text-align:center">0
  *       <td colspan="6" style="text-align:center">bits 5-0
  *     </tr>
+ *     </tbody>
  *   </table>
  * </blockquote>
  * <p>
--- a/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java	Wed Jul 05 23:30:30 2017 +0200
@@ -216,7 +216,8 @@
  * @see java.io.DataInput
  * @see java.io.ObjectOutputStream
  * @see java.io.Serializable
- * @see <a href="../../../platform/serialization/spec/input.html"> Object Serialization Specification, Section 3, Object Input Classes</a>
+ * @see <a href="{@docRoot}/../specs/serialization/input.html">
+ *     Object Serialization Specification, Section 3, Object Input Classes</a>
  * @since   1.1
  */
 public class ObjectInputStream
--- a/jdk/src/java.base/share/classes/java/io/ObjectOutputStream.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/ObjectOutputStream.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -156,7 +156,8 @@
  * @see java.io.ObjectInputStream
  * @see java.io.Serializable
  * @see java.io.Externalizable
- * @see <a href="../../../platform/serialization/spec/output.html">Object Serialization Specification, Section 2, Object Output Classes</a>
+ * @see <a href="{@docRoot}/../specs/serialization/output.html">
+ *     Object Serialization Specification, Section 2, Object Output Classes</a>
  * @since       1.1
  */
 public class ObjectOutputStream
--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -62,13 +62,14 @@
  * loaded in this Java VM can be found/created using the lookup method.
  *
  * <p>The algorithm to compute the SerialVersionUID is described in
- * <a href="../../../platform/serialization/spec/class.html#4100">Object
- * Serialization Specification, Section 4.6, Stream Unique Identifiers</a>.
+ * <a href="{@docRoot}/../specs/serialization/class.html#stream-unique-identifiers">
+ *     Object Serialization Specification, Section 4.6, Stream Unique Identifiers</a>.
  *
  * @author      Mike Warres
  * @author      Roger Riggs
  * @see ObjectStreamField
- * @see <a href="../../../platform/serialization/spec/class.html">Object Serialization Specification, Section 4, Class Descriptors</a>
+ * @see <a href="{@docRoot}/../specs/serialization/class.html">
+ *     Object Serialization Specification, Section 4, Class Descriptors</a>
  * @since   1.1
  */
 public class ObjectStreamClass implements Serializable {
--- a/jdk/src/java.base/share/classes/java/io/RandomAccessFile.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/RandomAccessFile.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -136,8 +136,12 @@
      * in which the file is to be opened.  The permitted values and their
      * meanings are:
      *
-     * <table summary="Access mode permitted values and meanings">
+     * <table class="striped">
+     * <caption style="display:none">Access mode permitted values and meanings</caption>
+     * <thead>
      * <tr><th style="text-align:left">Value</th><th style="text-align:left">Meaning</th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td style="vertical-align:top">{@code "r"}</td>
      *     <td> Open for reading only. Invoking any of the {@code write}
      *     methods of the resulting object will cause an
@@ -153,6 +157,7 @@
      *     <td> Open for reading and writing, as with {@code "rw"}, and also
      *     require that every update to the file's content be written
      *     synchronously to the underlying storage device.</td></tr>
+     * </tbody>
      * </table>
      *
      * The {@code "rws"} and {@code "rwd"} modes work much like the {@link
--- a/jdk/src/java.base/share/classes/java/io/SerializablePermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/SerializablePermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,12 +44,16 @@
  * and for each provides a description of what the permission allows
  * and a discussion of the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5 summary="Permission target name, what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  *
  * <tr>
  *   <td>enableSubclassImplementation</td>
@@ -79,7 +83,7 @@
  *   <td>Code could remove a configured filter and remove protections
  *       already established.</td>
  * </tr>
- *
+ * </tbody>
  * </table>
  *
  * @see java.security.BasicPermission
--- a/jdk/src/java.base/share/classes/java/io/package-info.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/io/package-info.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,7 +33,8 @@
  *
  * <h2>Package Specification</h2>
  * <ul>
- *   <li><a href="../../../platform/serialization/spec/serialTOC.html"> Java Object Serialization Specification </a>
+ *   <li><a href="{@docRoot}/../specs/serialization/index.html">
+ *       Java Object Serialization Specification </a>
  * </ul>
  *
  * <h2>Related Documentation</h2>
@@ -41,7 +42,8 @@
  * For overviews, tutorials, examples, guides, and tool documentation,
  * please see:
  * <ul>
- *   <li><a href="../../../technotes/guides/serialization">Serialization Enhancements</a>
+ *     <li>{@extLink serialver_tool_reference The serialver tool}</li>
+ *     <li>{@extLink serialization_guide Serialization Documentation}</li>
  * </ul>
  *
  * @since 1.0
--- a/jdk/src/java.base/share/classes/java/lang/CharSequence.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/CharSequence.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -123,7 +123,7 @@
      *
      * <p>The stream binds to this sequence when the terminal stream operation
      * commences (specifically, for mutable sequences the spliterator for the
-     * stream is <a href="../Spliterator.html#binding"><em>late-binding</em></a>).
+     * stream is <a href="../util/Spliterator.html#binding"><em>late-binding</em></a>).
      * If the sequence is modified during that operation then the result is
      * undefined.
      *
@@ -173,7 +173,7 @@
      *
      * <p>The stream binds to this sequence when the terminal stream operation
      * commences (specifically, for mutable sequences the spliterator for the
-     * stream is <a href="../Spliterator.html#binding"><em>late-binding</em></a>).
+     * stream is <a href="../util/Spliterator.html#binding"><em>late-binding</em></a>).
      * If the sequence is modified during that operation then the result is
      * undefined.
      *
--- a/jdk/src/java.base/share/classes/java/lang/Character.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Character.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -9566,7 +9566,9 @@
      * Determines if the specified character is ISO-LATIN-1 white space.
      * This method returns {@code true} for the following five
      * characters only:
-     * <table summary="truechars">
+     * <table class="borderless">
+     * <caption style="display:none">truechars</caption>
+     * <tbody>
      * <tr><td>{@code '\t'}</td>            <td>{@code U+0009}</td>
      *     <td>{@code HORIZONTAL TABULATION}</td></tr>
      * <tr><td>{@code '\n'}</td>            <td>{@code U+000A}</td>
@@ -9577,6 +9579,7 @@
      *     <td>{@code CARRIAGE RETURN}</td></tr>
      * <tr><td>{@code ' '}</td>  <td>{@code U+0020}</td>
      *     <td>{@code SPACE}</td></tr>
+     * </tbody>
      * </table>
      *
      * @param      ch   the character to be tested.
--- a/jdk/src/java.base/share/classes/java/lang/Class.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Class.java	Wed Jul 05 23:30:30 2017 +0200
@@ -724,18 +724,23 @@
      * one or more '{@code [}' characters representing the depth of the array
      * nesting.  The encoding of element type names is as follows:
      *
-     * <blockquote><table summary="Element types and encodings">
-     * <tr><th> Element Type <th> &nbsp;&nbsp;&nbsp; <th> Encoding
-     * <tr><td> boolean      <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> Z
-     * <tr><td> byte         <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> B
-     * <tr><td> char         <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> C
+     * <blockquote><table class="borderless">
+     * <caption style="display:none">Element types and encodings</caption>
+     * <thead>
+     * <tr><th style="padding-right:3em;"> Element Type <th> Encoding
+     * </thead>
+     * <tbody>
+     * <tr><td> boolean      <td style="text-align:center"> Z
+     * <tr><td> byte         <td style="text-align:center"> B
+     * <tr><td> char         <td style="text-align:center"> C
      * <tr><td> class or interface
-     *                       <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> L<i>classname</i>;
-     * <tr><td> double       <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> D
-     * <tr><td> float        <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> F
-     * <tr><td> int          <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> I
-     * <tr><td> long         <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> J
-     * <tr><td> short        <td> &nbsp;&nbsp;&nbsp; <td style="text-align:center"> S
+     *                       <td style="text-align:center"> L<i>classname</i>;
+     * <tr><td> double       <td style="text-align:center"> D
+     * <tr><td> float        <td style="text-align:center"> F
+     * <tr><td> int          <td style="text-align:center"> I
+     * <tr><td> long         <td style="text-align:center"> J
+     * <tr><td> short        <td style="text-align:center"> S
+     * </tbody>
      * </table></blockquote>
      *
      * <p> The class or interface name <i>classname</i> is the binary name of
--- a/jdk/src/java.base/share/classes/java/lang/Double.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Double.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -255,9 +255,12 @@
      *
      * </ul>
      *
-     * <table border>
+     * <table class="plain">
      * <caption>Examples</caption>
+     * <thead>
      * <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
+     * </thead>
+     * <tbody>
      * <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
      * <tr><td>{@code -1.0}</td>        <td>{@code -0x1.0p0}</td>
      * <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
@@ -272,6 +275,7 @@
      *     <td>{@code 0x0.fffffffffffffp-1022}</td>
      * <tr><td>{@code Double.MIN_VALUE}</td>
      *     <td>{@code 0x0.0000000000001p-1022}</td>
+     * </tbody>
      * </table>
      * @param   d   the {@code double} to be converted.
      * @return a hex string representation of the argument.
--- a/jdk/src/java.base/share/classes/java/lang/Float.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Float.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -256,9 +256,12 @@
      *
      * </ul>
      *
-     * <table border>
+     * <table class="plain">
      * <caption>Examples</caption>
+     * <thead>
      * <tr><th>Floating-point Value</th><th>Hexadecimal String</th>
+     * </thead>
+     * <tbody>
      * <tr><td>{@code 1.0}</td> <td>{@code 0x1.0p0}</td>
      * <tr><td>{@code -1.0}</td>        <td>{@code -0x1.0p0}</td>
      * <tr><td>{@code 2.0}</td> <td>{@code 0x1.0p1}</td>
@@ -273,6 +276,7 @@
      *     <td>{@code 0x0.fffffep-126}</td>
      * <tr><td>{@code Float.MIN_VALUE}</td>
      *     <td>{@code 0x0.000002p-126}</td>
+     * </tbody>
      * </table>
      * @param   f   the {@code float} to be converted.
      * @return a hex string representation of the argument.
--- a/jdk/src/java.base/share/classes/java/lang/Iterable.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Iterable.java	Wed Jul 05 23:30:30 2017 +0200
@@ -31,16 +31,13 @@
 import java.util.function.Consumer;
 
 /**
- * Implementing this interface allows an object to be the target of
- * the "for-each loop" statement. See
- * <strong>
- * <a href="{@docRoot}/../technotes/guides/language/foreach.html">For-each Loop</a>
- * </strong>
+ * Implementing this interface allows an object to be the target of the enhanced
+ * {@code for} statement (sometimes called the "for-each loop" statement).
  *
  * @param <T> the type of elements returned by the iterator
  *
  * @since 1.5
- * @jls 14.14.2 The enhanced for statement
+ * @jls 14.14.2 The enhanced {@code for} statement
  */
 public interface Iterable<T> {
     /**
--- a/jdk/src/java.base/share/classes/java/lang/ModuleLayer.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/ModuleLayer.java	Wed Jul 05 23:30:30 2017 +0200
@@ -84,7 +84,7 @@
  * started. The boot layer contains module {@code java.base} and is the only
  * layer in the Java virtual machine with a module named "{@code java.base}".
  * The modules in the boot layer are mapped to the bootstrap class loader and
- * other class loaders that are <a href="../ClassLoader.html#builtinLoaders">
+ * other class loaders that are <a href="ClassLoader.html#builtinLoaders">
  * built-in</a> into the Java virtual machine. The boot layer will often be
  * the {@link #parents() parent} when creating additional layers. </p>
  *
--- a/jdk/src/java.base/share/classes/java/lang/RuntimePermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/RuntimePermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -43,13 +43,17 @@
  * target names, and for each provides a description of what the permission
  * allows and a discussion of the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5 summary="permission target name,
- *  what the target allows,and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">permission target name,
+ *  what the target allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  *
  * <tr>
  *   <td>createClassLoader</td>
@@ -383,6 +387,7 @@
  *   {@linkplain ModuleFinder#ofSystem system modules} in the runtime image.</td>
  * </tr>
  *
+ * </tbody>
  * </table>
  *
  * @implNote
--- a/jdk/src/java.base/share/classes/java/lang/String.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/String.java	Wed Jul 05 23:30:30 2017 +0200
@@ -203,7 +203,7 @@
      * Class String is special cased within the Serialization Stream Protocol.
      *
      * A String instance is written into an ObjectOutputStream according to
-     * <a href="{@docRoot}/../platform/serialization/spec/output.html">
+     * <a href="{@docRoot}/../specs/serialization/protocol.html#stream-elements">
      * Object Serialization Specification, Section 6.2, "Stream Elements"</a>
      */
     private static final ObjectStreamField[] serialPersistentFields =
@@ -335,7 +335,7 @@
      * subarray.
      *
      * <p> Each {@code byte} in the subarray is converted to a {@code char} as
-     * specified in the method above.
+     * specified in the {@link #String(byte[],int) String(byte[],int)} constructor.
      *
      * @deprecated This method does not properly convert bytes into characters.
      * As of JDK&nbsp;1.1, the preferred way to do this is via the
@@ -390,7 +390,7 @@
 
     /**
      * Allocates a new {@code String} containing characters constructed from
-     * an array of 8-bit integer values. Each character <i>c</i>in the
+     * an array of 8-bit integer values. Each character <i>c</i> in the
      * resulting string is constructed from the corresponding component
      * <i>b</i> in the byte array such that:
      *
@@ -2203,12 +2203,16 @@
      * <p> The string {@code "boo:and:foo"}, for example, yields the
      * following results with these parameters:
      *
-     * <blockquote><table cellpadding=1 cellspacing=0 summary="Split example showing regex, limit, and result">
+     * <blockquote><table class="plain">
+     * <caption style="display:none">Split example showing regex, limit, and result</caption>
+     * <thead>
      * <tr>
      *     <th>Regex</th>
      *     <th>Limit</th>
      *     <th>Result</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr><td style="text-align:center">:</td>
      *     <td style="text-align:center">2</td>
      *     <td>{@code { "boo", "and:foo" }}</td></tr>
@@ -2227,6 +2231,7 @@
      * <tr><td style="text-align:center">o</td>
      *     <td style="text-align:center">0</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
+     * </tbody>
      * </table></blockquote>
      *
      * <p> An invocation of this method of the form
@@ -2326,15 +2331,20 @@
      * <p> The string {@code "boo:and:foo"}, for example, yields the following
      * results with these expressions:
      *
-     * <blockquote><table cellpadding=1 cellspacing=0 summary="Split examples showing regex and result">
+     * <blockquote><table class="plain">
+     * <caption style="display:none">Split examples showing regex and result</caption>
+     * <thead>
      * <tr>
      *  <th>Regex</th>
      *  <th>Result</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr><td style="text-align:center">:</td>
      *     <td>{@code { "boo", "and", "foo" }}</td></tr>
      * <tr><td style="text-align:center">o</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
+     * </tbody>
      * </table></blockquote>
      *
      *
@@ -2445,13 +2455,17 @@
      * {@code String} may be a different length than the original {@code String}.
      * <p>
      * Examples of lowercase  mappings are in the following table:
-     * <table border="1" summary="Lowercase mapping examples showing language code of locale, upper case, lower case, and description">
+     * <table class="plain">
+     * <caption style="display:none">Lowercase mapping examples showing language code of locale, upper case, lower case, and description</caption>
+     * <thead>
      * <tr>
      *   <th>Language Code of Locale</th>
      *   <th>Upper Case</th>
      *   <th>Lower Case</th>
      *   <th>Description</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td>tr (Turkish)</td>
      *   <td>&#92;u0130</td>
@@ -2480,6 +2494,7 @@
      *       <img src="doc-files/sigma1.gif" alt="sigma"></td>
      *   <td>lowercased all chars in String</td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * @param locale use the case transformation rules for this locale
@@ -2526,13 +2541,17 @@
      * <p>
      * Examples of locale-sensitive and 1:M case mappings are in the following table.
      *
-     * <table border="1" summary="Examples of locale-sensitive and 1:M case mappings. Shows Language code of locale, lower case, upper case, and description.">
+     * <table class="plain">
+     * <caption style="display:none">Examples of locale-sensitive and 1:M case mappings. Shows Language code of locale, lower case, upper case, and description.</caption>
+     * <thead>
      * <tr>
      *   <th>Language Code of Locale</th>
      *   <th>Lower Case</th>
      *   <th>Upper Case</th>
      *   <th>Description</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td>tr (Turkish)</td>
      *   <td>&#92;u0069</td>
@@ -2557,6 +2576,7 @@
      *   <td>FAHRVERGN&Uuml;GEN</td>
      *   <td></td>
      * </tr>
+     * </tbody>
      * </table>
      * @param locale use the case transformation rules for this locale
      * @return the {@code String}, converted to uppercase.
--- a/jdk/src/java.base/share/classes/java/lang/System.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/System.java	Wed Jul 05 23:30:30 2017 +0200
@@ -577,9 +577,13 @@
      * system properties, a set of system properties is first created and
      * initialized. This set of system properties always includes values
      * for the following keys:
-     * <table summary="Shows property keys and associated values">
+     * <table class="striped">
+     * <caption style="display:none">Shows property keys and associated values</caption>
+     * <thead>
      * <tr><th>Key</th>
      *     <th>Description of Associated Value</th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td><code>java.version</code></td>
      *     <td>Java Runtime Environment version which may be interpreted
      *     as a {@link Runtime.Version}</td></tr>
@@ -638,6 +642,7 @@
      *     <td>User's home directory</td></tr>
      * <tr><td><code>user.dir</code></td>
      *     <td>User's current working directory</td></tr>
+     * </tbody>
      * </table>
      * <p>
      * Multiple paths in a system property value are separated by the path
@@ -649,9 +654,13 @@
      *
      * @implNote In addition to the standard system properties, the system
      * properties may include the following keys:
-     * <table summary="Shows property keys and associated values">
+     * <table class="striped">
+     * <caption style="display:none">Shows property keys and associated values</caption>
+     * <thead>
      * <tr><th>Key</th>
      *     <th>Description of Associated Value</th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td>{@code jdk.module.path}</td>
      *     <td>The application module path</td></tr>
      * <tr><td>{@code jdk.module.upgrade.path}</td>
@@ -660,6 +669,7 @@
      *     <td>The module name of the initial/main module</td></tr>
      * <tr><td>{@code jdk.module.main.class}</td>
      *     <td>The main class name of the initial module</td></tr>
+     * </tbody>
      * </table>
      *
      * @return     the system properties
--- a/jdk/src/java.base/share/classes/java/lang/invoke/LambdaMetafactory.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/LambdaMetafactory.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -149,8 +149,12 @@
  * capture argument (corresponding to the receiver) must be non-null.
  *
  * <p>A type Q is considered adaptable to S as follows:
- * <table summary="adaptable types">
+ * <table class="borderless">
+ *   <caption style="display:none">adaptable types</caption>
+ *   <thead>
  *     <tr><th>Q</th><th>S</th><th>Link-time checks</th><th>Invocation-time checks</th></tr>
+ *   </thead>
+ *   <tbody>
  *     <tr>
  *         <td>Primitive</td><td>Primitive</td>
  *         <td>Q can be converted to S via a primitive widening conversion</td>
@@ -176,6 +180,7 @@
  *         <br>for return types: none</td>
  *         <td>Cast from Q to S</td>
  *     </tr>
+ *   </tbody>
  * </table>
  *
  * @apiNote These linkage methods are designed to support the evaluation
@@ -213,7 +218,9 @@
  * methods.
  * @since 1.8
  */
-public class LambdaMetafactory {
+public final class LambdaMetafactory {
+
+    private LambdaMetafactory() {}
 
     /** Flag for alternate metafactories indicating the lambda object
      * must be serializable */
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -81,8 +81,12 @@
  * The <a href="MethodHandles.Lookup.html#lookups">Lookup Factory Methods</a>
  * correspond to all major use cases for methods, constructors, and fields.
  * These use cases may be distinguished using small integers as follows:
- * <table border=1 cellpadding=5 summary="reference kinds">
+ * <table class="striped">
+ * <caption style="display:none">reference kinds</caption>
+ * <thead>
  * <tr><th>reference kind</th><th>descriptive name</th><th>scope</th><th>member</th><th>behavior</th></tr>
+ * </thead>
+ * <tbody>
  * <tr>
  *     <td>{@code 1}</td><td>{@code REF_getField}</td><td>{@code class}</td>
  *     <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
@@ -119,6 +123,7 @@
  *     <td>{@code 9}</td><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
  *     <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
  * </tr>
+ * </tbody>
  * </table>
  * @since 1.8
  */
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java	Wed Jul 05 23:30:30 2017 +0200
@@ -278,12 +278,16 @@
      * (Bytecode behaviors are described in section 5.4.3.5 of the Java Virtual Machine Specification.)
      * Here is a summary of the correspondence between these factory methods and
      * the behavior of the resulting method handles:
-     * <table border=1 cellpadding=5 summary="lookup method behaviors">
+     * <table class="striped">
+     * <caption style="display:none">lookup method behaviors</caption>
+     * <thead>
      * <tr>
      *     <th><a id="equiv"></a>lookup expression</th>
      *     <th>member</th>
      *     <th>bytecode behavior</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</td>
      *     <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
@@ -340,6 +344,7 @@
      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</td>
      *     <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * Here, the type {@code C} is the class or interface being searched for a member,
@@ -1670,8 +1675,8 @@
          * to the lookup class.
          * (Unlike {@code bind}, {@code bindTo} does not preserve variable arity.
          * Also, {@code bindTo} may throw a {@code ClassCastException} in instances where {@code bind} would
-         * throw a {@code IllegalAccessException}, as in the case where the member is {@code protected} and
-         * the receiver is restricted by {@code findVirtual} to the lookup class)
+         * throw an {@code IllegalAccessException}, as in the case where the member is {@code protected} and
+         * the receiver is restricted by {@code findVirtual} to the lookup class.)
          * @param receiver the object from which the method is accessed
          * @param name the name of the method
          * @param type the type of the method, with the receiver argument omitted
--- a/jdk/src/java.base/share/classes/java/lang/reflect/AnnotatedElement.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/AnnotatedElement.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -105,10 +105,13 @@
  * <p>The table below summarizes which kind of annotation presence
  * different methods in this interface examine.
  *
- * <table border>
+ * <table class="plain">
  * <caption>Overview of kind of presence detected by different AnnotatedElement methods</caption>
+ * <thead>
  * <tr><th colspan=2></th><th colspan=4>Kind of Presence</th>
  * <tr><th colspan=2>Method</th><th>Directly Present</th><th>Indirectly Present</th><th>Present</th><th>Associated</th>
+ * </thead>
+ * <tbody>
  * <tr><td style="text-align:right">{@code T}</td><td>{@link #getAnnotation(Class) getAnnotation(Class&lt;T&gt;)}
  * <td></td><td></td><td>X</td><td></td>
  * </tr>
@@ -127,6 +130,7 @@
  * <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class&lt;T&gt;)}
  * <td>X</td><td>X</td><td></td><td></td>
  * </tr>
+ * </tbody>
  * </table>
  *
  * <p>For an invocation of {@code get[Declared]AnnotationsByType( Class <
--- a/jdk/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/ReflectPermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,12 +32,16 @@
  * provides a summary description of what the permission allows,
  * and discusses the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5 summary="Table shows permission target name, what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  *
  * <tr>
  *   <td>suppressAccessChecks</td>
@@ -58,6 +62,7 @@
  *       help in its attempt to compromise security in the system.</td>
  * </tr>
  *
+ * </tbody>
  * </table>
  *
  * @see java.security.Permission
--- a/jdk/src/java.base/share/classes/java/math/BigDecimal.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/math/BigDecimal.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -120,15 +120,19 @@
  * preferred scale for representing a result.  The preferred
  * scale for each operation is listed in the table below.
  *
- * <table border>
+ * <table class="plain">
  * <caption><b>Preferred Scales for Results of Arithmetic Operations
  * </b></caption>
+ * <thead>
  * <tr><th>Operation</th><th>Preferred Scale of Result</th></tr>
+ * </thead>
+ * <tbody>
  * <tr><td>Add</td><td>max(addend.scale(), augend.scale())</td>
  * <tr><td>Subtract</td><td>max(minuend.scale(), subtrahend.scale())</td>
  * <tr><td>Multiply</td><td>multiplier.scale() + multiplicand.scale()</td>
  * <tr><td>Divide</td><td>dividend.scale() - divisor.scale()</td>
  * <tr><td>Square root</td><td>radicand.scale()/2</td>
+ * </tbody>
  * </table>
  *
  * These scales are the ones used by the methods which return exact
--- a/jdk/src/java.base/share/classes/java/math/RoundingMode.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/math/RoundingMode.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,8 +51,9 @@
  * proper {@code MathContext}.  A summary table showing the results
  * of these rounding operations for all rounding modes appears below.
  *
- *<table border>
+ *<table class="plain">
  * <caption><b>Summary of Rounding Operations Under Different Rounding Modes</b></caption>
+ * <thead>
  * <tr><th></th><th colspan=8>Result of rounding input to one digit with the given
  *                           rounding mode</th>
  * <tr style="vertical-align:top">
@@ -64,6 +65,8 @@
  *                                                                                                   <th>{@code HALF_DOWN}</th>
  *                                                                                                                    <th>{@code HALF_EVEN}</th>
  *                                                                                                                                     <th>{@code UNNECESSARY}</th>
+ * </thead>
+ * <tbody>
  *
  * <tr style="text-align:right"><td>5.5</td>  <td>6</td>  <td>5</td>    <td>6</td>    <td>5</td>  <td>6</td>      <td>5</td>       <td>6</td>       <td>throw {@code ArithmeticException}</td>
  * <tr style="text-align:right"><td>2.5</td>  <td>3</td>  <td>2</td>    <td>3</td>    <td>2</td>  <td>3</td>      <td>2</td>       <td>2</td>       <td>throw {@code ArithmeticException}</td>
@@ -75,7 +78,8 @@
  * <tr style="text-align:right"><td>-1.6</td> <td>-2</td> <td>-1</td>   <td>-1</td>   <td>-2</td> <td>-2</td>     <td>-2</td>      <td>-2</td>      <td>throw {@code ArithmeticException}</td>
  * <tr style="text-align:right"><td>-2.5</td> <td>-3</td> <td>-2</td>   <td>-2</td>   <td>-3</td> <td>-3</td>     <td>-2</td>      <td>-2</td>      <td>throw {@code ArithmeticException}</td>
  * <tr style="text-align:right"><td>-5.5</td> <td>-6</td> <td>-5</td>   <td>-5</td>   <td>-6</td> <td>-6</td>     <td>-5</td>      <td>-6</td>      <td>throw {@code ArithmeticException}</td>
- *</table>
+ * </tbody>
+ * </table>
  *
  *
  * <p>This {@code enum} is intended to replace the integer-based
@@ -100,10 +104,13 @@
          * value.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode UP Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code UP} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>6</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>3</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>2</td>
@@ -114,6 +121,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
+         *</tbody>
          *</table>
          */
     UP(BigDecimal.ROUND_UP),
@@ -124,10 +132,13 @@
          * rounding mode never increases the magnitude of the calculated value.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode DOWN Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code DOWN} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>5</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>2</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>1</td>
@@ -138,6 +149,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-1</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
+         *</tbody>
          *</table>
          */
     DOWN(BigDecimal.ROUND_DOWN),
@@ -149,10 +161,13 @@
          * that this rounding mode never decreases the calculated value.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode CEILING Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code CEILING} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>6</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>3</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>2</td>
@@ -163,6 +178,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-1</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
+         *</tbody>
          *</table>
          */
     CEILING(BigDecimal.ROUND_CEILING),
@@ -174,10 +190,13 @@
          * this rounding mode never increases the calculated value.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode FLOOR Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code FLOOR} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>5</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>2</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>1</td>
@@ -188,6 +207,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
+         *</tbody>
          *</table>
          */
     FLOOR(BigDecimal.ROUND_FLOOR),
@@ -201,10 +221,13 @@
          * mode commonly taught at school.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode HALF_UP Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code HALF_UP} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>6</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>3</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>2</td>
@@ -215,6 +238,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-3</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
+         *</tbody>
          *</table>
          */
     HALF_UP(BigDecimal.ROUND_HALF_UP),
@@ -227,10 +251,13 @@
          * {@code RoundingMode.DOWN}.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode HALF_DOWN Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code HALF_DOWN} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>5</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>2</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>2</td>
@@ -241,6 +268,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-5</td>
+         *</tbody>
          *</table>
          */
     HALF_DOWN(BigDecimal.ROUND_HALF_DOWN),
@@ -260,10 +288,13 @@
          * arithmetic in Java.
          *
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode HALF_EVEN Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code HALF_EVEN} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>6</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>2</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>2</td>
@@ -274,6 +305,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>-2</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>-2</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>-6</td>
+         *</tbody>
          *</table>
          */
     HALF_EVEN(BigDecimal.ROUND_HALF_EVEN),
@@ -284,10 +316,13 @@
          * specified on an operation that yields an inexact result, an
          * {@code ArithmeticException} is thrown.
          *<p>Example:
-         *<table border>
+         *<table class="plain">
          * <caption><b>Rounding mode UNNECESSARY Examples</b></caption>
+         *<thead>
          *<tr style="vertical-align:top"><th>Input Number</th>
          *    <th>Input rounded to one digit<br> with {@code UNNECESSARY} rounding
+         *</thead>
+         *<tbody>
          *<tr style="text-align:right"><td>5.5</td>  <td>throw {@code ArithmeticException}</td>
          *<tr style="text-align:right"><td>2.5</td>  <td>throw {@code ArithmeticException}</td>
          *<tr style="text-align:right"><td>1.6</td>  <td>throw {@code ArithmeticException}</td>
@@ -298,6 +333,7 @@
          *<tr style="text-align:right"><td>-1.6</td> <td>throw {@code ArithmeticException}</td>
          *<tr style="text-align:right"><td>-2.5</td> <td>throw {@code ArithmeticException}</td>
          *<tr style="text-align:right"><td>-5.5</td> <td>throw {@code ArithmeticException}</td>
+         *</tbody>
          *</table>
          */
     UNNECESSARY(BigDecimal.ROUND_UNNECESSARY);
--- a/jdk/src/java.base/share/classes/java/net/Inet4Address.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/Inet4Address.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,12 +41,12 @@
  * Textual representation of IPv4 address used as input to methods
  * takes one of the following forms:
  *
- * <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- * <tr><td>{@code d.d.d.d}</td></tr>
- * <tr><td>{@code d.d.d}</td></tr>
- * <tr><td>{@code d.d}</td></tr>
- * <tr><td>{@code d}</td></tr>
- * </table></blockquote>
+ * <blockquote><ul style="list-style-type:none">
+ * <li>{@code d.d.d.d}</li>
+ * <li>{@code d.d.d}</li>
+ * <li>{@code d.d}</li>
+ * <li>{@code d}</li>
+ * </ul></blockquote>
  *
  * <p> When four parts are specified, each is interpreted as a byte of
  * data and assigned, from left to right, to the four bytes of an IPv4
--- a/jdk/src/java.base/share/classes/java/net/Inet6Address.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/Inet6Address.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -49,9 +49,9 @@
  *   the hexadecimal values of the eight 16-bit pieces of the
  *   address. This is the full form.  For example,
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code 1080:0:0:0:8:800:200C:417A}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code 1080:0:0:0:8:800:200C:417A}</li>
+ *   </ul></blockquote>
  *
  *   <p> Note that it is not necessary to write the leading zeros in
  *   an individual field. However, there must be at least one numeral
@@ -66,9 +66,9 @@
  *   The "::" can also be used to compress the leading and/or trailing
  *   zeros in an address. For example,
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code 1080::8:800:200C:417A}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code 1080::8:800:200C:417A}</li>
+ *   </ul></blockquote>
  *
  *   <li><p> An alternative form that is sometimes more convenient
  *   when dealing with a mixed environment of IPv4 and IPv6 nodes is
@@ -77,35 +77,35 @@
  *   are the decimal values of the four low-order 8-bit pieces of the
  *   standard IPv4 representation address, for example,
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code ::FFFF:129.144.52.38}<td></tr>
- *   <tr><td>{@code ::129.144.52.38}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code ::FFFF:129.144.52.38}</li>
+ *   <li>{@code ::129.144.52.38}</li>
+ *   </ul></blockquote>
  *
  *   <p> where "::FFFF:d.d.d.d" and "::d.d.d.d" are, respectively, the
  *   general forms of an IPv4-mapped IPv6 address and an
  *   IPv4-compatible IPv6 address. Note that the IPv4 portion must be
  *   in the "d.d.d.d" form. The following forms are invalid:
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code ::FFFF:d.d.d}<td></tr>
- *   <tr><td>{@code ::FFFF:d.d}<td></tr>
- *   <tr><td>{@code ::d.d.d}<td></tr>
- *   <tr><td>{@code ::d.d}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code ::FFFF:d.d.d}</li>
+ *   <li>{@code ::FFFF:d.d}</li>
+ *   <li>{@code ::d.d.d}</li>
+ *   <li>{@code ::d.d}</li>
+ *   </ul></blockquote>
  *
  *   <p> The following form:
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code ::FFFF:d}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code ::FFFF:d}</li>
+ *   </ul></blockquote>
  *
  *   <p> is valid, however it is an unconventional representation of
  *   the IPv4-compatible IPv6 address,
  *
- *   <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- *   <tr><td>{@code ::255.255.0.d}<td></tr>
- *   </table></blockquote>
+ *   <blockquote><ul style="list-style-type:none">
+ *   <li>{@code ::255.255.0.d}</li>
+ *   </ul></blockquote>
  *
  *   <p> while "::d" corresponds to the general IPv6 address
  *   "0:0:0:0:0:0:0:d".</li>
@@ -119,9 +119,10 @@
  * <h4> Special IPv6 address </h4>
  *
  * <blockquote>
- * <table cellspacing=2 summary="Description of IPv4-mapped address">
- * <tr><th valign=top><i>IPv4-mapped address</i></th>
- *         <td>Of the form::ffff:w.x.y.z, this IPv6 address is used to
+ * <table class="borderless">
+ * <caption style="display:none">Description of IPv4-mapped address</caption>
+ * <tr><th style="vertical-align:top; padding-right:2px"><i>IPv4-mapped address</i></th>
+ *         <td>Of the form ::ffff:w.x.y.z, this IPv6 address is used to
  *         represent an IPv4 address. It allows the native program to
  *         use the same address data structure and also the same
  *         socket when communicating with both IPv4 and IPv6 nodes.
--- a/jdk/src/java.base/share/classes/java/net/InetAddress.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/InetAddress.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -72,7 +72,9 @@
  *
  * <h3> Address types </h3>
  *
- * <blockquote><table cellspacing=2 summary="Description of unicast and multicast address types">
+ * <blockquote><table class="borderless">
+ *   <caption style="display:none">Description of unicast and multicast address types</caption>
+ *   <tbody>
  *   <tr><th valign=top><i>unicast</i></th>
  *       <td>An identifier for a single interface. A packet sent to
  *         a unicast address is delivered to the interface identified by
@@ -96,6 +98,7 @@
  *       <td>An identifier for a set of interfaces (typically belonging
  *         to different nodes). A packet sent to a multicast address is
  *         delivered to all interfaces identified by that address.</td></tr>
+ * </tbody>
  * </table></blockquote>
  *
  * <h4> IP address scope </h4>
--- a/jdk/src/java.base/share/classes/java/net/NetPermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/NetPermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,12 +47,16 @@
  * and for each provides a description of what the permission allows
  * and a discussion of the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5 summary="Permission target name, what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  * <tr>
  *   <td>allowHttpTrace</td>
  *   <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
@@ -151,6 +155,7 @@
  *   creating a ProtectionDomain/CodeSource for a class even though
  *   that class really didn't come from that location.</td>
  * </tr>
+   </tbody>
  * </table>
  *
  * @see java.security.BasicPermission
--- a/jdk/src/java.base/share/classes/java/net/URI.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/URI.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,11 +83,11 @@
  * not begin with a slash character ({@code '/'}).  Opaque URIs are not
  * subject to further parsing.  Some examples of opaque URIs are:
  *
- * <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
- * <tr><td>{@code mailto:java-net@java.sun.com}<td></tr>
- * <tr><td>{@code news:comp.lang.java}<td></tr>
- * <tr><td>{@code urn:isbn:096139210x}</td></tr>
- * </table></blockquote>
+ * <blockquote><ul style="list-style-type:none">
+ * <li>{@code mailto:java-net@java.sun.com}</li>
+ * <li>{@code news:comp.lang.java}</li>
+ * <li>{@code urn:isbn:096139210x}</li>
+ * </ul></blockquote>
  *
  * <p> A <i>hierarchical</i> URI is either an absolute URI whose
  * scheme-specific part begins with a slash character, or a relative URI, that
@@ -132,8 +132,12 @@
  *
  * <p> All told, then, a URI instance has the following nine components:
  *
- * <blockquote><table summary="Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment">
+ * <blockquote><table class="borderless">
+ * <caption style="display:none">Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment</caption>
+ * <thead>
  * <tr><th><i>Component</i></th><th><i>Type</i></th></tr>
+ * </thead>
+ * <tbody>
  * <tr><td>scheme</td><td>{@code String}</td></tr>
  * <tr><td>scheme-specific-part&nbsp;&nbsp;&nbsp;&nbsp;</td><td>{@code String}</td></tr>
  * <tr><td>authority</td><td>{@code String}</td></tr>
@@ -143,6 +147,7 @@
  * <tr><td>path</td><td>{@code String}</td></tr>
  * <tr><td>query</td><td>{@code String}</td></tr>
  * <tr><td>fragment</td><td>{@code String}</td></tr>
+ * </tbody>
  * </table></blockquote>
  *
  * In a given instance any particular component is either <i>undefined</i> or
@@ -248,7 +253,9 @@
  * which are taken from that specification, are used below to describe these
  * constraints:
  *
- * <blockquote><table cellspacing=2 summary="Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other">
+ * <blockquote><table>
+ * <caption style="display:none">Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other</caption>
+ *   <tbody>
  *   <tr><th valign=top><i>alpha</i></th>
  *       <td>The US-ASCII alphabetic characters,
  *        {@code 'A'}&nbsp;through&nbsp;{@code 'Z'}
@@ -279,6 +286,7 @@
  *           java.lang.Character#isSpaceChar(char) Character.isSpaceChar}
  *           method)&nbsp;&nbsp;<i>(<b>Deviation from RFC 2396</b>, which is
  *           limited to US-ASCII)</i></td></tr>
+ * </tbody>
  * </table></blockquote>
  *
  * <p><a id="legal-chars"></a> The set of all legal URI characters consists of
--- a/jdk/src/java.base/share/classes/java/net/URLConnection.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/URLConnection.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -54,13 +54,18 @@
  * read from and to write to the resource referenced by the URL. In
  * general, creating a connection to a URL is a multistep process:
  *
- * <div style="text-align:center"><table style="margin:0 auto" border=2 summary="Describes the process of creating a connection to a URL: openConnection() and connect() over time.">
+ * <div style="text-align:center"><table class="plain" style="margin:0 auto">
+ * <caption style="display:none">Describes the process of creating a connection to a URL: openConnection() and connect() over time.</caption>
+ * <thead>
  * <tr><th>{@code openConnection()}</th>
  *     <th>{@code connect()}</th></tr>
+ * </thead>
+ * <tbody>
  * <tr><td>Manipulate parameters that affect the connection to the remote
  *         resource.</td>
  *     <td>Interact with the resource; query header fields and
  *         contents.</td></tr>
+ * </tbody>
  * </table>
  * ----------------------------&gt;
  * <br>time</div>
--- a/jdk/src/java.base/share/classes/java/net/URLPermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/net/URLPermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -72,9 +72,12 @@
  * separated by '/' characters. <i>path</i> may also be empty. The path is specified
  * in a similar way to the path in {@link java.io.FilePermission}. There are
  * three different ways as the following examples show:
- * <table border>
+ * <table class="plain">
  * <caption>URL Examples</caption>
+ * <thead>
  * <tr><th>Example url</th><th>Description</th></tr>
+ * </thead>
+ * <tbody>
  * <tr><td style="white-space:nowrap;">http://www.oracle.com/a/b/c.html</td>
  *   <td>A url which identifies a specific (single) resource</td>
  * </tr>
@@ -90,6 +93,7 @@
  *       example).
  *   </td>
  * </tr>
+ * </tbody>
  * </table>
  * <p>
  * The '*' and '-' may only be specified in the final segment of a path and must be
@@ -246,9 +250,12 @@
      * <li>otherwise, return false</li>
      * </ul>
      * <p>Some examples of how paths are matched are shown below:
-     * <table border>
+     * <table class="plain">
      * <caption>Examples of Path Matching</caption>
+     * <thead>
      * <tr><th>this's path</th><th>p's path</th><th>match</th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td>/a/b</td><td>/a/b</td><td>yes</td></tr>
      * <tr><td>/a/b/*</td><td>/a/b/c</td><td>yes</td></tr>
      * <tr><td>/a/b/*</td><td>/a/b/c/d</td><td>no</td></tr>
@@ -256,6 +263,7 @@
      * <tr><td>/a/b/-</td><td>/a/b/c/d/e</td><td>yes</td></tr>
      * <tr><td>/a/b/-</td><td>/a/b/c/*</td><td>yes</td></tr>
      * <tr><td>/a/b/*</td><td>/a/b/c/-</td><td>no</td></tr>
+     * </tbody>
      * </table>
      */
     public boolean implies(Permission p) {
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousChannelGroup.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousChannelGroup.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,11 +60,15 @@
  * default group is not configured then the pooled threads of the default group
  * are {@link Thread#isDaemon daemon} threads.
  *
- * <table border summary="System properties">
+ * <table class="striped">
+ * <caption style="display:none:">System properties</caption>
+ *   <thead>
  *   <tr>
  *     <th>System property</th>
  *     <th>Description</th>
  *   </tr>
+ *   </thead>
+ *   <tbody>
  *   <tr>
  *     <td> {@code java.nio.channels.DefaultThreadPool.threadFactory} </td>
  *     <td> The value of this property is taken to be the fully-qualified name
@@ -86,6 +90,7 @@
  *     unspecified error to be thrown during the construction of the default
  *     group. </td>
  *   </tr>
+ *   </tbody>
  * </table>
  *
  * <a id="threading"></a><h2>Threading</h2>
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousFileChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -133,8 +133,12 @@
      * <p> In addition to {@code READ} and {@code WRITE}, the following options
      * may be present:
      *
-     * <table border=1 cellpadding=5 summary="">
+     * <table class="striped">
+     * <caption style="display:none">additional options</caption>
+     * <thead>
      * <tr> <th>Option</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
      *   <td> When opening an existing file, the file is first truncated to a
@@ -186,6 +190,7 @@
      *   href="../file/package-summary.html#integrity"> Synchronized I/O file
      *   integrity</a>). </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * <p> An implementation may also support additional options.
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousServerSocketChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -52,11 +52,15 @@
  * <p> Socket options are configured using the {@link #setOption(SocketOption,Object)
  * setOption} method. Channels of this type support the following options:
  * <blockquote>
- * <table border summary="Socket options">
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
  *   <tr>
  *     <th>Option Name</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
  *     <td> The size of the socket receive buffer </td>
@@ -65,6 +69,7 @@
  *     <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
  *     <td> Re-use address </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  * Additional (implementation specific) options may also be supported.
--- a/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/AsynchronousSocketChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -62,11 +62,15 @@
  * <p> Socket options are configured using the {@link #setOption(SocketOption,Object)
  * setOption} method. Asynchronous socket channels support the following options:
  * <blockquote>
- * <table border summary="Socket options">
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
  *   <tr>
  *     <th>Option Name</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
  *     <td> The size of the socket send buffer </td>
@@ -87,6 +91,7 @@
  *     <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
  *     <td> Disable the Nagle algorithm </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  * Additional (implementation specific) options may also be supported.
--- a/jdk/src/java.base/share/classes/java/nio/channels/DatagramChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/DatagramChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,11 +57,15 @@
  * setOption} method. A datagram channel to an Internet Protocol socket supports
  * the following options:
  * <blockquote>
- * <table border summary="Socket options">
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
  *   <tr>
  *     <th>Option Name</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
  *     <td> The size of the socket send buffer </td>
@@ -97,6 +101,7 @@
  *       IP_MULTICAST_LOOP} </td>
  *     <td> Loopback for Internet Protocol (IP) multicast datagrams </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  * Additional (implementation specific) options may also be supported.
--- a/jdk/src/java.base/share/classes/java/nio/channels/FileChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/FileChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -174,8 +174,12 @@
      * <p> In the addition to {@code READ} and {@code WRITE}, the following
      * options may be present:
      *
-     * <table border=1 cellpadding=5 summary="">
+     * <table class="striped">
+     * <caption style="display:none">additional options</caption>
+     * <thead>
      * <tr> <th>Option</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link StandardOpenOption#APPEND APPEND} </td>
      *   <td> If this option is present then the file is opened for writing and
@@ -237,6 +241,7 @@
      *   href="../file/package-summary.html#integrity"> Synchronized I/O file
      *   integrity</a>). </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * <p> An implementation may also support additional options.
--- a/jdk/src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/ServerSocketChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,11 +46,15 @@
  * <p> Socket options are configured using the {@link #setOption(SocketOption,Object)
  * setOption} method. Server-socket channels support the following options:
  * <blockquote>
- * <table border summary="Socket options">
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
  *   <tr>
  *     <th>Option Name</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
  *     <td> The size of the socket receive buffer </td>
@@ -59,6 +63,7 @@
  *     <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
  *     <td> Re-use address </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  * Additional (implementation specific) options may also be supported.
--- a/jdk/src/java.base/share/classes/java/nio/channels/SocketChannel.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/channels/SocketChannel.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -66,11 +66,15 @@
  * <p> Socket options are configured using the {@link #setOption(SocketOption,Object)
  * setOption} method. Socket channels support the following options:
  * <blockquote>
- * <table border summary="Socket options">
+ * <table class="striped">
+ * <caption style="display:none">Socket options</caption>
+ * <thead>
  *   <tr>
  *     <th>Option Name</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
  *     <td> The size of the socket send buffer </td>
@@ -96,6 +100,7 @@
  *     <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
  *     <td> Disable the Nagle algorithm </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  * Additional (implementation specific) options may also be supported.
--- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -147,8 +147,12 @@
  * implementation to see if any other charsets are supported.  The behavior
  * of such optional charsets may differ between implementations.
  *
- * <blockquote><table style="width:80%" summary="Description of standard charsets">
+ * <blockquote><table class="striped" style="width:80%">
+ * <caption style="display:none">Description of standard charsets</caption>
+ * <thead>
  * <tr><th style="text-align:left">Charset</th><th style="text-align:left">Description</th></tr>
+ * </thead>
+ * <tbody>
  * <tr><td style="vertical-align:top">{@code US-ASCII}</td>
  *     <td>Seven-bit ASCII, a.k.a. {@code ISO646-US},
  *         a.k.a. the Basic Latin block of the Unicode character set</td></tr>
@@ -165,6 +169,7 @@
  * <tr><td style="vertical-align:top">{@code UTF-16}</td>
  *     <td>Sixteen-bit UCS Transformation Format,
  *         byte&nbsp;order identified by an optional byte-order mark</td></tr>
+ * </tbody>
  * </table></blockquote>
  *
  * <p> The {@code UTF-8} charset is specified by <a
--- a/jdk/src/java.base/share/classes/java/nio/file/FileSystem.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/FileSystem.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -315,7 +315,9 @@
      * that resembles regular expressions but with a simpler syntax. For example:
      *
      * <blockquote>
-     * <table border="0" summary="Pattern Language">
+     * <table class="borderless">
+     * <caption style="display:none">Pattern Language</caption>
+     * <tbody>
      * <tr>
      *   <td>{@code *.java}</td>
      *   <td>Matches a path that represents a file name ending in {@code .java}</td>
@@ -348,7 +350,7 @@
      *   platform (note that the backslash is escaped; as a string literal in the
      *   Java Language the pattern would be <code>"C:&#92;&#92;&#92;&#92;*"</code>) </td>
      * </tr>
-     *
+     * </tbody>
      * </table>
      * </blockquote>
      *
--- a/jdk/src/java.base/share/classes/java/nio/file/Files.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/Files.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -233,8 +233,12 @@
      * <p> In the addition to {@code READ} and {@code WRITE}, the following
      * options may be present:
      *
-     * <table border=1 cellpadding=5 summary="Options">
+     * <table class="striped">
+     * <caption style="display:none">Options</caption>
+     * <thead>
      * <tr> <th>Option</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link StandardOpenOption#APPEND APPEND} </td>
      *   <td> If this option is present then the file is opened for writing and
@@ -294,6 +298,7 @@
      *   href="package-summary.html#integrity"> Synchronized I/O file
      *   integrity</a>). </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * <p> An implementation may also support additional implementation specific
@@ -1188,8 +1193,12 @@
      *
      * <p> The {@code options} parameter may include any of the following:
      *
-     * <table border=1 cellpadding=5 summary="">
+     * <table class="striped">
+     * <caption style="display:none">Options</caption>
+     * <thead>
      * <tr> <th>Option</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
      *   <td> If the target file exists, then the target file is replaced if it
@@ -1215,6 +1224,7 @@
      *     new link. In other words, the {@code COPY_ATTRIBUTES} option may be
      *     ignored when copying a symbolic link. </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * <p> An implementation of this interface may support additional
@@ -1306,8 +1316,12 @@
      *
      * <p> The {@code options} parameter may include any of the following:
      *
-     * <table border=1 cellpadding=5 summary="">
+     * <table class="striped">
+     * <caption style="display:none">Options</caption>
+     * <thead>
      * <tr> <th>Option</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
      *   <td> If the target file exists, then the target file is replaced if it
@@ -1326,6 +1340,7 @@
      *     example, when the target location is on a different {@code FileStore}
      *     and would require that the file be copied, or target location is
      *     associated with a different provider to this object. </td>
+     * </tbody>
      * </table>
      *
      * <p> An implementation of this interface may support additional
@@ -1909,7 +1924,9 @@
      * attributes} parameter:
      *
      * <blockquote>
-     * <table border="0" summary="Possible values">
+     * <table class="borderless">
+     * <caption style="display:none">Possible values</caption>
+     * <tbody>
      * <tr>
      *   <td> {@code "*"} </td>
      *   <td> Read all {@link BasicFileAttributes basic-file-attributes}. </td>
@@ -1927,6 +1944,7 @@
      *   <td> {@code "posix:permissions,owner,size"} </td>
      *   <td> Reads the POSIX file permissions, owner, and file size. </td>
      * </tr>
+     * </tbody>
      * </table>
      * </blockquote>
      *
--- a/jdk/src/java.base/share/classes/java/nio/file/LinkPermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/LinkPermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,13 +33,16 @@
  * <p> The following table provides a summary description of what the permission
  * allows, and discusses the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5
- *        summary="Table shows permission target name, what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  * <tr>
  *   <td>hard</td>
  *   <td> Ability to add an existing file to a directory. This is sometimes
@@ -55,6 +58,7 @@
  *   linking to any file or directory in the file system thus allowing the
  *   attacker to access to all files. </td>
  * </tr>
+ * </tbody>
  * </table>
  *
  * @since 1.7
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/AclFileAttributeView.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -94,11 +94,15 @@
  * <p> Where dynamic access to file attributes is required, the attributes
  * supported by this attribute view are as follows:
  * <blockquote>
- * <table border="1" cellpadding="8" summary="Supported attributes">
+ * <table class="striped">
+ * <caption style="display:none">Supported attributes</caption>
+ * <thead>
  *   <tr>
  *     <th> Name </th>
  *     <th> Type </th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> "acl" </td>
  *     <td> {@link List}&lt;{@link AclEntry}&gt; </td>
@@ -107,6 +111,7 @@
  *     <td> "owner" </td>
  *     <td> {@link UserPrincipal} </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  *
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/BasicFileAttributeView.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,11 +41,15 @@
  * <p> Where dynamic access to file attributes is required, the attributes
  * supported by this attribute view have the following names and types:
  * <blockquote>
- *  <table border="1" cellpadding="8" summary="Supported attributes">
+ *  <table class="striped">
+ *  <caption style="display:none">Supported attributes</caption>
+ *  <thead>
  *   <tr>
  *     <th> Name </th>
  *     <th> Type </th>
  *   </tr>
+ *  </thead>
+ *  <tbody>
  *  <tr>
  *     <td> "lastModifiedTime" </td>
  *     <td> {@link FileTime} </td>
@@ -82,6 +86,7 @@
  *     <td> "fileKey" </td>
  *     <td> {@link Object} </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  *
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/DosFileAttributeView.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,11 +41,15 @@
  * BasicFileAttributeView}, and in addition, the following attributes are
  * supported:
  * <blockquote>
- * <table border="1" cellpadding="8" summary="Supported attributes">
+ * <table class="striped">
+ * <caption style="display:none">Supported attributes</caption>
+ * <thead>
  *   <tr>
  *     <th> Name </th>
  *     <th> Type </th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td> readonly </td>
  *     <td> {@link Boolean} </td>
@@ -62,6 +66,7 @@
  *     <td> archive </td>
  *     <td> {@link Boolean} </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  *
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/PosixFileAttributeView.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,11 +74,15 @@
  * BasicFileAttributeView} and {@link FileOwnerAttributeView}, and in addition,
  * the following attributes are supported:
  * <blockquote>
- * <table border="1" cellpadding="8" summary="Supported attributes">
+ * <table class="striped">
+ * <caption style="display:none">Supported attributes</caption>
+ * <thead>
  *   <tr>
  *     <th> Name </th>
  *     <th> Type </th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *  <tr>
  *     <td> "permissions" </td>
  *     <td> {@link Set}&lt;{@link PosixFilePermission}&gt; </td>
@@ -87,6 +91,7 @@
  *     <td> "group" </td>
  *     <td> {@link GroupPrincipal} </td>
  *   </tr>
+ * </tbody>
  * </table>
  * </blockquote>
  *
--- a/jdk/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/nio/file/spi/FileSystemProvider.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -919,8 +919,12 @@
      * according to all of access modes specified in the {@code modes} parameter
      * as follows:
      *
-     * <table border=1 cellpadding=5 summary="">
+     * <table class="striped">
+     * <caption style="display:none">Access Modes</caption>
+     * <thead>
      * <tr> <th>Value</th> <th>Description</th> </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      *   <td> {@link AccessMode#READ READ} </td>
      *   <td> Checks that the file exists and that the Java virtual machine has
@@ -940,6 +944,7 @@
      *     virtual machine has permission to search the directory in order to
      *     access file or subdirectories. </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * <p> If the {@code modes} parameter is of length zero, then the existence
--- a/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java	Wed Jul 05 23:30:30 2017 +0200
@@ -75,9 +75,9 @@
  * <li>{@code DSA} (1024, 2048)</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
+ * "{@docRoot}/../specs/security/standard-names.html#algorithmparametergenerator-algorithms">
  * AlgorithmParameterGenerator section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -150,8 +150,8 @@
      * @param algorithm the name of the algorithm this
      * parameter generator is associated with.
      * See the AlgorithmParameterGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparametergenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code AlgorithmParameterGenerator} object
@@ -195,8 +195,8 @@
      * @param algorithm the name of the algorithm this
      * parameter generator is associated with.
      * See the AlgorithmParameterGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparametergenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the string name of the Provider.
@@ -245,8 +245,8 @@
      * @param algorithm the string name of the algorithm this
      * parameter generator is associated with.
      * See the AlgorithmParameterGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameterGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparametergenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the {@code Provider} object.
--- a/jdk/src/java.base/share/classes/java/security/AlgorithmParameters.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/AlgorithmParameters.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,9 +57,9 @@
  * <li>{@code DSA}</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
+ * "{@docRoot}/../specs/security/standard-names.html#algorithmparameters-algorithms">
  * AlgorithmParameters section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -137,8 +137,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the AlgorithmParameters section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparameters-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new parameter object
@@ -182,8 +182,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the AlgorithmParameters section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparameters-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -232,8 +232,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the AlgorithmParameters section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#algorithmparameters-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
--- a/jdk/src/java.base/share/classes/java/security/DrbgParameters.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/DrbgParameters.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -188,7 +188,7 @@
  * @implSpec
  * By convention, a provider should name its primary DRBG implementation
  * with the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
+ * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
  * standard {@code SecureRandom} algorithm name</a> "DRBG".
  *
  * @implNote
@@ -263,14 +263,19 @@
      * Capability effective = ((DrbgParametes.Initiate) s.getParameters())
      *         .getCapability();</pre>
      * </blockquote>
-     * <table border=1 summary="requested and effective capabilities">
+     * <table class="plain">
+     * <caption style="display:none">requested and effective capabilities</caption>
+     * <thead>
      * <tr>
      * <th>Requested Value</th>
      * <th>Possible Effective Values</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr><td>NONE</td><td>NONE, RESEED_ONLY, PR_AND_RESEED</td></tr>
      * <tr><td>RESEED_ONLY</td><td>RESEED_ONLY, PR_AND_RESEED</td></tr>
      * <tr><td>PR_AND_RESEED</td><td>PR_AND_RESEED</td></tr>
+     * </tbody>
      * </table>
      * <p>
      * A DRBG implementation supporting prediction resistance must also
--- a/jdk/src/java.base/share/classes/java/security/Key.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/Key.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -82,7 +82,7 @@
  * <p> A Key should use KeyRep as its serialized representation.
  * Note that a serialized Key may contain sensitive information
  * which should not be exposed in untrusted environments.  See the
- * <a href="../../../platform/serialization/spec/security.html">
+ * <a href="{@docRoot}/../specs/serialization/security.html">
  * Security Appendix</a>
  * of the Serialization Specification for more information.
  *
--- a/jdk/src/java.base/share/classes/java/security/KeyFactory.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/KeyFactory.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -75,9 +75,9 @@
  * <li>{@code RSA}</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
+ * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
  * KeyFactory section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -163,8 +163,8 @@
      *
      * @param algorithm the name of the requested key algorithm.
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code KeyFactory} object
@@ -197,8 +197,8 @@
      *
      * @param algorithm the name of the requested key algorithm.
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -239,8 +239,8 @@
      *
      * @param algorithm the name of the requested key algorithm.
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/KeyPairGenerator.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -114,9 +114,9 @@
  * <li>{@code RSA} (1024, 2048, 4096)</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
+ * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
  * KeyPairGenerator section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -142,8 +142,8 @@
      *
      * @param algorithm the standard string name of the algorithm.
      * See the KeyPairGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      */
     protected KeyPairGenerator(String algorithm) {
@@ -153,8 +153,8 @@
     /**
      * Returns the standard name of the algorithm for this key pair generator.
      * See the KeyPairGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the standard string name of the algorithm.
@@ -205,8 +205,8 @@
      *
      * @param algorithm the standard string name of the algorithm.
      * See the KeyPairGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code KeyPairGenerator} object
@@ -264,8 +264,8 @@
      *
      * @param algorithm the standard string name of the algorithm.
      * See the KeyPairGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the string name of the provider.
@@ -306,8 +306,8 @@
      *
      * @param algorithm the standard string name of the algorithm.
      * See the KeyPairGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keypairgenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/KeyRep.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/KeyRep.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,7 +42,7 @@
  *
  * Note that a serialized Key may contain sensitive information
  * which should not be exposed in untrusted environments.  See the
- * <a href="../../../platform/serialization/spec/security.html">
+ * <a href="{@docRoot}/../specs/serialization/security.html">
  * Security Appendix</a>
  * of the Serialization Specification for more information.
  *
--- a/jdk/src/java.base/share/classes/java/security/KeyStore.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -176,9 +176,9 @@
  * <li>{@code PKCS12}</li>
  * </ul>
  * This type is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
+ * "{@docRoot}/../specs/security/standard-names.html#keystore-types">
  * KeyStore section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other types are supported.
  *
@@ -291,9 +291,8 @@
          * @param protectionAlgorithm the encryption algorithm name, for
          *     example, {@code PBEWithHmacSHA256AndAES_256}.
          *     See the Cipher section in the <a href=
-         * "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
-         * Java Cryptography Architecture Standard Algorithm Name
-         * Documentation</a>
+         * "{@docRoot}/../specs/security/standard-names.html#cipher-algorithm-names">
+         * Java Security Standard Algorithm Names Specification</a>
          *     for information about standard encryption algorithm names.
          * @param protectionParameters the encryption algorithm parameter
          *     specification, which may be {@code null}
@@ -854,8 +853,8 @@
      *
      * @param type the type of keystore.
      * See the KeyStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keystore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard keystore types.
      *
      * @return a keystore object of the specified type
@@ -895,8 +894,8 @@
      *
      * @param type the type of keystore.
      * See the KeyStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keystore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard keystore types.
      *
      * @param provider the name of the provider.
@@ -941,8 +940,8 @@
      *
      * @param type the type of keystore.
      * See the KeyStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keystore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard keystore types.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/MessageDigest.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/MessageDigest.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -89,9 +89,9 @@
  * <li>{@code SHA-256}</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
+ * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
  * MessageDigest section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -123,8 +123,8 @@
      *
      * @param algorithm the standard name of the digest algorithm.
      * See the MessageDigest section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      */
     protected MessageDigest(String algorithm) {
@@ -154,8 +154,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the MessageDigest section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return a {@code MessageDigest} object that implements the
@@ -209,8 +209,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the MessageDigest section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -262,8 +262,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the MessageDigest section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
@@ -497,8 +497,8 @@
      * implementation details. The name should be a standard
      * Java Security name (such as "SHA", "MD5", and so on).
      * See the MessageDigest section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#messagedigest-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the name of the algorithm
--- a/jdk/src/java.base/share/classes/java/security/Policy.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/Policy.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -365,8 +365,8 @@
      *
      * @param type the specified Policy type.  See the Policy section in the
      *    <a href=
-     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
-     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *    "{@docRoot}/../specs/security/standard-names.html#policy-types">
+     *    Java Security Standard Algorithm Names Specification</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
@@ -419,8 +419,8 @@
      *
      * @param type the specified Policy type.  See the Policy section in the
      *    <a href=
-     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
-     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *    "{@docRoot}/../specs/security/standard-names.html#policy-types">
+     *    Java Security Standard Algorithm Names Specification</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
@@ -485,8 +485,8 @@
      *
      * @param type the specified Policy type.  See the Policy section in the
      *    <a href=
-     *    "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">
-     *    Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *    "{@docRoot}/../specs/security/standard-names.html#policy-types">
+     *    Java Security Standard Algorithm Names Specification</a>
      *    for a list of standard Policy types.
      *
      * @param params parameters for the Policy, which may be null.
--- a/jdk/src/java.base/share/classes/java/security/Provider.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/Provider.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,17 +61,21 @@
  * security framework. Services of this type cannot be added, removed,
  * or modified by applications.
  * The following attributes are automatically placed in each Provider object:
- * <table cellspacing=4>
+ * <table class="plain">
  * <caption><b>Attributes Automatically Placed in a Provider Object</b></caption>
+ * <thead>
  * <tr><th>Name</th><th>Value</th>
+ * </thead>
+ * <tbody>
  * <tr><td>{@code Provider.id name}</td>
-  *    <td>{@code String.valueOf(provider.getName())}</td>
+ *     <td>{@code String.valueOf(provider.getName())}</td>
  * <tr><td>{@code Provider.id version}</td>
  *     <td>{@code String.valueOf(provider.getVersionStr())}</td>
  * <tr><td>{@code Provider.id info}</td>
-       <td>{@code String.valueOf(provider.getInfo())}</td>
+ *     <td>{@code String.valueOf(provider.getInfo())}</td>
  * <tr><td>{@code Provider.id className}</td>
  *     <td>{@code provider.getClass().getName()}</td>
+ * </tbody>
  * </table>
  *
  * <p>Each provider has a name and a version string. A provider normally
--- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java	Wed Jul 05 23:30:30 2017 +0200
@@ -126,7 +126,7 @@
  * @implSpec
  * A {@code SecureRandom} service provider can advertise that it is thread-safe
  * by setting the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Service">service
+ * "{@docRoot}/../specs/security/standard-names.html#service-attributes">service
  * provider attribute</a> "ThreadSafe" to "true" when registering the provider.
  * Otherwise, this class will instead synchronize access to the following
  * methods of the {@code SecureRandomSpi} implementation:
@@ -203,8 +203,8 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * <p> See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      */
     public SecureRandom() {
@@ -244,8 +244,8 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * <p> See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param seed the seed.
@@ -341,8 +341,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @return the new {@code SecureRandom} object
@@ -380,8 +380,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param provider the name of the provider.
@@ -424,8 +424,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param provider the provider.
@@ -478,8 +478,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param params the {@code SecureRandomParameters}
@@ -528,8 +528,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param params the {@code SecureRandomParameters}
@@ -581,8 +581,8 @@
      *
      * @param algorithm the name of the RNG algorithm.
      * See the {@code SecureRandom} section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#securerandom-number-generation-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard RNG algorithm names.
      *
      * @param params the {@code SecureRandomParameters}
--- a/jdk/src/java.base/share/classes/java/security/SecureRandomSpi.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/SecureRandomSpi.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -65,7 +65,7 @@
  * will synchronize access to each of the applicable engine methods
  * (see {@link SecureRandom} for the list of methods). However, if a
  * {@code SecureRandomSpi} implementation is thread-safe, the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Service">
+ * "{@docRoot}/../specs/security/standard-names.html#service-attributes">
  * service provider attribute</a> "ThreadSafe" should be set to "true" during
  * its registration, as follows:
  * <blockquote><pre>
--- a/jdk/src/java.base/share/classes/java/security/Security.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/Security.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -281,8 +281,8 @@
     /**
      * Gets a specified property for an algorithm. The algorithm name
      * should be a standard name. See the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * One possible use is by specialized algorithm parsers, which may map
@@ -511,8 +511,8 @@
      * </ul>
      *
      * <p> See the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard cryptographic service names, standard
      * algorithm names and standard attribute names.
      *
@@ -582,8 +582,8 @@
      * </ul>
      *
      * <p> See the <a href=
-     * "../../../technotes/guides/security/StandardNames.html">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard cryptographic service names, standard
      * algorithm names and standard attribute names.
      *
--- a/jdk/src/java.base/share/classes/java/security/SecurityPermission.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/SecurityPermission.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,12 +45,16 @@
  * target names, and for each provides a description of what the permission
  * allows and a discussion of the risks of granting code the permission.
  *
- * <table border=1 cellpadding=5 summary="target name,what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody>
  *
  * <tr>
  *   <td>authProvider.{provider name}</td>
@@ -196,6 +200,7 @@
  * described under the "removeProvider.{provider name}" permission.</td>
  * </tr>
  *
+ * </tbody>
  * </table>
  *
  * <P>
@@ -204,13 +209,17 @@
  * {@link IdentityScope}, {@link Signer}. Use of them is discouraged. See the
  * applicable classes for more information.
  *
- * <table border=1 cellpadding=5 summary="target name,what the permission allows, and associated risks">
+ * <table class="striped">
+ * <caption style="display:none">target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
  * <th>Permission Target Name</th>
  * <th>What the Permission Allows</th>
  * <th>Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
  *
+ * <tbody>
  * <tr>
  *   <td>insertProvider.{provider name}</td>
  *   <td>Addition of a new provider, with the specified name</td>
@@ -308,6 +317,7 @@
  * data encrypted under that session key.</td>
  * </tr>
  *
+ * </tbody>
  * </table>
  *
  * @implNote
--- a/jdk/src/java.base/share/classes/java/security/Signature.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/Signature.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -106,9 +106,9 @@
  * <li>{@code SHA256withRSA}</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
+ * "{@docRoot}/../specs/security/standard-names.html#signature-algorithms">
  * Signature section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -164,8 +164,8 @@
      *
      * @param algorithm the standard string name of the algorithm.
      * See the Signature section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#signature-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      */
     protected Signature(String algorithm) {
@@ -209,8 +209,8 @@
      *
      * @param algorithm the standard name of the algorithm requested.
      * See the Signature section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#signature-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code Signature} object
@@ -332,8 +332,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the Signature section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#signature-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -385,8 +385,8 @@
      *
      * @param algorithm the name of the algorithm requested.
      * See the Signature section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#signature-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/cert/CertPath.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertPath.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -91,9 +91,9 @@
  * <li>{@code PkiPath}</li>
  * </ul>
  * These encodings are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "{@docRoot}/../specs/security/standard-names.html#certpath-encodings">
  * CertPath Encodings section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other encodings are supported.
  * <p>
--- a/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -72,9 +72,9 @@
  * <li>{@code PKIX}</li>
  * </ul>
  * This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
+ * "{@docRoot}/../specs/security/standard-names.html#certpathbuilder-algorithms">
  * CertPathBuilder section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -152,8 +152,8 @@
      *
      * @param algorithm the name of the requested {@code CertPathBuilder}
      *  algorithm.  See the CertPathBuilder section in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *  "{@docRoot}/../specs/security/standard-names.html#certpathbuilder-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return a {@code CertPathBuilder} object that implements the
@@ -190,8 +190,8 @@
      *
      * @param algorithm the name of the requested {@code CertPathBuilder}
      *  algorithm.  See the CertPathBuilder section in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *  "{@docRoot}/../specs/security/standard-names.html#certpathbuilder-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -233,8 +233,8 @@
      *
      * @param algorithm the name of the requested {@code CertPathBuilder}
      *  algorithm.  See the CertPathBuilder section in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *  "{@docRoot}/../specs/security/standard-names.html#certpathbuilder-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,9 +74,9 @@
  * <li>{@code PKIX}</li>
  * </ul>
  * This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
+ * "{@docRoot}/../specs/security/standard-names.html#certpathvalidator-algorithms">
  * CertPathValidator section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -152,9 +152,9 @@
      * {@link Security#getProviders() Security.getProviders()}.
      *
      * @param algorithm the name of the requested {@code CertPathValidator}
-     *  algorithm. See the CertPathValidator section in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * algorithm. See the CertPathValidator section in the <a href=
+     * "{@docRoot}/../specs/security/standard-names.html#certpathvalidator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return a {@code CertPathValidator} object that implements the
@@ -190,9 +190,9 @@
      * the {@link Security#getProviders() Security.getProviders()} method.
      *
      * @param algorithm the name of the requested {@code CertPathValidator}
-     *  algorithm. See the CertPathValidator section in the <a href=
-     *  "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * algorithm. See the CertPathValidator section in the <a href=
+     * "{@docRoot}/../specs/security/standard-names.html#certpathvalidator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -235,8 +235,8 @@
      *
      * @param algorithm the name of the requested {@code CertPathValidator}
      * algorithm. See the CertPathValidator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certpathvalidator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/java/security/cert/CertStore.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertStore.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -67,9 +67,9 @@
  * <li>{@code Collection}</li>
  * </ul>
  * This type is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
+ * "{@docRoot}/../specs/security/standard-names.html#certstore-types">
  * CertStore section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other types are supported.
  *
@@ -212,8 +212,8 @@
      *
      * @param type the name of the requested {@code CertStore} type.
      * See the CertStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certstore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard types.
      *
      * @param params the initialization parameters (may be {@code null}).
@@ -276,8 +276,8 @@
      *
      * @param type the requested {@code CertStore} type.
      * See the CertStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certstore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard types.
      *
      * @param params the initialization parameters (may be {@code null}).
@@ -337,8 +337,8 @@
      *
      * @param type the requested {@code CertStore} type.
      * See the CertStore section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certstore-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard types.
      *
      * @param params the initialization parameters (may be {@code null}).
--- a/jdk/src/java.base/share/classes/java/security/cert/Certificate.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/Certificate.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,8 +74,8 @@
      *
      * @param type the standard name of the certificate type.
      * See the CertificateFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certificatefactory-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard certificate types.
      */
     protected Certificate(String type) {
--- a/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertificateFactory.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -101,11 +101,11 @@
  * <li>{@code PkiPath}</li>
  * </ul>
  * The type and encodings are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
+ * "{@docRoot}/../specs/security/standard-names.html#certificatefactory-types">
  * CertificateFactory section</a> and the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
+ * "{@docRoot}/../specs/security/standard-names.html#certpath-encodings">
  * CertPath Encodings section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other types or encodings are supported.
  *
@@ -172,8 +172,8 @@
      *
      * @param type the name of the requested certificate type.
      * See the CertificateFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certificatefactory-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard certificate types.
      *
      * @return a certificate factory object for the specified type
@@ -213,8 +213,8 @@
      *
      * @param type the certificate type.
      * See the CertificateFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certificatefactory-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard certificate types.
      *
      * @param provider the name of the provider.
@@ -260,8 +260,8 @@
      *
      * @param type the certificate type.
      * See the CertificateFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certificatefactory-types">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard certificate types.
      * @param provider the provider.
      *
@@ -359,8 +359,8 @@
      * Returns an iteration of the {@code CertPath} encodings supported
      * by this certificate factory, with the default encoding first. See
      * the CertPath Encodings section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certpath-encodings">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard encoding names and their formats.
      * <p>
      * Attempts to modify the returned {@code Iterator} via its
@@ -399,8 +399,8 @@
      * the data read from the {@code InputStream} inStream. The data
      * is assumed to be in the specified encoding. See
      * the CertPath Encodings section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certpath-encodings">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard encoding names and their formats.
      *
      * @param inStream an {@code InputStream} containing the data
--- a/jdk/src/java.base/share/classes/java/security/cert/CertificateFactorySpi.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertificateFactorySpi.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -183,8 +183,8 @@
      * Returns an iteration of the {@code CertPath} encodings supported
      * by this certificate factory, with the default encoding first. See
      * the CertPath Encodings section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathEncodings">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#certpath-encodings">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard encoding names.
      * <p>
      * Attempts to modify the returned {@code Iterator} via its
--- a/jdk/src/java.base/share/classes/java/security/cert/X509Extension.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/X509Extension.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -152,10 +152,14 @@
      * by periods.
      *
      * <p>For example:<br>
-     * <table border=groove summary="Examples of OIDs and extension names">
+     * <table class="plain">
+     * <caption style="display:none">Examples of OIDs and extension names</caption>
+     * <thead>
      * <tr>
      * <th>OID <em>(Object Identifier)</em></th>
      * <th>Extension Name</th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td>2.5.29.14</td>
      * <td>SubjectKeyIdentifier</td></tr>
      * <tr><td>2.5.29.15</td>
@@ -176,6 +180,7 @@
      * <td>AuthorityKeyIdentifier</td></tr>
      * <tr><td>2.5.29.36</td>
      * <td>PolicyConstraints</td></tr>
+     * </tbody>
      * </table>
      *
      * @param oid the Object Identifier value for the extension.
--- a/jdk/src/java.base/share/classes/java/security/cert/package-info.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/cert/package-info.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,10 +39,9 @@
  *     Certificate Revocation List (CRL) Profile
  *   <li>RFC 2560: X.509 Internet Public Key Infrastructure Online Certificate
  *     Status Protocol - OCSP
- *   <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
- *     <b>Java&trade;
- *     Cryptography Architecture Standard Algorithm Name
- *     Documentation</b></a></li>
+ *   <li><a href="{@docRoot}/../specs/security/standard-names.html">
+ *     <b>Java&trade; Security Standard Algorithm Names Specification
+ *     </b></a></li>
  * </ul>
  *
  * <h2>Related Documentation</h2>
--- a/jdk/src/java.base/share/classes/java/security/package-info.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/package-info.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -53,10 +53,9 @@
  *   <li>PKCS #8: Private-Key Information Syntax Standard, Version 1.2,
  *     November 1993</li>
  *
- *   <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
- *     <b>Java&trade;
- *     Cryptography Architecture Standard Algorithm Name
- *     Documentation</b></a></li>
+ *   <li><a href="{@docRoot}/../specs/security/standard-names.html">
+ *     <b>Java&trade; Security Standard Algorithm Names Specification
+ *     </b></a></li>
  * </ul>
  *
  * <h2>Related Documentation</h2>
--- a/jdk/src/java.base/share/classes/java/security/spec/EncodedKeySpec.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/spec/EncodedKeySpec.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -67,8 +67,8 @@
      * array are copied to protect against subsequent modification.
      * @param algorithm the algorithm name of the encoded key
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      * @throws NullPointerException if {@code encodedKey}
      * or {@code algorithm} is null.
--- a/jdk/src/java.base/share/classes/java/security/spec/PKCS8EncodedKeySpec.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/spec/PKCS8EncodedKeySpec.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -85,8 +85,8 @@
      * the array are copied to protect against subsequent modification.
      * @param algorithm the algorithm name of the encoded private key
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      * @throws NullPointerException if {@code encodedKey}
      * or {@code algorithm} is null.
--- a/jdk/src/java.base/share/classes/java/security/spec/X509EncodedKeySpec.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/security/spec/X509EncodedKeySpec.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -75,8 +75,8 @@
      * array are copied to protect against subsequent modification.
      * @param algorithm the algorithm name of the encoded public key
      * See the KeyFactory section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyfactory-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      * @throws NullPointerException if {@code encodedKey}
      * or {@code algorithm} is null.
--- a/jdk/src/java.base/share/classes/java/text/DecimalFormat.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/text/DecimalFormat.java	Wed Jul 05 23:30:30 2017 +0200
@@ -172,19 +172,22 @@
  * are not localized.
  *
  * <blockquote>
- * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing symbol,
- *  location, localized, and meaning.">
- *     <tr style="background-color: rgb(204, 204, 255);">
+ * <table class="striped">
+ * <caption style="display:none">Chart showing symbol, location, localized, and meaning.</caption>
+ * <thead>
+ *     <tr>
  *          <th style="text-align:left">Symbol
  *          <th style="text-align:left">Location
  *          <th style="text-align:left">Localized?
  *          <th style="text-align:left">Meaning
+ * </thead>
+ * <tbody>
  *     <tr style="vertical-align:top">
  *          <td><code>0</code>
  *          <td>Number
  *          <td>Yes
  *          <td>Digit
- *     <tr style="vertical-align: top; background-color: rgb(238, 238, 255);">
+ *     <tr style="vertical-align: top">
  *          <td><code>#</code>
  *          <td>Number
  *          <td>Yes
@@ -194,7 +197,7 @@
  *          <td>Number
  *          <td>Yes
  *          <td>Decimal separator or monetary decimal separator
- *     <tr style="vertical-align: top; background-color: rgb(238, 238, 255);">
+ *     <tr style="vertical-align: top">
  *          <td><code>-</code>
  *          <td>Number
  *          <td>Yes
@@ -204,7 +207,7 @@
  *          <td>Number
  *          <td>Yes
  *          <td>Grouping separator
- *     <tr style="vertical-align: top; background-color: rgb(238, 238, 255);">
+ *     <tr style="vertical-align: top">
  *          <td><code>E</code>
  *          <td>Number
  *          <td>Yes
@@ -215,7 +218,7 @@
  *          <td>Subpattern boundary
  *          <td>Yes
  *          <td>Separates positive and negative subpatterns
- *     <tr style="vertical-align: top; background-color: rgb(238, 238, 255);">
+ *     <tr style="vertical-align: top">
  *          <td><code>%</code>
  *          <td>Prefix or suffix
  *          <td>Yes
@@ -225,7 +228,7 @@
  *          <td>Prefix or suffix
  *          <td>Yes
  *          <td>Multiply by 1000 and show as per mille value
- *     <tr style="vertical-align: top; background-color: rgb(238, 238, 255);">
+ *     <tr style="vertical-align: top">
  *          <td><code>&#164;</code> (<code>&#92;u00A4</code>)
  *          <td>Prefix or suffix
  *          <td>No
@@ -241,6 +244,7 @@
  *              for example, <code>"'#'#"</code> formats 123 to
  *              <code>"#123"</code>.  To create a single quote
  *              itself, use two in a row: <code>"# o''clock"</code>.
+ * </tbody>
  * </table>
  * </blockquote>
  *
@@ -3197,13 +3201,6 @@
         isCurrencyFormat = false;
         useExponentialNotation = false;
 
-        // Two variables are used to record the subrange of the pattern
-        // occupied by phase 1.  This is used during the processing of the
-        // second pattern (the one representing negative numbers) to ensure
-        // that no deviation exists in phase 1 between the two patterns.
-        int phaseOneStart = 0;
-        int phaseOneLength = 0;
-
         int start = 0;
         for (int j = 1; j >= 0 && start < pattern.length(); --j) {
             boolean inQuote = false;
@@ -3254,9 +3251,6 @@
                             ch == groupingSeparator ||
                             ch == decimalSeparator) {
                             phase = 1;
-                            if (j == 1) {
-                                phaseOneStart = pos;
-                            }
                             --pos; // Reprocess this character
                             continue;
                         } else if (ch == CURRENCY_SIGN) {
@@ -3327,17 +3321,29 @@
                     break;
 
                 case 1:
-                    // Phase one must be identical in the two sub-patterns. We
-                    // enforce this by doing a direct comparison. While
-                    // processing the first sub-pattern, we just record its
-                    // length. While processing the second, we compare
-                    // characters.
-                    if (j == 1) {
-                        ++phaseOneLength;
-                    } else {
-                        if (--phaseOneLength == 0) {
-                            phase = 2;
-                            affix = suffix;
+                    // The negative subpattern (j = 0) serves only to specify the
+                    // negative prefix and suffix, so all the phase 1 characters
+                    // e.g. digits, zeroDigit, groupingSeparator,
+                    // decimalSeparator, exponent are ignored
+                    if (j == 0) {
+                        while (pos < pattern.length()) {
+                            char negPatternChar = pattern.charAt(pos);
+                            if (negPatternChar == digit
+                                    || negPatternChar == zeroDigit
+                                    || negPatternChar == groupingSeparator
+                                    || negPatternChar == decimalSeparator) {
+                                ++pos;
+                            } else if (pattern.regionMatches(pos, exponent,
+                                    0, exponent.length())) {
+                                pos = pos + exponent.length();
+                            } else {
+                                // Not a phase 1 character, consider it as
+                                // suffix and parse it in phase 2
+                                --pos; //process it again in outer loop
+                                phase = 2;
+                                affix = suffix;
+                                break;
+                            }
                         }
                         continue;
                     }
@@ -3391,7 +3397,6 @@
                          while (pos < pattern.length() &&
                                pattern.charAt(pos) == zeroDigit) {
                             ++minExponentDigits;
-                            ++phaseOneLength;
                             ++pos;
                         }
 
@@ -3410,7 +3415,6 @@
                         phase = 2;
                         affix = suffix;
                         --pos;
-                        --phaseOneLength;
                         continue;
                     }
                     break;
--- a/jdk/src/java.base/share/classes/java/text/MessageFormat.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/text/MessageFormat.java	Wed Jul 05 23:30:30 2017 +0200
@@ -146,11 +146,15 @@
  * shown in the table are illegal. A <i>SubformatPattern</i> must
  * be a valid pattern string for the {@code Format} subclass used.
  *
- * <table border=1 summary="Shows how FormatType and FormatStyle values map to Format instances">
+ * <table class="plain">
+ * <caption style="display:none">Shows how FormatType and FormatStyle values map to Format instances</caption>
+ * <thead>
  *    <tr>
  *       <th id="ft" class="TableHeadingColor">FormatType
  *       <th id="fs" class="TableHeadingColor">FormatStyle
  *       <th id="sc" class="TableHeadingColor">Subformat Created
+ * </thead>
+ * <tbody>
  *    <tr>
  *       <td headers="ft"><i>(none)</i>
  *       <td headers="fs"><i>(none)</i>
@@ -213,6 +217,7 @@
  *       <td headers="ft"><code>choice</code>
  *       <td headers="fs"><i>SubformatPattern</i>
  *       <td headers="sc">{@code new} {@link ChoiceFormat#ChoiceFormat(String) ChoiceFormat}{@code (subformatPattern)}
+ * </tbody>
  * </table>
  *
  * <h4>Usage Information</h4>
@@ -766,11 +771,15 @@
      * argument is <i>unavailable</i> if <code>arguments</code> is
      * <code>null</code> or has fewer than argumentIndex+1 elements.
      *
-     * <table border=1 summary="Examples of subformat,argument,and formatted text">
+     * <table class="plain">
+     * <caption style="display:none">Examples of subformat,argument,and formatted text</caption>
+     * <thead>
      *    <tr>
      *       <th>Subformat
      *       <th>Argument
      *       <th>Formatted Text
+     * </thead>
+     * <tbody>
      *    <tr>
      *       <td><i>any</i>
      *       <td><i>unavailable</i>
@@ -805,6 +814,7 @@
      *       <td><code>null</code>
      *       <td><i>any</i>
      *       <td><code>argument.toString()</code>
+     * </tbody>
      * </table>
      * <p>
      * If <code>pos</code> is non-null, and refers to
--- a/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java	Wed Jul 05 23:30:30 2017 +0200
@@ -92,18 +92,22 @@
  * <code>'A'</code> to <code>'Z'</code> and from <code>'a'</code> to
  * <code>'z'</code> are reserved):
  * <blockquote>
- * <table border=0 cellspacing=3 cellpadding=0 summary="Chart shows pattern letters, date/time component, presentation, and examples.">
- *     <tr style="background-color: rgb(204, 204, 255);">
+ * <table class="striped">
+ * <caption style="display:none">Chart shows pattern letters, date/time component, presentation, and examples.</caption>
+ * <thead>
+ *     <tr>
  *         <th style="text-align:left">Letter
  *         <th style="text-align:left">Date or Time Component
  *         <th style="text-align:left">Presentation
  *         <th style="text-align:left">Examples
+ * </thead>
+ * <tbody>
  *     <tr>
  *         <td><code>G</code>
  *         <td>Era designator
  *         <td><a href="#text">Text</a>
  *         <td><code>AD</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>y</code>
  *         <td>Year
  *         <td><a href="#year">Year</a>
@@ -113,7 +117,7 @@
  *         <td>Week year
  *         <td><a href="#year">Year</a>
  *         <td><code>2009</code>; <code>09</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>M</code>
  *         <td>Month in year (context sensitive)
  *         <td><a href="#month">Month</a>
@@ -123,7 +127,7 @@
  *         <td>Month in year (standalone form)
  *         <td><a href="#month">Month</a>
  *         <td><code>July</code>; <code>Jul</code>; <code>07</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>w</code>
  *         <td>Week in year
  *         <td><a href="#number">Number</a>
@@ -133,7 +137,7 @@
  *         <td>Week in month
  *         <td><a href="#number">Number</a>
  *         <td><code>2</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>D</code>
  *         <td>Day in year
  *         <td><a href="#number">Number</a>
@@ -143,7 +147,7 @@
  *         <td>Day in month
  *         <td><a href="#number">Number</a>
  *         <td><code>10</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>F</code>
  *         <td>Day of week in month
  *         <td><a href="#number">Number</a>
@@ -153,7 +157,7 @@
  *         <td>Day name in week
  *         <td><a href="#text">Text</a>
  *         <td><code>Tuesday</code>; <code>Tue</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>u</code>
  *         <td>Day number of week (1 = Monday, ..., 7 = Sunday)
  *         <td><a href="#number">Number</a>
@@ -163,7 +167,7 @@
  *         <td>Am/pm marker
  *         <td><a href="#text">Text</a>
  *         <td><code>PM</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>H</code>
  *         <td>Hour in day (0-23)
  *         <td><a href="#number">Number</a>
@@ -173,7 +177,7 @@
  *         <td>Hour in day (1-24)
  *         <td><a href="#number">Number</a>
  *         <td><code>24</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>K</code>
  *         <td>Hour in am/pm (0-11)
  *         <td><a href="#number">Number</a>
@@ -183,7 +187,7 @@
  *         <td>Hour in am/pm (1-12)
  *         <td><a href="#number">Number</a>
  *         <td><code>12</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>m</code>
  *         <td>Minute in hour
  *         <td><a href="#number">Number</a>
@@ -193,7 +197,7 @@
  *         <td>Second in minute
  *         <td><a href="#number">Number</a>
  *         <td><code>55</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>S</code>
  *         <td>Millisecond
  *         <td><a href="#number">Number</a>
@@ -203,7 +207,7 @@
  *         <td>Time zone
  *         <td><a href="#timezone">General time zone</a>
  *         <td><code>Pacific Standard Time</code>; <code>PST</code>; <code>GMT-08:00</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>Z</code>
  *         <td>Time zone
  *         <td><a href="#rfc822timezone">RFC 822 time zone</a>
@@ -213,6 +217,7 @@
  *         <td>Time zone
  *         <td><a href="#iso8601timezone">ISO 8601 time zone</a>
  *         <td><code>-08</code>; <code>-0800</code>;  <code>-08:00</code>
+ * </tbody>
  * </table>
  * </blockquote>
  * Pattern letters are usually repeated, as their number determines the
@@ -370,43 +375,48 @@
  * the U.S. locale. The given date and time are 2001-07-04 12:08:56 local time
  * in the U.S. Pacific Time time zone.
  * <blockquote>
- * <table border=0 cellspacing=3 cellpadding=0 summary="Examples of date and time patterns interpreted in the U.S. locale">
- *     <tr style="background-color: rgb(204, 204, 255);">
+ * <table class="striped">
+ * <caption style="display:none">Examples of date and time patterns interpreted in the U.S. locale</caption>
+ * <thead>
+ *     <tr>
  *         <th style="text-align:left">Date and Time Pattern
  *         <th style="text-align:left">Result
+ * </thead>
+ * <tbody>
  *     <tr>
  *         <td><code>"yyyy.MM.dd G 'at' HH:mm:ss z"</code>
  *         <td><code>2001.07.04 AD at 12:08:56 PDT</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>"EEE, MMM d, ''yy"</code>
  *         <td><code>Wed, Jul 4, '01</code>
  *     <tr>
  *         <td><code>"h:mm a"</code>
  *         <td><code>12:08 PM</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>"hh 'o''clock' a, zzzz"</code>
  *         <td><code>12 o'clock PM, Pacific Daylight Time</code>
  *     <tr>
  *         <td><code>"K:mm a, z"</code>
  *         <td><code>0:08 PM, PDT</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
  *         <td><code>02001.July.04 AD 12:08 PM</code>
  *     <tr>
  *         <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
  *         <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>"yyMMddHHmmssZ"</code>
  *         <td><code>010704120856-0700</code>
  *     <tr>
  *         <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSZ"</code>
  *         <td><code>2001-07-04T12:08:56.235-0700</code>
- *     <tr style="background-color: rgb(238, 238, 255);">
+ *     <tr>
  *         <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"</code>
  *         <td><code>2001-07-04T12:08:56.235-07:00</code>
  *     <tr>
  *         <td><code>"YYYY-'W'ww-u"</code>
  *         <td><code>2001-W27-3</code>
+ * </tbody>
  * </table>
  * </blockquote>
  *
--- a/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java	Wed Jul 05 23:30:30 2017 +0200
@@ -103,17 +103,18 @@
  *
  * <p>
  * CLDR and LDML identify variants:
- * <table cellpadding="2" summary="Variants of Hijrah Calendars">
+ * <table class="striped">
+ * <caption style="display:none">Variants of Hijrah Calendars</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left" >Chronology ID</th>
- * <th class="colFirst" style="text-align:left" >Calendar Type</th>
- * <th class="colFirst" style="text-align:left" >Locale extension, see {@link java.util.Locale}</th>
- * <th class="colLast" style="text-align:left" >Description</th>
+ * <tr>
+ * <th style="text-align:left" >Chronology ID</th>
+ * <th style="text-align:left" >Calendar Type</th>
+ * <th style="text-align:left" >Locale extension, see {@link java.util.Locale}</th>
+ * <th style="text-align:left" >Description</th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="altColor">
+ * <tr>
  * <td>Hijrah-umalqura</td>
  * <td>islamic-umalqura</td>
  * <td>ca-islamic-umalqura</td>
@@ -147,36 +148,37 @@
  * <p>
  * The Hijrah property resource is a set of properties that describe the calendar.
  * The syntax is defined by {@code java.util.Properties#load(Reader)}.
- * <table cellpadding="2" summary="Configuration of Hijrah Calendar">
+ * <table class="striped">
+ * <caption style="display:none">Configuration of Hijrah Calendar</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left" > Property Name</th>
- * <th class="colFirst" style="text-align:left" > Property value</th>
- * <th class="colLast" style="text-align:left" > Description </th>
+ * <tr>
+ * <th style="text-align:left" > Property Name</th>
+ * <th style="text-align:left" > Property value</th>
+ * <th style="text-align:left" > Description </th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="altColor">
+ * <tr>
  * <td>id</td>
  * <td>Chronology Id, for example, "Hijrah-umalqura"</td>
  * <td>The Id of the calendar in common usage</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td>type</td>
  * <td>Calendar type, for example, "islamic-umalqura"</td>
  * <td>LDML defines the calendar types</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>version</td>
  * <td>Version, for example: "1.8.0_1"</td>
  * <td>The version of the Hijrah variant data</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td>iso-start</td>
  * <td>ISO start date, formatted as {@code yyyy-MM-dd}, for example: "1900-04-30"</td>
  * <td>The ISO date of the first day of the minimum Hijrah year.</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>yyyy - a numeric 4 digit year, for example "1434"</td>
  * <td>The value is a sequence of 12 month lengths,
  * for example: "29 30 29 30 29 30 30 30 29 30 29 29"</td>
--- a/jdk/src/java.base/share/classes/java/time/chrono/IsoEra.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/IsoEra.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -70,25 +70,26 @@
  * A definition has therefore been created with two eras - 'Current era' (CE) for
  * years on or after 0001-01-01 (ISO), and 'Before current era' (BCE) for years before that.
  *
- * <table summary="ISO years and eras" cellpadding="2" cellspacing="3" border="0" >
+ * <table class="striped">
+ * <caption style="display:none">ISO years and eras</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left">year-of-era</th>
- * <th class="colFirst" style="text-align:left">era</th>
- * <th class="colLast" style="text-align:left">proleptic-year</th>
+ * <tr>
+ * <th style="text-align:left">year-of-era</th>
+ * <th style="text-align:left">era</th>
+ * <th style="text-align:left">proleptic-year</th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="rowColor">
+ * <tr>
  * <td>2</td><td>CE</td><td>2</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>1</td><td>CE</td><td>1</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td>1</td><td>BCE</td><td>0</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>2</td><td>BCE</td><td>-1</td>
  * </tr>
  * </tbody>
--- a/jdk/src/java.base/share/classes/java/time/chrono/MinguoEra.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/MinguoEra.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -71,26 +71,27 @@
  * All previous years, zero or earlier in the proleptic count or one and greater
  * in the year-of-era count, are part of the 'Before Republic of China' era.
  *
- * <table summary="Minguo years and eras" cellpadding="2" cellspacing="3" border="0" >
+ * <table class="striped">
+ * <caption style="display:none">Minguo years and eras</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left">year-of-era</th>
- * <th class="colFirst" style="text-align:left">era</th>
- * <th class="colFirst" style="text-align:left">proleptic-year</th>
- * <th class="colLast" style="text-align:left">ISO proleptic-year</th>
+ * <tr>
+ * <th style="text-align:left">year-of-era</th>
+ * <th style="text-align:left">era</th>
+ * <th style="text-align:left">proleptic-year</th>
+ * <th style="text-align:left">ISO proleptic-year</th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="rowColor">
+ * <tr>
  * <td>2</td><td>ROC</td><td>2</td><td>1913</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>1</td><td>ROC</td><td>1</td><td>1912</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td>1</td><td>BEFORE_ROC</td><td>0</td><td>1911</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>2</td><td>BEFORE_ROC</td><td>-1</td><td>1910</td>
  * </tr>
  * </tbody>
--- a/jdk/src/java.base/share/classes/java/time/chrono/ThaiBuddhistEra.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/ThaiBuddhistEra.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -71,26 +71,27 @@
  * All previous years, zero or earlier in the proleptic count or one and greater
  * in the year-of-era count, are part of the 'Before Buddhist' era.
  *
- * <table summary="Buddhist years and eras" cellpadding="2" cellspacing="3" border="0" >
+ * <table class="striped">
+ * <caption style="display:none">Buddhist years and eras</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left">year-of-era</th>
- * <th class="colFirst" style="text-align:left">era</th>
- * <th class="colFirst" style="text-align:left">proleptic-year</th>
- * <th class="colLast" style="text-align:left">ISO proleptic-year</th>
+ * <tr>
+ * <th style="text-align:left">year-of-era</th>
+ * <th style="text-align:left">era</th>
+ * <th style="text-align:left">proleptic-year</th>
+ * <th style="text-align:left">ISO proleptic-year</th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="rowColor">
+ * <tr>
  * <td>2</td><td>BE</td><td>2</td><td>-542</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>1</td><td>BE</td><td>1</td><td>-543</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td>1</td><td>BEFORE_BE</td><td>0</td><td>-544</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td>2</td><td>BEFORE_BE</td><td>-1</td><td>-545</td>
  * </tr>
  * </tbody>
--- a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -150,105 +150,106 @@
  * implementation of {@code java.text.Format}.
  *
  * <h3 id="predefined">Predefined Formatters</h3>
- * <table summary="Predefined Formatters" cellpadding="2" cellspacing="3" border="0" >
+ * <table class="striped">
+ * <caption>Predefined Formatters</caption>
  * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" style="text-align:left">Formatter</th>
- * <th class="colFirst" style="text-align:left">Description</th>
- * <th class="colLast" style="text-align:left">Example</th>
+ * <tr>
+ * <th style="text-align:left">Formatter</th>
+ * <th style="text-align:left">Description</th>
+ * <th style="text-align:left">Example</th>
  * </tr>
  * </thead>
  * <tbody>
- * <tr class="rowColor">
+ * <tr>
  * <td>{@link #ofLocalizedDate ofLocalizedDate(dateStyle)} </td>
  * <td> Formatter with date style from the locale </td>
  * <td> '2011-12-03'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ofLocalizedTime ofLocalizedTime(timeStyle)} </td>
  * <td> Formatter with time style from the locale </td>
  * <td> '10:15:30'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateTimeStyle)} </td>
  * <td> Formatter with a style for date and time from the locale</td>
  * <td> '3 Jun 2008 11:05:30'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateStyle,timeStyle)}
  * </td>
  * <td> Formatter with date and time styles from the locale </td>
  * <td> '3 Jun 2008 11:05'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #BASIC_ISO_DATE}</td>
  * <td>Basic ISO date </td> <td>'20111203'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_LOCAL_DATE}</td>
  * <td> ISO Local Date </td>
  * <td>'2011-12-03'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_OFFSET_DATE}</td>
  * <td> ISO Date with offset </td>
  * <td>'2011-12-03+01:00'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_DATE}</td>
  * <td> ISO Date with or without offset </td>
  * <td> '2011-12-03+01:00'; '2011-12-03'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_LOCAL_TIME}</td>
  * <td> Time without offset </td>
  * <td>'10:15:30'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_OFFSET_TIME}</td>
  * <td> Time with offset </td>
  * <td>'10:15:30+01:00'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_TIME}</td>
  * <td> Time with or without offset </td>
  * <td>'10:15:30+01:00'; '10:15:30'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_LOCAL_DATE_TIME}</td>
  * <td> ISO Local Date and Time </td>
  * <td>'2011-12-03T10:15:30'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_OFFSET_DATE_TIME}</td>
  * <td> Date Time with Offset
  * </td><td>2011-12-03T10:15:30+01:00'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_ZONED_DATE_TIME}</td>
  * <td> Zoned Date Time </td>
  * <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_DATE_TIME}</td>
  * <td> Date and time with ZoneId </td>
  * <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
  * </tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_ORDINAL_DATE}</td>
  * <td> Year and day of year </td>
  * <td>'2012-337'</td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #ISO_WEEK_DATE}</td>
  * <td> Year and Week </td>
  * <td>2012-W48-6'</td></tr>
- * <tr class="altColor">
+ * <tr>
  * <td> {@link #ISO_INSTANT}</td>
  * <td> Date and Time of an Instant </td>
  * <td>'2011-12-03T10:15:30Z' </td>
  * </tr>
- * <tr class="rowColor">
+ * <tr>
  * <td> {@link #RFC_1123_DATE_TIME}</td>
  * <td> RFC 1123 / RFC 822 </td>
  * <td>'Tue, 3 Jun 2008 11:05:30 GMT'</td>
--- a/jdk/src/java.base/share/classes/java/time/temporal/IsoFields.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/temporal/IsoFields.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -136,15 +136,19 @@
  * <p>
  * For example:
  *
- * <table cellpadding="0" cellspacing="3" border="0" style="text-align: left; width: 50%;">
+ * <table class=striped style="text-align: left; width: 50%;">
  * <caption>Examples of Week based Years</caption>
+ * <thead>
  * <tr><th>Date</th><th>Day-of-week</th><th>Field values</th></tr>
+ * </thead>
+ * <tbody>
  * <tr><th>2008-12-28</th><td>Sunday</td><td>Week 52 of week-based-year 2008</td></tr>
  * <tr><th>2008-12-29</th><td>Monday</td><td>Week 1 of week-based-year 2009</td></tr>
  * <tr><th>2008-12-31</th><td>Wednesday</td><td>Week 1 of week-based-year 2009</td></tr>
  * <tr><th>2009-01-01</th><td>Thursday</td><td>Week 1 of week-based-year 2009</td></tr>
  * <tr><th>2009-01-04</th><td>Sunday</td><td>Week 1 of week-based-year 2009</td></tr>
  * <tr><th>2009-01-05</th><td>Monday</td><td>Week 2 of week-based-year 2009</td></tr>
+ * </tbody>
  * </table>
  *
  * @implSpec
--- a/jdk/src/java.base/share/classes/java/time/temporal/WeekFields.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/time/temporal/WeekFields.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -127,10 +127,13 @@
  * The earliest period is referred to as week 0 if it has less than the minimal number of days
  * and week 1 if it has at least the minimal number of days.
  *
- * <table cellpadding="0" cellspacing="3" border="0" style="text-align: left; width: 50%;">
+ * <table class=striped style="text-align: left">
  * <caption>Examples of WeekFields</caption>
+ * <thead>
  * <tr><th>Date</th><td>Day-of-week</td>
  *  <td>First day: Monday<br>Minimal days: 4</td><td>First day: Monday<br>Minimal days: 5</td></tr>
+ * </thead>
+ * <tbody>
  * <tr><th>2008-12-31</th><td>Wednesday</td>
  *  <td>Week 5 of December 2008</td><td>Week 5 of December 2008</td></tr>
  * <tr><th>2009-01-01</th><td>Thursday</td>
@@ -139,6 +142,7 @@
  *  <td>Week 1 of January 2009</td><td>Week 0 of January 2009</td></tr>
  * <tr><th>2009-01-05</th><td>Monday</td>
  *  <td>Week 2 of January 2009</td><td>Week 1 of January 2009</td></tr>
+ * </tbody>
  * </table>
  *
  * <h3>Week of Year</h3>
@@ -157,10 +161,13 @@
  * The first and last weeks of a year may contain days from the
  * previous calendar year or next calendar year respectively.
  *
- * <table cellpadding="0" cellspacing="3" border="0" style="text-align: left; width: 50%;">
+ * <table class=striped style="text-align: left;">
  * <caption>Examples of WeekFields for week-based-year</caption>
+ * <thead>
  * <tr><th>Date</th><td>Day-of-week</td>
  *  <td>First day: Monday<br>Minimal days: 4</td><td>First day: Monday<br>Minimal days: 5</td></tr>
+ * </thead>
+ * <tbody>
  * <tr><th>2008-12-31</th><td>Wednesday</td>
  *  <td>Week 1 of 2009</td><td>Week 53 of 2008</td></tr>
  * <tr><th>2009-01-01</th><td>Thursday</td>
@@ -169,6 +176,7 @@
  *  <td>Week 1 of 2009</td><td>Week 53 of 2008</td></tr>
  * <tr><th>2009-01-05</th><td>Monday</td>
  *  <td>Week 2 of 2009</td><td>Week 1 of 2009</td></tr>
+ * </tbody>
  * </table>
  *
  * @implSpec
--- a/jdk/src/java.base/share/classes/java/util/Deque.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Deque.java	Wed Jul 05 23:30:30 2017 +0200
@@ -56,7 +56,7 @@
  * <p>The twelve methods described above are summarized in the
  * following table:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Summary of Deque methods</caption>
  *  <tr>
  *    <td></td>
@@ -99,7 +99,7 @@
  * inherited from the {@code Queue} interface are precisely equivalent to
  * {@code Deque} methods as indicated in the following table:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Comparison of Queue and Deque methods</caption>
  *  <tr>
  *    <td style="text-align:center"> <b>{@code Queue} Method</b></td>
@@ -137,7 +137,7 @@
  * beginning of the deque.  Stack methods are precisely equivalent to
  * {@code Deque} methods as indicated in the table below:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Comparison of Stack and Deque methods</caption>
  *  <tr>
  *    <td style="text-align:center"> <b>Stack Method</b></td>
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -290,12 +290,14 @@
  * <pre>
  *    out.toUpperCase(Locale.getDefault(Locale.Category.FORMAT)) </pre>
  *
- * <table cellpadding=5 summary="genConv">
- *
+ * <table class="striped">
+ * <caption style="display:none">genConv</caption>
+ * <thead>
  * <tr><th style="vertical-align:bottom"> Conversion
  *     <th style="vertical-align:bottom"> Argument Category
  *     <th style="vertical-align:bottom"> Description
- *
+ * </thead>
+ * <tbody>
  * <tr><td style="vertical-align:top"> {@code 'b'}, {@code 'B'}
  *     <td style="vertical-align:top"> general
  *     <td> If the argument <i>arg</i> is {@code null}, then the result is
@@ -365,6 +367,7 @@
  *     <td style="vertical-align:top"> line separator
  *     <td> The result is the platform-specific line separator
  *
+ * </tbody>
  * </table>
  *
  * <p> Any characters not explicitly defined as conversions are illegal and are
@@ -381,8 +384,9 @@
  *
  * <p> The following conversion characters are used for formatting times:
  *
- * <table cellpadding=5 summary="time">
- *
+ * <table class="striped">
+ * <caption style="display:none">time</caption>
+ * <tbody>
  * <tr><td style="vertical-align:top"> {@code 'H'}
  *     <td> Hour of the day for the 24-hour clock, formatted as two digits with
  *     a leading zero as necessary i.e. {@code 00 - 23}.
@@ -446,11 +450,14 @@
  *     1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
  *     {@code Long.MAX_VALUE}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following conversion characters are used for formatting dates:
  *
- * <table cellpadding=5 summary="date">
+ * <table class="striped">
+ * <caption style="display:none">date</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code 'B'}
  *     <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
@@ -502,12 +509,15 @@
  * <tr><td style="vertical-align:top">{@code 'e'}
  *     <td> Day of month, formatted as two digits, i.e. {@code 1 - 31}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following conversion characters are used for formatting common
  * date/time compositions.
  *
- * <table cellpadding=5 summary="composites">
+ * <table class="striped">
+ * <caption style="display:none">composites</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code 'R'}
  *     <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
@@ -531,6 +541,7 @@
  *     <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
  *     e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
  *
+ * </tbody>
  * </table>
  *
  * <p> Any characters not explicitly defined as date/time conversion suffixes
@@ -541,14 +552,16 @@
  * <p> The following table summarizes the supported flags.  <i>y</i> means the
  * flag is supported for the indicated argument types.
  *
- * <table cellpadding=5 summary="genConv">
- *
+ * <table class="striped">
+ * <caption style="display:none">genConv</caption>
+ * <thead>
  * <tr><th style="vertical-align:bottom"> Flag <th style="vertical-align:bottom"> General
  *     <th style="vertical-align:bottom"> Character <th style="vertical-align:bottom"> Integral
  *     <th style="vertical-align:bottom"> Floating Point
  *     <th style="vertical-align:bottom"> Date/Time
  *     <th style="vertical-align:bottom"> Description
- *
+ * </thead>
+ * <tbody>
  * <tr><td> '-' <td style="text-align:center; vertical-align:top"> y
  *     <td style="text-align:center; vertical-align:top"> y
  *     <td style="text-align:center; vertical-align:top"> y
@@ -599,6 +612,7 @@
  *     <td style="text-align:center"> -
  *     <td> The result will enclose negative numbers in parentheses
  *
+ * </tbody>
  * </table>
  *
  * <p> <sup>1</sup> Depends on the definition of {@link Formattable}.
@@ -705,7 +719,9 @@
  *
  * <p> The following general conversions may be applied to any argument type:
  *
- * <table cellpadding=5 summary="dgConv">
+ * <table class="striped">
+ * <caption style="display:none">dgConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'b'}
  *     <td style="vertical-align:top"> <code>'&#92;u0062'</code>
@@ -756,11 +772,14 @@
  *     <td style="vertical-align:top"> <code>'&#92;u0053'</code>
  *     <td> The upper-case variant of {@code 's'}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following <a id="dFlags">flags</a> apply to general conversions:
  *
- * <table cellpadding=5 summary="dFlags">
+ * <table class="striped">
+ * <caption style="display:none">dFlags</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code '-'}
  *     <td style="vertical-align:top"> <code>'&#92;u002d'</code>
@@ -775,6 +794,7 @@
  *     <td> Requires the output use an alternate form.  The definition of the
  *     form is specified by the conversion.
  *
+ * </tbody>
  * </table>
  *
  * <p> The <a id="genWidth">width</a> is the minimum number of characters to
@@ -801,7 +821,9 @@
  * {@code false} then an {@link IllegalFormatCodePointException} will be
  * thrown.
  *
- * <table cellpadding=5 summary="charConv">
+ * <table class="striped">
+ * <caption style="display:none">charConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'c'}
  *     <td style="vertical-align:top"> <code>'&#92;u0063'</code>
@@ -817,6 +839,7 @@
  *     <td style="vertical-align:top"> <code>'&#92;u0043'</code>
  *     <td> The upper-case variant of {@code 'c'}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The {@code '-'} flag defined for <a href="#dFlags">General
@@ -902,7 +925,9 @@
  * {@code short}, {@link Short}, {@code int} and {@link Integer},
  * {@code long}, and {@link Long}.
  *
- * <table cellpadding=5 summary="IntConv">
+ * <table class="striped">
+ * <caption style="display:none">IntConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'd'}
  *     <td style="vertical-align:top"> <code>'&#92;u0064'</code>
@@ -968,6 +993,7 @@
  *     all hexadecimal digits {@code 'a'} - {@code 'f'}
  *     (<code>'&#92;u0061'</code> -  <code>'&#92;u0066'</code>).
  *
+ * </tbody>
  * </table>
  *
  * <p> If the conversion is {@code 'o'}, {@code 'x'}, or {@code 'X'} and
@@ -982,7 +1008,9 @@
  * <p> The following <a id="intFlags">flags</a> apply to numeric integral
  * conversions:
  *
- * <table cellpadding=5 summary="intFlags">
+ * <table class="striped">
+ * <caption style="display:none">intFlags</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code '+'}
  *     <td style="vertical-align:top"> <code>'&#92;u002b'</code>
@@ -1025,6 +1053,7 @@
  *     (<code>'&#92;u0028'</code>) and append a {@code ')'}
  *     (<code>'&#92;u0029'</code>) to negative values.
  *
+ * </tbody>
  * </table>
  *
  * <p> If no <a id="intdFlags">flags</a> are given the default formatting is
@@ -1060,7 +1089,9 @@
  * <p> The following conversions may be applied to {@link
  * java.math.BigInteger}.
  *
- * <table cellpadding=5 summary="BIntConv">
+ * <table class="striped">
+ * <caption style="display:none">bIntConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'd'}
  *     <td style="vertical-align:top"> <code>'&#92;u0064'</code>
@@ -1125,6 +1156,7 @@
  *     all hexadecimal digits {@code 'a'} - {@code 'f'}
  *     (<code>'&#92;u0061'</code> - <code>'&#92;u0066'</code>).
  *
+ * </tbody>
  * </table>
  *
  * <p> If the conversion is {@code 'o'}, {@code 'x'}, or {@code 'X'} and
@@ -1154,7 +1186,9 @@
  * <p> The following conversions may be applied to {@code float}, {@link
  * Float}, {@code double} and {@link Double}.
  *
- * <table cellpadding=5 summary="floatConv">
+ * <table class="striped">
+ * <caption style="display:none">floatConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'e'}
  *     <td style="vertical-align:top"> <code>'&#92;u0065'</code>
@@ -1331,6 +1365,7 @@
  *     (<code>'&#92;u0070'</code> and all hexadecimal digits {@code 'a'} -
  *     {@code 'f'} (<code>'&#92;u0061'</code> - <code>'&#92;u0066'</code>).
  *
+ * </tbody>
  * </table>
  *
  * <p> All <a href="#intFlags">flags</a> defined for Byte, Short, Integer, and
@@ -1388,7 +1423,9 @@
  * <p> The following conversions may be applied {@link java.math.BigDecimal
  * BigDecimal}.
  *
- * <table cellpadding=5 summary="floatConv">
+ * <table class="striped">
+ * <caption style="display:none">floatConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'e'}
  *     <td style="vertical-align:top"> <code>'&#92;u0065'</code>
@@ -1492,6 +1529,7 @@
  *     For a canonical representation of the value, use {@link
  *     BigDecimal#toString()}.
  *
+ * </tbody>
  * </table>
  *
  * <p> All <a href="#intFlags">flags</a> defined for Byte, Short, Integer, and
@@ -1512,7 +1550,9 @@
  * <p> This conversion may be applied to {@code long}, {@link Long}, {@link
  * Calendar}, {@link Date} and {@link TemporalAccessor TemporalAccessor}
  *
- * <table cellpadding=5 summary="DTConv">
+ * <table class="striped">
+ * <caption style="display:none">DTConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 't'}
  *     <td style="vertical-align:top"> <code>'&#92;u0074'</code>
@@ -1521,6 +1561,7 @@
  *     <td style="vertical-align:top"> <code>'&#92;u0054'</code>
  *     <td> The upper-case variant of {@code 't'}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following date and time conversion character suffixes are defined
@@ -1532,7 +1573,9 @@
  *
  * <p> The following conversion characters are used for formatting times:
  *
- * <table cellpadding=5 summary="time">
+ * <table class="striped">
+ * <caption style="display:none">time</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top"> {@code 'H'}
  *     <td style="vertical-align:top"> <code>'&#92;u0048'</code>
@@ -1620,11 +1663,14 @@
  *     {@code Long.MAX_VALUE}. The precision of this value is limited by
  *     the resolution of the underlying operating system or hardware.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following conversion characters are used for formatting dates:
  *
- * <table cellpadding=5 summary="date">
+ * <table class="striped">
+ * <caption style="display:none">date</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code 'B'}
  *     <td style="vertical-align:top"> <code>'&#92;u0042'</code>
@@ -1692,12 +1738,15 @@
  *     <td> Day of month, formatted as two digits, i.e. {@code 1 - 31} where
  *     "{@code 1}" is the first day of the month.
  *
+ * </tbody>
  * </table>
  *
  * <p> The following conversion characters are used for formatting common
  * date/time compositions.
  *
- * <table cellpadding=5 summary="composites">
+ * <table class="striped">
+ * <caption style="display:none">composites</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code 'R'}
  *     <td style="vertical-align:top"> <code>'&#92;u0052'</code>
@@ -1727,6 +1776,7 @@
  *     <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
  *     e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
  *
+ * </tbody>
  * </table>
  *
  * <p> The {@code '-'} flag defined for <a href="#dFlags">General
@@ -1748,7 +1798,9 @@
  *
  * <p> The conversion does not correspond to any argument.
  *
- * <table cellpadding=5 summary="DTConv">
+ * <table class="striped">
+ * <caption style="display:none">DTConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code '%'}
  *     <td> The result is a literal {@code '%'} (<code>'&#92;u0025'</code>)
@@ -1767,18 +1819,22 @@
  * <p> The precision is not applicable.  If the precision is specified an
  * {@link IllegalFormatPrecisionException} will be thrown.
  *
+ * </tbody>
  * </table>
  *
  * <h4><a id="dls">Line Separator</a></h4>
  *
  * <p> The conversion does not correspond to any argument.
  *
- * <table cellpadding=5 summary="DTConv">
+ * <table class="striped">
+ * <caption style="display:none">DTConv</caption>
+ * <tbody>
  *
  * <tr><td style="vertical-align:top">{@code 'n'}
  *     <td> the platform-specific line separator as returned by {@link
  *     System#lineSeparator()}.
  *
+ * </tbody>
  * </table>
  *
  * <p> Flags, width, and precision are not applicable.  If any are provided an
--- a/jdk/src/java.base/share/classes/java/util/GregorianCalendar.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/GregorianCalendar.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -159,88 +159,89 @@
  * undefined. <code>GregorianCalendar</code> uses the following
  * default value for each calendar field if its value is undefined.
  *
- * <table cellpadding="0" cellspacing="3" border="0"
- *        summary="GregorianCalendar default field values"
- *        style="text-align: left; width: 66%;">
+ * <table class="striped" style="text-align: left; width: 66%;">
+ * <caption style="display:none">GregorianCalendar default field values</caption>
+ *   <thead>
+ *     <tr>
+ *       <th>
+ *          Field
+ *       </th>
+ *       <th>
+            Default Value
+ *       </th>
+ *     </tr>
+ *   </thead>
  *   <tbody>
  *     <tr>
- *       <th style="vertical-align: top; background-color: rgb(204, 204, 255);
- *           text-align: center;">Field<br>
- *       </th>
- *       <th style="vertical-align: top; background-color: rgb(204, 204, 255);
- *           text-align: center;">Default Value<br>
- *       </th>
- *     </tr>
- *     <tr>
- *       <td style="vertical-align: middle;">
- *              <code>ERA<br></code>
+ *       <td>
+ *              <code>ERA</code>
  *       </td>
- *       <td style="vertical-align: middle;">
- *              <code>AD<br></code>
+ *       <td>
+ *              <code>AD</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: middle; background-color: rgb(238, 238, 255);">
- *              <code>YEAR<br></code>
+ *       <td>
+ *              <code>YEAR</code>
  *       </td>
- *       <td style="vertical-align: middle; background-color: rgb(238, 238, 255);">
- *              <code>1970<br></code>
+ *       <td>
+ *              <code>1970</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: middle;">
- *              <code>MONTH<br></code>
+ *       <td>
+ *              <code>MONTH</code>
  *       </td>
- *       <td style="vertical-align: middle;">
- *              <code>JANUARY<br></code>
+ *       <td>
+ *              <code>JANUARY</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: top; background-color: rgb(238, 238, 255);">
- *              <code>DAY_OF_MONTH<br></code>
+ *       <td>
+ *              <code>DAY_OF_MONTH</code>
  *       </td>
- *       <td style="vertical-align: top; background-color: rgb(238, 238, 255);">
- *              <code>1<br></code>
+ *       <td>
+ *              <code>1</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: middle;">
- *              <code>DAY_OF_WEEK<br></code>
+ *       <td>
+ *              <code>DAY_OF_WEEK</code>
  *       </td>
- *       <td style="vertical-align: middle;">
- *              <code>the first day of week<br></code>
+ *       <td>
+ *              <code>the first day of week</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: top; background-color: rgb(238, 238, 255);">
- *              <code>WEEK_OF_MONTH<br></code>
+ *       <td>
+ *              <code>WEEK_OF_MONTH</code>
  *       </td>
- *       <td style="vertical-align: top; background-color: rgb(238, 238, 255);">
- *              <code>0<br></code>
+ *       <td>
+ *              <code>0</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: top;">
- *              <code>DAY_OF_WEEK_IN_MONTH<br></code>
+ *       <td>
+ *              <code>DAY_OF_WEEK_IN_MONTH</code>
  *       </td>
- *       <td style="vertical-align: top;">
- *              <code>1<br></code>
+ *       <td>
+ *              <code>1</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: middle; background-color: rgb(238, 238, 255);">
- *              <code>AM_PM<br></code>
+ *       <td>
+ *              <code>AM_PM</code>
  *       </td>
- *       <td style="vertical-align: middle; background-color: rgb(238, 238, 255);">
- *              <code>AM<br></code>
+ *       <td>
+ *              <code>AM</code>
  *       </td>
  *     </tr>
  *     <tr>
- *       <td style="vertical-align: middle;">
- *              <code>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND<br></code>
+ *       <td>
+ *              <code>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND</code>
  *       </td>
- *       <td style="vertical-align: middle;">
- *              <code>0<br></code>
+ *       <td>
+ *              <code>0</code>
  *       </td>
  *     </tr>
  *   </tbody>
--- a/jdk/src/java.base/share/classes/java/util/Locale.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Locale.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1587,44 +1587,50 @@
      *
      * <p>Grandfathered tags with canonical replacements are as follows:
      *
-     * <table summary="Grandfathered tags with canonical replacements">
+     * <table class="striped">
+     * <caption style="display:none">Grandfathered tags with canonical replacements</caption>
+     * <thead style="text-align:center">
+     * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">modern replacement</th></tr>
+     * </thead>
      * <tbody style="text-align:center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>modern replacement</th></tr>
-     * <tr><td>art-lojban</td><td>&nbsp;</td><td>jbo</td></tr>
-     * <tr><td>i-ami</td><td>&nbsp;</td><td>ami</td></tr>
-     * <tr><td>i-bnn</td><td>&nbsp;</td><td>bnn</td></tr>
-     * <tr><td>i-hak</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>i-klingon</td><td>&nbsp;</td><td>tlh</td></tr>
-     * <tr><td>i-lux</td><td>&nbsp;</td><td>lb</td></tr>
-     * <tr><td>i-navajo</td><td>&nbsp;</td><td>nv</td></tr>
-     * <tr><td>i-pwn</td><td>&nbsp;</td><td>pwn</td></tr>
-     * <tr><td>i-tao</td><td>&nbsp;</td><td>tao</td></tr>
-     * <tr><td>i-tay</td><td>&nbsp;</td><td>tay</td></tr>
-     * <tr><td>i-tsu</td><td>&nbsp;</td><td>tsu</td></tr>
-     * <tr><td>no-bok</td><td>&nbsp;</td><td>nb</td></tr>
-     * <tr><td>no-nyn</td><td>&nbsp;</td><td>nn</td></tr>
-     * <tr><td>sgn-BE-FR</td><td>&nbsp;</td><td>sfb</td></tr>
-     * <tr><td>sgn-BE-NL</td><td>&nbsp;</td><td>vgt</td></tr>
-     * <tr><td>sgn-CH-DE</td><td>&nbsp;</td><td>sgg</td></tr>
-     * <tr><td>zh-guoyu</td><td>&nbsp;</td><td>cmn</td></tr>
-     * <tr><td>zh-hakka</td><td>&nbsp;</td><td>hak</td></tr>
-     * <tr><td>zh-min-nan</td><td>&nbsp;</td><td>nan</td></tr>
-     * <tr><td>zh-xiang</td><td>&nbsp;</td><td>hsn</td></tr>
+     * <tr><td>art-lojban</td><td>jbo</td></tr>
+     * <tr><td>i-ami</td><td>ami</td></tr>
+     * <tr><td>i-bnn</td><td>bnn</td></tr>
+     * <tr><td>i-hak</td><td>hak</td></tr>
+     * <tr><td>i-klingon</td><td>tlh</td></tr>
+     * <tr><td>i-lux</td><td>lb</td></tr>
+     * <tr><td>i-navajo</td><td>nv</td></tr>
+     * <tr><td>i-pwn</td><td>pwn</td></tr>
+     * <tr><td>i-tao</td><td>tao</td></tr>
+     * <tr><td>i-tay</td><td>tay</td></tr>
+     * <tr><td>i-tsu</td><td>tsu</td></tr>
+     * <tr><td>no-bok</td><td>nb</td></tr>
+     * <tr><td>no-nyn</td><td>nn</td></tr>
+     * <tr><td>sgn-BE-FR</td><td>sfb</td></tr>
+     * <tr><td>sgn-BE-NL</td><td>vgt</td></tr>
+     * <tr><td>sgn-CH-DE</td><td>sgg</td></tr>
+     * <tr><td>zh-guoyu</td><td>cmn</td></tr>
+     * <tr><td>zh-hakka</td><td>hak</td></tr>
+     * <tr><td>zh-min-nan</td><td>nan</td></tr>
+     * <tr><td>zh-xiang</td><td>hsn</td></tr>
      * </tbody>
      * </table>
      *
      * <p>Grandfathered tags with no modern replacement will be
      * converted as follows:
      *
-     * <table summary="Grandfathered tags with no modern replacement">
+     * <table class="striped">
+     * <caption style="display:none">Grandfathered tags with no modern replacement</caption>
+     * <thead style="text-align:center">
+     * <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">converts to</th></tr>
+     * </thead>
      * <tbody style="text-align:center">
-     * <tr><th>grandfathered tag</th><th>&nbsp;</th><th>converts to</th></tr>
-     * <tr><td>cel-gaulish</td><td>&nbsp;</td><td>xtg-x-cel-gaulish</td></tr>
-     * <tr><td>en-GB-oed</td><td>&nbsp;</td><td>en-GB-x-oed</td></tr>
-     * <tr><td>i-default</td><td>&nbsp;</td><td>en-x-i-default</td></tr>
-     * <tr><td>i-enochian</td><td>&nbsp;</td><td>und-x-i-enochian</td></tr>
-     * <tr><td>i-mingo</td><td>&nbsp;</td><td>see-x-i-mingo</td></tr>
-     * <tr><td>zh-min</td><td>&nbsp;</td><td>nan-x-zh-min</td></tr>
+     * <tr><td>cel-gaulish</td><td>xtg-x-cel-gaulish</td></tr>
+     * <tr><td>en-GB-oed</td><td>en-GB-x-oed</td></tr>
+     * <tr><td>i-default</td><td>en-x-i-default</td></tr>
+     * <tr><td>i-enochian</td><td>und-x-i-enochian</td></tr>
+     * <tr><td>i-mingo</td><td>see-x-i-mingo</td></tr>
+     * <tr><td>zh-min</td><td>nan-x-zh-min</td></tr>
      * </tbody>
      * </table>
      *
@@ -2767,12 +2773,16 @@
      *
      * The filtering method will behave as follows:
      *
-     * <table cellpadding=2 summary="Filtering method behavior">
+     * <table class="striped">
+     * <caption>Filtering method behavior</caption>
+     * <thead>
      * <tr>
      * <th>Filtering Mode</th>
      * <th>Language Priority List: {@code "de-DE"}</th>
      * <th>Language Priority List: {@code "de-*-DE"}</th>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      * <td style="vertical-align:top">
      * {@link FilteringMode#AUTOSELECT_FILTERING AUTOSELECT_FILTERING}
@@ -2832,6 +2842,7 @@
      * not a valid basic language range.
      * </td>
      * </tr>
+     * </tbody>
      * </table>
      *
      * @see #filter(List, Collection, FilteringMode)
--- a/jdk/src/java.base/share/classes/java/util/Queue.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Queue.java	Wed Jul 05 23:30:30 2017 +0200
@@ -47,7 +47,7 @@
  * implementations; in most implementations, insert operations cannot
  * fail.
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Summary of Queue methods</caption>
  *  <tr>
  *    <td></td>
--- a/jdk/src/java.base/share/classes/java/util/ResourceBundle.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/ResourceBundle.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1222,12 +1222,15 @@
      * <p>Calling <code>getBundle</code> with the locale arguments below will
      * instantiate resource bundles as follows:
      *
-     * <table summary="getBundle() locale to resource bundle mapping">
+     * <table class="borderless">
+     * <caption style="display:none">getBundle() locale to resource bundle mapping</caption>
+     * <tbody>
      * <tr><td>Locale("fr", "CH")</td><td>MyResources_fr_CH.class, parent MyResources_fr.properties, parent MyResources.class</td></tr>
      * <tr><td>Locale("fr", "FR")</td><td>MyResources_fr.properties, parent MyResources.class</td></tr>
      * <tr><td>Locale("de", "DE")</td><td>MyResources_en.properties, parent MyResources.class</td></tr>
      * <tr><td>Locale("en", "US")</td><td>MyResources_en.properties, parent MyResources.class</td></tr>
      * <tr><td>Locale("es", "ES")</td><td>MyResources_es_ES.class, parent MyResources.class</td></tr>
+     * </tbody>
      * </table>
      *
      * <p>The file MyResources_fr_CH.properties is never used because it is
@@ -1311,9 +1314,9 @@
      * sequence of locale-format combinations to be used to call
      * <code>control.newBundle</code>.
      *
-     * <table style="width: 50%; text-align: left; margin-left: 40px;"
-     *  border="0" cellpadding="2" cellspacing="2" summary="locale-format combinations for newBundle">
-     * <tbody>
+     * <table class=striped style="width: 50%; text-align: left; margin-left: 40px;">
+     * <caption style="display:none">locale-format combinations for newBundle</caption>
+     * <thead>
      * <tr>
      * <td
      * style="vertical-align: top; text-align: left; font-weight: bold; width: 50%;"><code>Locale</code><br>
@@ -1322,6 +1325,8 @@
      * style="vertical-align: top; text-align: left; font-weight: bold; width: 50%;"><code>format</code><br>
      * </td>
      * </tr>
+     * </thead>
+     * <tbody>
      * <tr>
      * <td style="vertical-align: top; width: 50%;"><code>Locale("de", "DE")</code><br>
      * </td>
--- a/jdk/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/BlockingDeque.java	Wed Jul 05 23:30:30 2017 +0200
@@ -53,7 +53,7 @@
  * and the fourth blocks for only a given maximum time limit before giving
  * up.  These methods are summarized in the following table:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Summary of BlockingDeque methods</caption>
  *  <tr>
  *    <td style="text-align:center" COLSPAN = 5> <b>First Element (Head)</b></td>
@@ -128,7 +128,7 @@
  * {@code BlockingQueue} interface are precisely equivalent to
  * {@code BlockingDeque} methods as indicated in the following table:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Comparison of BlockingQueue and BlockingDeque methods</caption>
  *  <tr>
  *    <td style="text-align:center"> <b>{@code BlockingQueue} Method</b></td>
--- a/jdk/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/BlockingQueue.java	Wed Jul 05 23:30:30 2017 +0200
@@ -53,7 +53,7 @@
  * and the fourth blocks for only a given maximum time limit before giving
  * up.  These methods are summarized in the following table:
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Summary of BlockingQueue methods</caption>
  *  <tr>
  *    <td></td>
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java	Wed Jul 05 23:30:30 2017 +0200
@@ -109,7 +109,7 @@
  * async event-style tasks that are not usually joined, in which case
  * there is little difference among choice of methods.
  *
- * <table BORDER CELLPADDING=3 CELLSPACING=1>
+ * <table class="plain">
  * <caption>Summary of task execution methods</caption>
  *  <tr>
  *    <td></td>
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java	Wed Jul 05 23:30:30 2017 +0200
@@ -49,6 +49,7 @@
 import java.util.stream.LongStream;
 import java.util.stream.StreamSupport;
 import jdk.internal.misc.Unsafe;
+import jdk.internal.misc.VM;
 
 /**
  * A random number generator isolated to the current thread.  Like the
@@ -1093,11 +1094,8 @@
 
     // at end of <clinit> to survive static initialization circularity
     static {
-        if (java.security.AccessController.doPrivileged(
-            new java.security.PrivilegedAction<>() {
-                public Boolean run() {
-                    return Boolean.getBoolean("java.util.secureRandomSeed");
-                }})) {
+        String sec = VM.getSavedProperty("java.util.secureRandomSeed");
+        if (Boolean.parseBoolean(sec)) {
             byte[] seedBytes = java.security.SecureRandom.getSeed(8);
             long s = (long)seedBytes[0] & 0xffL;
             for (int i = 1; i < 8; ++i)
--- a/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/regex/Pattern.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -79,13 +79,15 @@
  *
  * <h3><a id="sum">Summary of regular-expression constructs</a></h3>
  *
- * <table border="0" cellpadding="1" cellspacing="0"
- *  summary="Regular expression constructs, and what they match">
- *
+ * <table class="borderless">
+ * <caption style="display:none">Regular expression constructs, and what they match</caption>
+ * <thead>
  * <tr style="text-align:left">
  * <th style="text-align:left" id="construct">Construct</th>
  * <th style="text-align:left" id="matches">Matches</th>
  * </tr>
+ * </thead>
+ * <tbody>
  *
  * <tr><th>&nbsp;</th></tr>
  * <tr style="text-align:left"><th colspan="2" id="characters">Characters</th></tr>
@@ -383,6 +385,7 @@
  * <tr><td style="vertical-align:top" headers="construct special">{@code (?>}<i>X</i>{@code )}</td>
  *     <td headers="matches"><i>X</i>, as an independent, non-capturing group</td></tr>
  *
+ * </tbody>
  * </table>
  *
  * <hr>
@@ -429,8 +432,9 @@
  *    <p> The precedence of character-class operators is as follows, from
  *    highest to lowest:
  *
- *    <blockquote><table border="0" cellpadding="1" cellspacing="0"
- *                 summary="Precedence of character class operators.">
+ *    <blockquote><table>
+ *      <caption style="display:none">Precedence of character class operators.</caption>
+ *      <tbody>
  *      <tr><th>1&nbsp;&nbsp;&nbsp;&nbsp;</th>
  *        <td>Literal escape&nbsp;&nbsp;&nbsp;&nbsp;</td>
  *        <td>{@code \x}</td></tr>
@@ -446,6 +450,7 @@
  *      <tr><th>5&nbsp;&nbsp;&nbsp;&nbsp;</th>
  *        <td>Intersection</td>
  *        <td>{@code [a-z&&[aeiou]]}</td></tr>
+ *      </tbody>
  *    </table></blockquote>
  *
  *    <p> Note that a different set of metacharacters are in effect inside
@@ -496,7 +501,9 @@
  * left to right.  In the expression {@code ((A)(B(C)))}, for example, there
  * are four such groups: </p>
  *
- * <blockquote><table cellpadding=1 cellspacing=0 summary="Capturing group numberings">
+ * <blockquote><table>
+ * <caption style="display:none">Capturing group numberings</caption>
+ * <tbody>
  * <tr><th>1&nbsp;&nbsp;&nbsp;&nbsp;</th>
  *     <td>{@code ((A)(B(C)))}</td></tr>
  * <tr><th>2&nbsp;&nbsp;&nbsp;&nbsp;</th>
@@ -505,6 +512,7 @@
  *     <td>{@code (B(C))}</td></tr>
  * <tr><th>4&nbsp;&nbsp;&nbsp;&nbsp;</th>
  *     <td>{@code (C)}</td></tr>
+ * </tbody>
  * </table></blockquote>
  *
  * <p> Group zero always stands for the entire expression.
@@ -641,12 +649,15 @@
  * of <a href="http://www.unicode.org/reports/tr18/"><i>Unicode Regular Expression
  * </i></a>, when {@link #UNICODE_CHARACTER_CLASS} flag is specified.
  *
- * <table border="0" cellpadding="1" cellspacing="0"
- *  summary="predefined and posix character classes in Unicode mode">
+ * <table>
+ * <caption style="display:none">predefined and posix character classes in Unicode mode</caption>
+ * <thead>
  * <tr style="text-align:left">
  * <th style="text-align:left" id="predef_classes">Classes</th>
  * <th style="text-align:left" id="predef_matches">Matches</th>
- *</tr>
+ * </tr>
+ * </thead>
+ * <tbody>
  * <tr><td>{@code \p{Lower}}</td>
  *     <td>A lowercase character:{@code \p{IsLowercase}}</td></tr>
  * <tr><td>{@code \p{Upper}}</td>
@@ -685,6 +696,7 @@
  *     <td>A word character: {@code [\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}\p{IsJoin_Control}]}</td></tr>
  * <tr><td>{@code \W}</td>
  *     <td>A non-word character: {@code [^\w]}</td></tr>
+ * </tbody>
  * </table>
  * <p>
  * <a id="jcc">
@@ -1207,11 +1219,14 @@
      * <p> The input {@code "boo:and:foo"}, for example, yields the following
      * results with these parameters:
      *
-     * <blockquote><table cellpadding=1 cellspacing=0
-     *              summary="Split examples showing regex, limit, and result">
+     * <blockquote><table>
+     * <caption>Split examples showing regex, limit, and result</caption>
+     * <thead>
      * <tr><th style="text-align:left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
      *     <th style="text-align:left"><i>Limit&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
      *     <th style="text-align:left"><i>Result&nbsp;&nbsp;&nbsp;&nbsp;</i></th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td style="text-align:center">:</td>
      *     <td style="text-align:center">2</td>
      *     <td>{@code { "boo", "and:foo" }}</td></tr>
@@ -1230,6 +1245,7 @@
      * <tr><td style="text-align:center">o</td>
      *     <td style="text-align:center">0</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
+     * </tbody>
      * </table></blockquote>
      *
      * @param  input
@@ -1294,14 +1310,18 @@
      * <p> The input {@code "boo:and:foo"}, for example, yields the following
      * results with these expressions:
      *
-     * <blockquote><table cellpadding=1 cellspacing=0
-     *              summary="Split examples showing regex and result">
+     * <blockquote><table>
+     * <caption style="display:none">Split examples showing regex and result</caption>
+     * <thead>
      * <tr><th style="text-align:left"><i>Regex&nbsp;&nbsp;&nbsp;&nbsp;</i></th>
      *     <th style="text-align:left"><i>Result</i></th></tr>
+     * </thead>
+     * <tbody>
      * <tr><td style="text-align:center">:</td>
      *     <td>{@code { "boo", "and", "foo" }}</td></tr>
      * <tr><td style="text-align:center">o</td>
      *     <td>{@code { "b", "", ":and:f" }}</td></tr>
+     * </tbody>
      * </table></blockquote>
      *
      *
--- a/jdk/src/java.base/share/classes/java/util/spi/CalendarNameProvider.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/spi/CalendarNameProvider.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,12 +46,16 @@
  * Calendar}. The following are calendar-common fields and their values to be
  * supported for each calendar system.
  *
- * <table style="border-bottom:1px solid" border="1" cellpadding="3" cellspacing="0" summary="Field values">
+ * <table class="plain" style="border-bottom:1px solid">
+ * <caption style="display:none">Field values</caption>
+ * <thead>
  *   <tr>
  *     <th>Field</th>
  *     <th>Value</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td valign="top">{@link Calendar#MONTH}</td>
  *     <td valign="top">{@link Calendar#JANUARY} to {@link Calendar#UNDECIMBER}</td>
@@ -73,17 +77,22 @@
  *     <td valign="top">{@link Calendar#AM} to {@link Calendar#PM}</td>
  *     <td>0 - AM, 1 - PM</td>
  *   </tr>
+ * </tbody>
  * </table>
  *
  * <p style="margin-top:20px">The following are calendar-specific fields and their values to be supported.
  *
- * <table style="border-bottom:1px solid" border="1" cellpadding="3" cellspacing="0" summary="Calendar type and field values">
+ * <table class="plain" style="border-bottom:1px solid">
+ * <caption style="display:none">Calendar type and field values</caption>
+ * <thead>
  *   <tr>
  *     <th>Calendar Type</th>
  *     <th>Field</th>
  *     <th>Value</th>
  *     <th>Description</th>
  *   </tr>
+ * </thead>
+ * <tbody>
  *   <tr>
  *     <td rowspan="2" valign="top">{@code "gregory"}</td>
  *     <td rowspan="2" valign="top">{@link Calendar#ERA}</td>
@@ -154,6 +163,7 @@
  *     <td>1</td>
  *     <td>Anno Hijrah (AH)</td>
  *   </tr>
+ * </tbody>
  * </table>
  *
  * <p>Calendar field value names for {@code "gregory"} must be consistent with
--- a/jdk/src/java.base/share/classes/java/util/stream/StreamOpFlag.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/java/util/stream/StreamOpFlag.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
  * contexts:
  *
  * <div>
- * <table>
+ * <table class="borderless">
  *   <caption>Type Characteristics</caption>
  *   <thead class="tableSubHeadingColor">
  *     <tr>
--- a/jdk/src/java.base/share/classes/javax/crypto/Cipher.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/Cipher.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -150,9 +150,9 @@
  * <li>{@code RSA/ECB/OAEPWithSHA-256AndMGF1Padding} (1024, 2048)</li>
  * </ul>
  * These transformations are described in the
- * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
+ * <a href="{@docRoot}/../specs/security/standard-names.html#cipher-algorithm-names">
  * Cipher section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other transformations are supported.
  *
@@ -489,8 +489,8 @@
      * @param transformation the name of the transformation, e.g.,
      * <i>DES/CBC/PKCS5Padding</i>.
      * See the Cipher section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#cipher-algorithm-names">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard transformation names.
      *
      * @return a cipher that implements the requested transformation
@@ -567,8 +567,8 @@
      * @param transformation the name of the transformation,
      * e.g., <i>DES/CBC/PKCS5Padding</i>.
      * See the Cipher section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#cipher-algorithm-names">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard transformation names.
      *
      * @param provider the name of the provider.
@@ -627,8 +627,8 @@
      * @param transformation the name of the transformation,
      * e.g., <i>DES/CBC/PKCS5Padding</i>.
      * See the Cipher section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Cipher">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#cipher-algorithm-names">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard transformation names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/javax/crypto/ExemptionMechanism.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/ExemptionMechanism.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -125,8 +125,8 @@
      * mechanism.
      * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#exemption-mechanisms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard exemption mechanism names.
      *
      * @return the new {@code ExemptionMechanism} object
@@ -164,8 +164,8 @@
      * @param algorithm the standard name of the requested exemption mechanism.
      * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#exemption-mechanisms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard exemption mechanism names.
      *
      * @param provider the name of the provider.
@@ -208,8 +208,8 @@
      * @param algorithm the standard name of the requested exemption mechanism.
      * See the ExemptionMechanism section in the
      * <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Exemption">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#exemption-mechanisms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard exemption mechanism names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/KeyAgreement.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,9 +60,9 @@
  * <li>{@code DiffieHellman}</li>
  * </ul>
  * This algorithm is described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
+ * "{@docRoot}/../specs/security/standard-names.html#keyagreement-algorithms">
  * KeyAgreement section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -161,8 +161,8 @@
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
      * See the KeyAgreement section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyagreement-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code KeyAgreement} object
@@ -208,8 +208,8 @@
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
      * See the KeyAgreement section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyagreement-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -252,8 +252,8 @@
      * @param algorithm the standard name of the requested key agreement
      * algorithm.
      * See the KeyAgreement section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyAgreement">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keyagreement-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/KeyGenerator.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -95,9 +95,9 @@
  * <li>{@code HmacSHA256}</li>
  * </ul>
  * These algorithms are described in the <a href=
- * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
+ * "{@docRoot}/../specs/security/standard-names.html#keygenerator-algorithms">
  * KeyGenerator section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -216,8 +216,8 @@
      *
      * @param algorithm the standard name of the requested key algorithm.
      * See the KeyGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keygenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code KeyGenerator} object
@@ -250,8 +250,8 @@
      *
      * @param algorithm the standard name of the requested key algorithm.
      * See the KeyGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keygenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -293,8 +293,8 @@
      *
      * @param algorithm the standard name of the requested key algorithm.
      * See the KeyGenerator section in the <a href=
-     * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     * "{@docRoot}/../specs/security/standard-names.html#keygenerator-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/javax/crypto/Mac.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/Mac.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,9 +61,9 @@
  * <li>{@code HmacSHA256}</li>
  * </ul>
  * These algorithms are described in the
- * <a href="{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
+ * <a href="{@docRoot}/../specs/security/standard-names.html#mac-algorithms">
  * Mac section</a> of the
- * Java Cryptography Architecture Standard Algorithm Name Documentation.
+ * Java Security Standard Algorithm Names Specification.
  * Consult the release documentation for your implementation to see if any
  * other algorithms are supported.
  *
@@ -162,8 +162,8 @@
      *
      * @param algorithm the standard name of the requested MAC algorithm.
      * See the Mac section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#mac-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @return the new {@code Mac} object
@@ -206,8 +206,8 @@
      *
      * @param algorithm the standard name of the requested MAC algorithm.
      * See the Mac section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#mac-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the name of the provider.
@@ -247,8 +247,8 @@
      *
      * @param algorithm the standard name of the requested MAC algorithm.
      * See the Mac section in the <a href=
-     *   "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">
-     * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
+     *   "{@docRoot}/../specs/security/standard-names.html#mac-algorithms">
+     * Java Security Standard Algorithm Names Specification</a>
      * for information about standard algorithm names.
      *
      * @param provider the provider.
--- a/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java	Tue May 23 22:39:06 2017 +0000
+++ b/jdk/src/java.base/share/classes/javax/crypto/SecretKeyFactory.java	Wed Jul 05 23:30:30 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -65,9 +65,9 @@
  * <li>{@code DESede}</li>
  * </ul></