From 6b16b660e28cb860c6fb79365cec5ad1425c3fa7 Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Mon, 1 Jul 2019 11:49:37 +0100 Subject: [PATCH] JAL-3337 update to JAVA-11-README to state current Java 11 build --- JAVA-11-README | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/JAVA-11-README b/JAVA-11-README index 805a4c1..fabae31 100644 --- a/JAVA-11-README +++ b/JAVA-11-README @@ -1,3 +1,26 @@ +2019-07-01 (pre 2.11.0 release) +Notes below are out of date, but might be useful for future development with Java 11 + +Presently the Java 11 build of Jalview treats all libraries as libraries on the classpath, and does not use them as modules. The Java 11 JRE prepped for future release is a standard AdoptOpenJDK release (possibly repackaged for getdown/install4j to use). + +At time of writing, the JRE cannot be updated over the air on macOS platform due to a limitation of getdown's unpackaging system only using jars and hence cannot work with symbolic links. There is a symbolic link that is essential (as a symbolic link) in the macOS distribution (Contents/MacOS/libjli.dylib -> ../Home/lib/jli/libjli.dylib). Without this, the install4j launcher will not work. Some work has started on incorporating tar capabilities in getdown using the apache-commons-compress library, though this is not complete. + +Future releases might incorporate Java 11 modules into a bespoke Java 11 JRE that can be updated over the air via getdown.This could reduce the size of the distribution but will absolutely need the bespoke JRE. This would mean Jalview being restricted to platforms that we (can) support, or distributing the modules as libraries in a second distribution (the shadowJar distribution). + +build.gradle is written to support compilation of either Java 1.8 or Java 11 compatible bytecode. Please note that the compilation (and therefore build) process REQUIRES a Java 11 (or above) JDK. This is because there is Java 11 specific code in some Jalview classes (devolved into separate classes which fail "gracefully" when read by a Java 1.8 JRE). +Java 11 is therefore the default build target, but can be changed simply by specifying the property JAVA_VERSION=1.8 (e.g. + +gradle compileJava -PJAVA_VERSION=1.8 + +). Some different versions of supporting libraries are used between Java 1.8 and 11 builds, and can be found in j8lib and j11lib folders respectively. Note that there are a number of extra libraries used in the Java 11 distribution which are present in the Java 1.8 JRE but not distributed with the Java 11 JRE. + +Also see doc/building.md or doc/building.html + + + + +Old notes: + Java 11 module replacements As Java 11 no longer ships with Java EE libraries, which were standard in Java 8, and available (modularised, through the --add-modules CLI mechanism) in Java 9 and 10, third party replacement libraries for these libraries/modules have to be found. @@ -91,4 +114,3 @@ jlink --module-path $JAVA_HOME/jmods:j11lib --compress=2 --add-modules `cat modu To create a Java 11 JRE in j11jre/openjdk11_platform (or whatever you wish to call it). You can point JAVA_HOME at the JDK11 of a different platform, so long as the jlink in your path is to the jlink for the platform you're running on. - -- 1.7.10.2