[HIVEMALL-244] Support Java9, Java11(LTS)

## What changes were proposed in this pull request?

Support Java9, Java11(LTS)

## What type of PR is it?

Improvement | Hot Fix

## What is the Jira issue?

https://issues.apache.org/jira/browse/HIVEMALL-244

## How was this patch tested?

unit tests

## Checklist

(Please remove this section if not needed; check `x` for YES, blank for NO)

- [x] Did you apply source code formatter, i.e., `./bin/format_code.sh`, for your commit?
- [ ] Did you run system tests on Hive (or Spark)?

Author: Makoto Yui <myui@apache.org>

Closes #203 from myui/HIVEMALL-244.
diff --git a/.travis.yml b/.travis.yml
index 8b2427e..ae97bcc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,5 @@
+# Container-based infrastructure has been fully deprecated.
+# https://docs.travis-ci.com/user/reference/trusty/#container-based-infrastructure
 sudo: false
 
 env:
@@ -6,32 +8,26 @@
    #   via the "travis encrypt" command using the project repo's public key
    - secure: "gYAzVukFw3ssmQzfovoKTNJnzQbUhF13tksHHhe5dqQWglxdix39wY405nMmzRm/21ZpIq3OFIlI7fnHdZSGkVPS/nPPxbzUkjYUh+zkujYwsqgjZecq9vGaoarnyV9CcI+2D6qUVnArHQ02FKxirtXduGvElZ/eRIa/hBfpgn4="
 
-#addons:
-#  coverity_scan:
-#    project:
-#      name: "myui/hivemall"
-#      description: "Build submitted via Travis CI"
-#    notification_email: false
-#    build_command_prepend: "mvn clean"
-#    build_command:   "mvn -DskipTests=true compile"
-#    branch_pattern: master
-
 dist: trusty
+
 language: java
 jdk:
 # - openjdk7
-# - oraclejdk7
   - oraclejdk8
-# - oraclejdk9
+  - oraclejdk9
+  - oraclejdk11
 
 branches:
   only:
     - master
-    - develop
 
 notifications:
   email: false
 
+cache:
+  directories:
+  - $HOME/.m2
+
 script:
   - ./bin/run_travis_tests.sh
 
diff --git a/bin/run_travis_tests.sh b/bin/run_travis_tests.sh
index 3f0b090..06c0f75 100755
--- a/bin/run_travis_tests.sh
+++ b/bin/run_travis_tests.sh
@@ -18,17 +18,6 @@
 # under the License.
 #
 
-if [ "$HIVEMALL_HOME" = "" ]; then
-  if [ -e ../bin/${0##*/} ]; then
-    HIVEMALL_HOME=".."
-  elif [ -e ./bin/${0##*/} ]; then
-    HIVEMALL_HOME="."
-  else
-    echo "env HIVEMALL_HOME not defined"
-    exit 1
-  fi
-fi
-
 set -ev
 
 mvn clean test
diff --git a/core/pom.xml b/core/pom.xml
index 645967d..59cd169 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -42,11 +42,23 @@
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-common</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-mapreduce-client-core</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hive</groupId>
@@ -153,16 +165,6 @@
 			<artifactId>mockito-core</artifactId>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-module-junit4</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-api-mockito</artifactId>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 
 </project>
diff --git a/core/src/main/java/hivemall/fm/FactorizationMachineUDTF.java b/core/src/main/java/hivemall/fm/FactorizationMachineUDTF.java
index 4a39101..1d8509c 100644
--- a/core/src/main/java/hivemall/fm/FactorizationMachineUDTF.java
+++ b/core/src/main/java/hivemall/fm/FactorizationMachineUDTF.java
@@ -124,8 +124,8 @@
     protected long _numValidations;
 
     // file IO
-    private ByteBuffer _inputBuf;
-    private NioStatefulSegment _fileIO;
+    private transient ByteBuffer _inputBuf;
+    private transient NioStatefulSegment _fileIO;
 
     @Override
     protected Options getOptions() {
diff --git a/core/src/main/java/hivemall/topicmodel/ProbabilisticTopicModelBaseUDTF.java b/core/src/main/java/hivemall/topicmodel/ProbabilisticTopicModelBaseUDTF.java
index 5a5fbce..c13d18b 100644
--- a/core/src/main/java/hivemall/topicmodel/ProbabilisticTopicModelBaseUDTF.java
+++ b/core/src/main/java/hivemall/topicmodel/ProbabilisticTopicModelBaseUDTF.java
@@ -78,8 +78,8 @@
     protected ListObjectInspector wordCountsOI;
 
     // for iterations
-    protected NioStatefulSegment fileIO;
-    protected ByteBuffer inputBuf;
+    protected transient NioStatefulSegment fileIO;
+    protected transient ByteBuffer inputBuf;
 
     private float cumPerplexity;
 
diff --git a/core/src/test/java/hivemall/ftvec/trans/BinarizeLabelUDTFTest.java b/core/src/test/java/hivemall/ftvec/trans/BinarizeLabelUDTFTest.java
index 55b4e53..3824bd0 100644
--- a/core/src/test/java/hivemall/ftvec/trans/BinarizeLabelUDTFTest.java
+++ b/core/src/test/java/hivemall/ftvec/trans/BinarizeLabelUDTFTest.java
@@ -18,13 +18,6 @@
  */
 package hivemall.ftvec.trans;
 
-import static org.mockito.AdditionalMatchers.aryEq;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;
-
 import hivemall.TestUtils;
 import hivemall.utils.hadoop.WritableUtils;
 
@@ -36,12 +29,7 @@
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({BinarizeLabelUDTF.class})
 public class BinarizeLabelUDTFTest {
 
     // ignored to avoid
@@ -60,54 +48,6 @@
     }
 
     @Test
-    public void test2Positive3NegativeSample() throws Exception {
-        BinarizeLabelUDTF udtf = spy(new BinarizeLabelUDTF());
-        ObjectInspector[] argOIs = new ObjectInspector[3];
-        argOIs[0] = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
-        argOIs[1] = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
-        List<String> featureNames = Arrays.asList("positive", "negative", "features");
-        argOIs[2] = ObjectInspectorFactory.getStandardConstantListObjectInspector(
-            PrimitiveObjectInspectorFactory.javaStringObjectInspector, featureNames);
-
-        doNothing().when(udtf, "forward", any());
-        udtf.initialize(argOIs);
-
-        Object[] arguments = new Object[3];
-        arguments[0] = new Integer(2);
-        arguments[1] = new Integer(3);
-        arguments[2] = WritableUtils.val("a:1", "b:2");
-        udtf.process(arguments);
-
-        verifyPrivate(udtf, times(5)).invoke("forward", any(Object[].class));
-        verifyPrivate(udtf, times(2)).invoke("forward",
-            aryEq(new Object[] {WritableUtils.val("a:1", "b:2"), 1}));
-        verifyPrivate(udtf, times(3)).invoke("forward",
-            aryEq(new Object[] {WritableUtils.val("a:1", "b:2"), 0}));
-    }
-
-    @Test
-    public void test0Positive0NegativeSample() throws Exception {
-        BinarizeLabelUDTF udtf = spy(new BinarizeLabelUDTF());
-        ObjectInspector[] argOIs = new ObjectInspector[3];
-        argOIs[0] = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
-        argOIs[1] = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
-        List<String> featureNames = Arrays.asList("positive", "negative", "features");
-        argOIs[2] = ObjectInspectorFactory.getStandardConstantListObjectInspector(
-            PrimitiveObjectInspectorFactory.javaStringObjectInspector, featureNames);
-
-        doNothing().when(udtf, "forward", any());
-        udtf.initialize(argOIs);
-
-        Object[] arguments = new Object[3];
-        arguments[0] = new Integer(0);
-        arguments[1] = new Integer(0);
-        arguments[2] = WritableUtils.val("a:1", "b:2");
-        udtf.process(arguments);
-
-        verifyPrivate(udtf, times(0)).invoke("forward", any(Object[].class));
-    }
-
-    @Test
     public void testSerialization() throws HiveException {
         final List<String> featureNames = Arrays.asList("positive", "negative", "features");
         TestUtils.testGenericUDTFSerialization(BinarizeLabelUDTF.class,
diff --git a/mixserv/pom.xml b/mixserv/pom.xml
index fd863a5..d1c0f6b 100644
--- a/mixserv/pom.xml
+++ b/mixserv/pom.xml
@@ -40,11 +40,23 @@
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-common</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-mapreduce-client-core</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hive</groupId>
diff --git a/nlp/pom.xml b/nlp/pom.xml
index 0bce2ac..c1cfd05 100644
--- a/nlp/pom.xml
+++ b/nlp/pom.xml
@@ -40,11 +40,23 @@
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-common</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-mapreduce-client-core</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hive</groupId>
diff --git a/pom.xml b/pom.xml
index 157b7db..47e3154 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,9 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>org.apache.hivemall</groupId>
@@ -24,9 +26,9 @@
 	<version>0.6.0-incubating-SNAPSHOT</version>
 
 	<parent>
-	  <groupId>org.apache</groupId>
-	  <artifactId>apache</artifactId>
-	  <version>21</version>
+		<groupId>org.apache</groupId>
+		<artifactId>apache</artifactId>
+		<version>21</version>
 	</parent>
 
 	<name>Apache Hivemall</name>
@@ -571,6 +573,7 @@
 						<docencoding>UTF-8</docencoding>
 						<show>protected</show>
 						<linksource>true</linksource>
+						<source>7</source>
 					</configuration>
 					<executions>
 						<execution>
@@ -650,6 +653,12 @@
 								<requireEnvironmentVariable>
 									<variableName>JAVA_HOME</variableName>
 								</requireEnvironmentVariable>
+								<bannedDependencies>
+									<excludes>
+										<!-- see STORM-3114 -->
+										<exclude>jdk.tools:jdk.tools:*</exclude>
+									</excludes>
+								</bannedDependencies>
 							</rules>
 							<fail>true</fail>
 						</configuration>
diff --git a/xgboost/pom.xml b/xgboost/pom.xml
index 7b7d1df..0c77a54 100644
--- a/xgboost/pom.xml
+++ b/xgboost/pom.xml
@@ -40,11 +40,23 @@
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-common</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hadoop</groupId>
 			<artifactId>hadoop-mapreduce-client-core</artifactId>
 			<scope>provided</scope>
+			<exclusions>
+				<exclusion>
+					<artifactId>jdk.tools</artifactId>
+					<groupId>jdk.tools</groupId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.hive</groupId>