diff --git a/WHATSNEW b/WHATSNEW
index 15c3759..e60ac6c 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -25,6 +25,9 @@
    be used when running on Java 9 since this option has been removed.
    Bugzilla Report 59906
 
+ * <javah> will default to the "forking" implementation on Java8
+   as well.
+
 Fixed bugs:
 -----------
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javah/ForkingJavah.java b/src/main/org/apache/tools/ant/taskdefs/optional/javah/ForkingJavah.java
index c12f594..a537669 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/javah/ForkingJavah.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/javah/ForkingJavah.java
@@ -45,6 +45,7 @@
      * @return true if the compilation was successful.
      * @throws BuildException if there is an error.
      */
+    @Override
     public boolean compile(Javah javah) throws BuildException {
         Commandline cmd = SunJavah.setupJavahCommand(javah);
         Project project = javah.getProject();
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java
index cc4419c..481a97d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java
@@ -44,10 +44,8 @@
             return Kaffeh.IMPLEMENTATION_NAME;
         } else if (JavaEnvUtils.isGij()) {
             return Gcjh.IMPLEMENTATION_NAME;
-        } else if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) {
-            return ForkingJavah.IMPLEMENTATION_NAME;
         }
-        return SunJavah.IMPLEMENTATION_NAME;
+        return ForkingJavah.IMPLEMENTATION_NAME;
     }
 
     /**
@@ -89,9 +87,7 @@
         } else if ((JavaEnvUtils.isGij() && choice == null)
             || Gcjh.IMPLEMENTATION_NAME.equals(choice)) {
             return new Gcjh();
-        } else if ((JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)
-                    && choice == null)
-                   || ForkingJavah.IMPLEMENTATION_NAME.equals(choice)) {
+        } else if (ForkingJavah.IMPLEMENTATION_NAME.equals(choice)) {
             return new ForkingJavah();
         } else if (SunJavah.IMPLEMENTATION_NAME.equals(choice)) {
             return new SunJavah();
@@ -102,9 +98,7 @@
                                     .createClassLoader(classpath));
         }
 
-        // This default has been good enough until Ant 1.6.3, so stick
-        // with it
-        return new SunJavah();
+        return new ForkingJavah();
     }
 
     /**
