Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 10580)
@@ -1052,5 +1052,5 @@
         UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
         // Ensures caret color is the same than text foreground color, see #12257
-        // See http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
+        // See http://docs.oracle.com/javase/8/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
         for (String p : Arrays.asList(
                 "EditorPane", "FormattedTextField", "PasswordField", "TextArea", "TextField", "TextPane")) {
@@ -1337,15 +1337,5 @@
 
     /**
-     * Determines if JOSM currently runs with Java 8 or later.
-     * @return {@code true} if the current JVM is at least Java 8, {@code false} otherwise
-     * @since 7894
-     */
-    public static boolean isJava8orLater() {
-        String version = System.getProperty("java.version");
-        return version != null && !version.matches("^(1\\.)?[7].*");
-    }
-
-    /**
-     * Checks that JOSM is at least running with Java 7.
+     * Checks that JOSM is at least running with Java 8.
      * @since 7001
      */
@@ -1353,7 +1343,7 @@
         String version = System.getProperty("java.version");
         if (version != null) {
-            if (version.matches("^(1\\.)?[789].*"))
+            if (version.matches("^(1\\.)?[89].*"))
                 return;
-            if (version.matches("^(1\\.)?[56].*")) {
+            if (version.matches("^(1\\.)?[567].*")) {
                 JMultilineLabel ho = new JMultilineLabel("<html>"+
                         tr("<h2>JOSM requires Java version {0}.</h2>"+
@@ -1361,5 +1351,5 @@
                                 "You can <ul><li>update your Java (JRE) or</li>"+
                                 "<li>use an earlier (Java {2} compatible) version of JOSM.</li></ul>"+
-                                "More Info:", "7", version, "6")+"</html>");
+                                "More Info:", "8", version, "7")+"</html>");
                 JTextArea link = new JTextArea(HelpUtil.getWikiBaseHelpUrl()+"/Help/SystemRequirements");
                 link.setEditable(false);
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 10580)
@@ -1336,11 +1336,4 @@
             Utils.updateSystemProperty("jsse.enableSNIExtension", "false");
         }
-        // Workaround to fix another Java bug - The bug seems to have been fixed in Java 8, to remove during transition
-        // Force Java 7 to use old sorting algorithm of Arrays.sort (fix #8712).
-        // See Oracle bug database: https://bugs.openjdk.java.net/browse/JDK-7075600
-        // and https://bugs.openjdk.java.net/browse/JDK-6923200
-        if (getBoolean("jdk.Arrays.useLegacyMergeSort", !Version.getInstance().isLocalBuild())) {
-            Utils.updateSystemProperty("java.util.Arrays.useLegacyMergeSort", "true");
-        }
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java	(revision 10580)
@@ -46,7 +46,5 @@
 import sun.security.x509.CertificateAlgorithmId;
 import sun.security.x509.CertificateExtensions;
-import sun.security.x509.CertificateIssuerName;
 import sun.security.x509.CertificateSerialNumber;
-import sun.security.x509.CertificateSubjectName;
 import sun.security.x509.CertificateValidity;
 import sun.security.x509.CertificateVersion;
@@ -149,17 +147,6 @@
         info.set(X509CertInfo.VALIDITY, interval);
         info.set(X509CertInfo.SERIAL_NUMBER, new CertificateSerialNumber(sn));
-
-        // Change of behaviour in JDK8:
-        // https://bugs.openjdk.java.net/browse/JDK-8040820
-        // https://bugs.openjdk.java.net/browse/JDK-7198416
-        if (!Main.isJava8orLater()) {
-            // Java 7 code. To remove with Java 8 migration
-            info.set(X509CertInfo.SUBJECT, new CertificateSubjectName(owner));
-            info.set(X509CertInfo.ISSUER, new CertificateIssuerName(owner));
-        } else {
-            // Java 8 and later code
-            info.set(X509CertInfo.SUBJECT, owner);
-            info.set(X509CertInfo.ISSUER, owner);
-        }
+        info.set(X509CertInfo.SUBJECT, owner);
+        info.set(X509CertInfo.ISSUER, owner);
 
         info.set(X509CertInfo.KEY, new CertificateX509Key(pair.getPublic()));
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10580)
@@ -1026,5 +1026,5 @@
                     // This can be removed if someday Oracle fixes https://bugs.openjdk.java.net/browse/JDK-6788458
                     // CHECKSTYLE.OFF: LineLength
-                    // hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/828c4fedd29f/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
+                    // hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dc4322602480/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
                     // CHECKSTYLE.ON: LineLength
                     Image img = read(new ByteArrayInputStream(bytes), false, true);
@@ -1151,5 +1151,5 @@
                 // See #10479: for PNG files, always enforce transparency to be sure tNRS chunk is used even not in paletted mode
                 // This can be removed if someday Oracle fixes https://bugs.openjdk.java.net/browse/JDK-6788458
-                // hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/828c4fedd29f/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
+                // hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dc4322602480/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
                 img = read(path, false, true);
                 if (Main.isDebugEnabled() && isTransparencyForced(img)) {
@@ -1809,5 +1809,5 @@
      * @return the {@code TransparentColor} defined in image reader metadata, or {@code null}
      * @throws IOException if an error occurs during reading
-     * @see <a href="http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html">javax_imageio_1.0 metadata</a>
+     * @see <a href="http://docs.oracle.com/javase/8/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html">javax_imageio_1.0 metadata</a>
      * @since 7499
      */
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 10580)
@@ -73,9 +73,4 @@
             // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows.
             Main.warn("Failed to register with OSX: " + ex);
-        }
-        // Invite users to install Java 8 if they are still with Java 7
-        String java = System.getProperty("java.version");
-        if (java != null && java.startsWith("1.7")) {
-            askUpdateJava(java);
         }
     }
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 10580)
@@ -113,22 +113,5 @@
     @Override
     public void startupHook() {
-        if (isDebianOrUbuntu()) {
-            // Invite users to install Java 8 if they are still with Java 7 and using a compatible distrib (Debian >= 8 or Ubuntu >= 15.10)
-            String java = System.getProperty("java.version");
-            String os = getOSDescription();
-            if (java != null && java.startsWith("1.7") && os != null && (
-                    os.startsWith("Linux Debian GNU/Linux 8") || os.matches("^Linux Ubuntu 1[567].*"))) {
-                String url;
-                // apturl does not exist on Debian (see #8465)
-                if (os.startsWith("Linux Debian")) {
-                    url = "https://packages.debian.org/jessie-backports/openjdk-8-jre";
-                } else if (getPackageDetails("apturl") != null) {
-                    url = "apt://openjdk-8-jre";
-                } else {
-                    url = "http://packages.ubuntu.com/xenial/openjdk-8-jre";
-                }
-                askUpdateJava(java, url);
-            }
-        }
+        // Do nothing
     }
 
@@ -272,6 +255,8 @@
     public String getJavaPackageDetails() {
         String home = System.getProperty("java.home");
-        if (home.contains("java-7-openjdk") || home.contains("java-1.7.0-openjdk")) {
-            return getPackageDetails("openjdk-7-jre", "java-1_7_0-openjdk", "java-1.7.0-openjdk");
+        if (home.contains("java-8-openjdk") || home.contains("java-1.8.0-openjdk")) {
+            return getPackageDetails("openjdk-8-jre", "java-1_8_0-openjdk", "java-1.8.0-openjdk");
+        } else if (home.contains("java-9-openjdk") || home.contains("java-1.9.0-openjdk")) {
+            return getPackageDetails("openjdk-9-jre", "java-1_9_0-openjdk", "java-1.9.0-openjdk");
         } else if (home.contains("icedtea")) {
             return getPackageDetails("icedtea-bin");
@@ -434,10 +419,5 @@
     }
 
-    protected void askUpdateJava(String version) {
-        if (!GraphicsEnvironment.isHeadless()) {
-            askUpdateJava(version, "https://www.java.com/download");
-        }
-    }
-
+    // Method unused, but kept for translation already done. To reuse during Java 9 migration
     protected void askUpdateJava(final String version, final String url) {
         GuiHelper.runInEDTAndWait(new Runnable() {
@@ -449,5 +429,5 @@
                         new String[]{tr("OK"), tr("Update Java"), tr("Cancel")});
                 // Check if the dialog has not already been permanently hidden by user
-                if (!ed.toggleEnable("askUpdateJava8").toggleCheckState()) {
+                if (!ed.toggleEnable("askUpdateJava9").toggleCheckState()) {
                     ed.setButtonIcons(new String[]{"ok", "java", "cancel"}).setCancelButton(3);
                     ed.setMinimumSize(new Dimension(480, 300));
@@ -457,5 +437,5 @@
                     if ("Sun Microsystems Inc.".equals(System.getProperty("java.vendor")) && !isOpenJDK()) {
                         content.append("<b>").append(tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
-                                "Oracle", tr("April 2015"))).append("</b><br><br>");
+                                "Oracle", tr("April 2015"))).append("</b><br><br>"); // TODO: change date once Java 8 EOL is announced
                     }
                     content.append("<b>")
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 10578)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java	(revision 10580)
@@ -64,9 +64,5 @@
     @Override
     public void startupHook() {
-        // Invite users to install Java 8 if they are still with Java 7
-        String version = System.getProperty("java.version");
-        if (version != null && version.startsWith("1.7")) {
-            askUpdateJava(version);
-        }
+        // Do nothing
     }
 
