Ver Fonte

Upgrade to Java 9 (#3286)

`fw_depends java` now means a dependency on Java 9, and `fw_depends java8` means Java 8.  There is also `fw_depends resin` vs `fw_depends resin-java8` because I couldn't figure out a way to use one Resin installation with both versions of Java.

I would have preferred to get rid of Java 8 completely, but some test implementations are incompatible with Java 9.  They fall into a few different groups:

* Some are incompatible at the framework level and unlikely to be fixed (by us), such as comsat-*.
* Some may be fixable with dependency updates and a rewrite of the test implementation, such as grails.
* Some *should* be compatible with Java 9, and they work fine for me locally, but the Travis build is failing with strange errors.  All the Clojure tests are in this group.

I have not measured the performance of 8 vs 9 for any of these tests and I'm not expecting there to be a notable difference there.

I have assumed that all frameworks I *could* upgrade to Java 9 *should* be upgraded to Java 9, but I didn't check with any framework maintainers.  If a framework maintainer later wants to downgrade the dependency for his/her framework back to Java 8 for any reason, they are welcome to do so.
Michael Hixson há 7 anos atrás
pai
commit
99940f42f8
50 ficheiros alterados com 116 adições e 74 exclusões
  1. 1 1
      frameworks/Clojure/aleph/setup.sh
  2. 1 1
      frameworks/Clojure/compojure/setup.sh
  3. 1 1
      frameworks/Clojure/http-kit/setup.sh
  4. 1 1
      frameworks/Clojure/luminus/setup.sh
  5. 1 1
      frameworks/Clojure/macchiato/setup.sh
  6. 1 1
      frameworks/Clojure/pedestal/setup.sh
  7. 1 1
      frameworks/Clojure/reitit/setup.sh
  8. 1 1
      frameworks/Groovy/grails/setup.sh
  9. 1 1
      frameworks/Groovy/hot/setup.sh
  10. 0 13
      frameworks/Java/act/pom.xml
  11. 1 1
      frameworks/Java/act/setup-ebean-mysql-rythm.sh
  12. 1 1
      frameworks/Java/act/setup-ebean-mysql.sh
  13. 1 1
      frameworks/Java/act/setup-ebean-pgsql-rythm.sh
  14. 1 1
      frameworks/Java/act/setup-ebean-pgsql.sh
  15. 1 1
      frameworks/Java/act/setup-eclipselink-mysql-rythm.sh
  16. 1 1
      frameworks/Java/act/setup-eclipselink-mysql.sh
  17. 1 1
      frameworks/Java/act/setup-eclipselink-pgsql-rythm.sh
  18. 1 1
      frameworks/Java/act/setup-eclipselink-pgsql.sh
  19. 1 1
      frameworks/Java/act/setup-hibernate-mysql-rythm.sh
  20. 1 1
      frameworks/Java/act/setup-hibernate-mysql.sh
  21. 1 1
      frameworks/Java/act/setup-hibernate-pgsql-rythm.sh
  22. 1 1
      frameworks/Java/act/setup-hibernate-pgsql.sh
  23. 1 1
      frameworks/Java/act/setup-json-plaintext.sh
  24. 1 1
      frameworks/Java/act/setup-morphia-mongo-rythm.sh
  25. 1 1
      frameworks/Java/act/setup-morphia-mongo.sh
  26. 1 1
      frameworks/Java/comsat-servlet/setup-generic.sh
  27. 1 1
      frameworks/Java/comsat-webactors/setup-generic.sh
  28. 1 1
      frameworks/Java/jawn/setup.sh
  29. 1 1
      frameworks/Java/play2-java/setup_java.sh
  30. 1 1
      frameworks/Java/play2-java/setup_java_ebean_hikaricp.sh
  31. 1 1
      frameworks/Java/play2-java/setup_java_ebean_hikaricp_netty.sh
  32. 1 1
      frameworks/Java/play2-java/setup_java_jooq_hikaricp.sh
  33. 1 1
      frameworks/Java/play2-java/setup_java_jooq_hikaricp_netty.sh
  34. 1 1
      frameworks/Java/play2-java/setup_java_jpa_hikaricp.sh
  35. 1 1
      frameworks/Java/play2-java/setup_java_jpa_hikaricp_netty.sh
  36. 1 1
      frameworks/Java/play2-java/setup_java_netty.sh
  37. 1 1
      frameworks/Java/proteus/setup.sh
  38. 5 0
      frameworks/Java/rapidoid/pom.xml
  39. 1 3
      frameworks/Java/revenj-jvm/setup.sh
  40. 1 1
      frameworks/Java/spark/setup.sh
  41. 1 1
      frameworks/Java/tapestry/setup.sh
  42. 6 0
      frameworks/Java/vertx-web/pom.xml
  43. 6 1
      frameworks/Java/vertx/pom.xml
  44. 1 1
      frameworks/JavaScript/ringojs/setup-convenient.sh
  45. 1 1
      frameworks/JavaScript/ringojs/setup.sh
  46. 1 1
      frameworks/Scala/finatra/setup.sh
  47. 3 9
      toolset/setup/linux/languages/java.sh
  48. 18 0
      toolset/setup/linux/languages/java8.sh
  49. 28 0
      toolset/setup/linux/webservers/resin/resin-java8.sh
  50. 8 7
      toolset/setup/linux/webservers/resin/resin.sh

+ 1 - 1
frameworks/Clojure/aleph/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java leiningen
+fw_depends java8 leiningen
 
 cd hello
 lein clean

+ 1 - 1
frameworks/Clojure/compojure/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java resin leiningen
+fw_depends mysql java8 resin-java8 leiningen
 
 cd hello
 lein clean

+ 1 - 1
frameworks/Clojure/http-kit/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql leiningen java
+fw_depends mysql leiningen java8
 
 sed -i 's|127.0.0.1|'"${DBHOST}"'|g' hello/src/hello/handler.clj
 

+ 1 - 1
frameworks/Clojure/luminus/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java resin leiningen
+fw_depends postgresql java8 resin-java8 leiningen
 
 # Update db host in the source file
 sed -i 's|127.0.0.1|'"${DBHOST}"'|g' hello/env/prod/resources/config.edn

+ 1 - 1
frameworks/Clojure/macchiato/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql nodejs java leiningen
+fw_depends postgresql nodejs java8 leiningen
 
 # Update db host in the source file
 sed -i 's|localhost|'"${DBHOST}"'|g' hello/src/hello/db.cljs

+ 1 - 1
frameworks/Clojure/pedestal/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java leiningen
+fw_depends mysql java8 leiningen
 
 sed -i 's|127.0.0.1:3306|'${DBHOST}':3306|g' src/pedestal/pdg.clj
 

+ 1 - 1
frameworks/Clojure/reitit/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java leiningen
+fw_depends java8 leiningen
 
 cd hello
 lein clean

+ 1 - 1
frameworks/Groovy/grails/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java grails resin 
+fw_depends mysql java8 grails resin-java8
 
 cd hello
 grails -Dgrails.work.dir=${IROOT}/.grails -non-interactive -plain-output refresh-dependencies

+ 1 - 1
frameworks/Groovy/hot/setup.sh

@@ -2,6 +2,6 @@
 
 sed -i 's|localhost|'"${DBHOST}"'|g' config.json
 
-fw_depends java hot
+fw_depends java8 hot
 
 ${HOT_HOME}/hot run

+ 0 - 13
frameworks/Java/act/pom.xml

@@ -101,19 +101,6 @@
       <version>${morphia.version}</version>
     </dependency>
 
-    <!-- The javax.xml.bind classes are required by this application, and they
-         are included by default in Java 8 but not in Java 9.  We could include
-         them in Java 9 by adding "add-modules java.xml.bind" to the command
-         line arguments, but those arguments are not supported in Java 8 (and it
-         fails on unsupported arguments rather than ignoring them). -->
-    <dependency>
-      <groupId>javax.xml.bind</groupId>
-      <artifactId>jaxb-api</artifactId>
-      <!-- Version 2.2.12 is compatible with both Java 8 and Java 9, while
-           version 2.3.0 is not compatible with Java 8. -->
-      <version>2.2.12</version>
-    </dependency>
-
   </dependencies>
 
   <profiles>

+ 1 - 1
frameworks/Java/act/setup-ebean-mysql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Pebean_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-ebean-mysql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Pebean_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-ebean-pgsql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Pebean_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-ebean-pgsql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Pebean_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-eclipselink-mysql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Peclipselink_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-eclipselink-mysql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Peclipselink_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-eclipselink-pgsql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Peclipselink_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-eclipselink-pgsql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Peclipselink_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-hibernate-mysql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Phibernate_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-hibernate-mysql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java maven
+fw_depends mysql java8 maven
 
 mvn -Phibernate_mysql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-hibernate-pgsql-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Phibernate_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-hibernate-pgsql.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java maven
+fw_depends postgresql java8 maven
 
 mvn -Phibernate_pgsql clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-json-plaintext.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java maven
+fw_depends java8 maven
 
 mvn clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-morphia-mongo-rythm.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mongodb java maven
+fw_depends mongodb java8 maven
 
 mvn -U -Pmongo clean package
 cd target/dist

+ 1 - 1
frameworks/Java/act/setup-morphia-mongo.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mongodb java maven
+fw_depends mongodb java8 maven
 
 mvn -U -Pmongo clean package
 cd target/dist

+ 1 - 1
frameworks/Java/comsat-servlet/setup-generic.sh

@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-fw_depends java
+fw_depends java8
 
 $TROOT/gradlew clean capsule
 

+ 1 - 1
frameworks/Java/comsat-webactors/setup-generic.sh

@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-fw_depends java
+fw_depends java8
 
 $TROOT/gradlew clean capsule
 

+ 1 - 1
frameworks/Java/jawn/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java
+fw_depends postgresql java8
 
 ./gradlew clean
 

+ 1 - 1
frameworks/Java/play2-java/setup_java.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java sbt
+fw_depends java8 sbt
 
 cd play2-java
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_ebean_hikaricp.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-ebean-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_ebean_hikaricp_netty.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-ebean-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_jooq_hikaricp.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-jooq-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_jooq_hikaricp_netty.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-jooq-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_jpa_hikaricp.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-jpa-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_jpa_hikaricp_netty.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java sbt
+fw_depends mysql java8 sbt
 
 cd play2-java-jpa-hikaricp
 

+ 1 - 1
frameworks/Java/play2-java/setup_java_netty.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java sbt
+fw_depends java8 sbt
 
 cd play2-java
 

+ 1 - 1
frameworks/Java/proteus/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql mysql java maven
+fw_depends postgresql mysql java8 maven
  
 
 mvn -U clean package

+ 5 - 0
frameworks/Java/rapidoid/pom.xml

@@ -38,6 +38,11 @@
 			<artifactId>jaxb-api</artifactId>
 			<version>2.2.12</version>
 		</dependency>
+		<dependency>
+			<groupId>org.javassist</groupId>
+			<artifactId>javassist</artifactId>
+			<version>3.22.0-GA</version>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 1 - 3
frameworks/Java/revenj-jvm/setup.sh

@@ -1,8 +1,6 @@
 #!/bin/bash
 
-fw_depends postgresql java resin maven mono dsl_platform
-
-source $IROOT/java.installed
+fw_depends postgresql java8 resin-java8 maven mono dsl_platform
 
 echo "Changing the database"
 cat $TROOT/web.xml | sed 's/localhost/'$DBHOST'/g' > $TROOT/src/main/webapp/WEB-INF/web.xml

+ 1 - 1
frameworks/Java/spark/setup.sh

@@ -2,7 +2,7 @@
 
 sed -i 's|mysql://.*:3306|mysql://'"${DBHOST}"':3306|g' src/main/webapp/WEB-INF/resin-web.xml
 
-fw_depends mysql java resin maven
+fw_depends mysql java8 resin-java8 maven
 
 mvn clean package -Ddb-host=${DBHOST}
 rm -rf $RESIN_HOME/webapps/*

+ 1 - 1
frameworks/Java/tapestry/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java resin maven
+fw_depends mysql java8 resin-java8 maven
 
 cd hello
 mvn clean compile war:war

+ 6 - 0
frameworks/Java/vertx-web/pom.xml

@@ -63,6 +63,12 @@
       <version>2.7.4</version>
     </dependency>
 
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.2.12</version>
+    </dependency>
+
   </dependencies>
 
   <build>

+ 6 - 1
frameworks/Java/vertx/pom.xml

@@ -27,6 +27,11 @@
 			<artifactId>rocker-compiler</artifactId>
 			<version>0.22.0</version>
 		</dependency>
+		<dependency>
+			<groupId>javax.xml.bind</groupId>
+			<artifactId>jaxb-api</artifactId>
+			<version>2.2.12</version>
+		</dependency>
 	</dependencies>
 
 	<build>
@@ -96,4 +101,4 @@
 
 	</build>
 
-</project>
+</project>

+ 1 - 1
frameworks/JavaScript/ringojs/setup-convenient.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java ringojs
+fw_depends mysql java8 ringojs
 
 rm -rf $RINGOJS_HOME/packages/*
 ringo-admin install grob/ringo-sqlstore

+ 1 - 1
frameworks/JavaScript/ringojs/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends mysql java ringojs
+fw_depends mysql java8 ringojs
 
 rm -rf $RINGOJS_HOME/packages/*
 ringo-admin install oberhamsi/sql-ringojs-client

+ 1 - 1
frameworks/Scala/finatra/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-fw_depends java sbt
+fw_depends java8 sbt
 
 sbt clean assembly -batch
 

+ 3 - 9
toolset/setup/linux/languages/java.sh

@@ -2,16 +2,10 @@
 
 fw_installed java && return 0
 
-# TODO: Someday get away from apt-get
-sudo add-apt-repository -y ppa:openjdk-r/ppa
-sudo apt-get update
-sudo apt-get install -qqy openjdk-8-jdk
+fw_get -O https://download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz
+fw_untar openjdk-9.0.4_linux-x64_bin.tar.gz
 
-# https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760
-sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
-
-# Setup environment variables
-JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+JAVA_HOME=$IROOT/jdk-9.0.4
 echo "export JAVA_HOME=${JAVA_HOME}" > $IROOT/java.installed
 echo -e "export PATH=\$JAVA_HOME/bin:\$PATH" >> $IROOT/java.installed
 

+ 18 - 0
toolset/setup/linux/languages/java8.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+fw_installed java8 && return 0
+
+# TODO: Someday get away from apt-get
+sudo add-apt-repository -y ppa:openjdk-r/ppa
+sudo apt-get update
+sudo apt-get install -qqy openjdk-8-jdk
+
+# https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760
+sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
+
+# Setup environment variables
+JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+echo "export JAVA_HOME=${JAVA_HOME}" > $IROOT/java8.installed
+echo -e "export PATH=\$JAVA_HOME/bin:\$PATH" >> $IROOT/java8.installed
+
+source $IROOT/java8.installed

+ 28 - 0
toolset/setup/linux/webservers/resin/resin-java8.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+
+fw_depends java8
+
+fw_installed resin-java8 && return 0
+
+RESIN_VERSION=4.0.55
+RESIN_HOME=$IROOT/resin-java8/resin-$RESIN_VERSION
+
+mkdir resin-java8
+cd resin-java8
+fw_get -O http://www.caucho.com/download/resin-$RESIN_VERSION.tar.gz
+fw_untar resin-$RESIN_VERSION.tar.gz
+cd resin-$RESIN_VERSION
+./configure --prefix=`pwd`
+make
+make install
+
+mv conf/resin.properties conf/resin.properties.orig
+cat $FWROOT/toolset/setup/linux/webservers/resin/resin.properties > conf/resin.properties
+
+mv conf/resin.xml conf/resin.xml.orig
+cat $FWROOT/toolset/setup/linux/webservers/resin/resin.xml > conf/resin.xml
+
+echo "export RESIN_HOME=${RESIN_HOME}" > $IROOT/resin-java8.installed
+echo -e "export PATH=\$RESIN_HOME/bin:\$PATH" >> $IROOT/resin-java8.installed
+
+source $IROOT/resin-java8.installed

+ 8 - 7
toolset/setup/linux/webservers/resin/resin.sh

@@ -4,13 +4,14 @@ fw_depends java
 
 fw_installed resin && return 0
 
-RVER=4.0.55
-RESIN=resin-$RVER
-RESIN_HOME=$IROOT/$RESIN
-
-fw_get -O http://www.caucho.com/download/resin-$RVER.tar.gz
-fw_untar resin-$RVER.tar.gz
-cd resin-$RVER
+RESIN_VERSION=4.0.55
+RESIN_HOME=$IROOT/resin/resin-$RESIN_VERSION
+
+mkdir resin
+cd resin
+fw_get -O http://www.caucho.com/download/resin-$RESIN_VERSION.tar.gz
+fw_untar resin-$RESIN_VERSION.tar.gz
+cd resin-$RESIN_VERSION
 ./configure --prefix=`pwd`
 make
 make install