As of somewhere in the time leading up to the GWT 2.9.0 release, it is no 
longer possible to build GWT with Java7, and similarly the decision was 
made to no longer officially support running on Java7 
(jsinterop-annotations use of "TYPE_USE", newer jetty version too I 
believe). 

There is still some defunct wiring in the build to handle Java 7 vs Java 8 
though, mostly with regards to running tests - since we first javac our 
java classes, and then run gwtc on them, we need to make sure that the java 
version being use can correctly compile those tests.

The issue https://github.com/gwtproject/gwt/issues/9683 is tracking some of 
the existing work on this: the main remaining piece is to decide how to 
handle javadoc. GWT has its own custom doclet to handle a few custom tags, 
"example", "gwt.include", and "tip". None of this compiles after Java 8, 
since Java 9 came with a new, incompatible API to build custom tags, so 
either we drop Java 8 support for building the toolkit, require _only_ Java 
8 to build, support two parallel copies of the custom doc wiring, or drop 
the doc wiring entirely and remove these custom tags throughout the 
codebase.

Since the release of GWT 2.9 and my own work on the above ticket, I've been 
picking back up some Java 9/10/11 JRE emulation work that I had previously 
paused, and I'm running into the issue described at the top - if you write 
a test that calls Map.of() and run it on Java8 as a GWTTestCase, you'll get 
a compile error.

Two basic ways I can easily see to fix this: we can make two copies of each 
test, one as an empty "real" java type and one as supersource, or we can 
guard those tests behind java version args in the build glue like we did 
for Java7 vs Java8. The first option is clunky, and while I see this was 
done for `com.google.gwt.dev.jjs.test.Java8Test`, it clearly wasn't done 
for JRE emulation tests, and I assume there was a reason for that. The 
second option requires changing our CI to build+test on some new JRE...

...and given the constraints of the Java LTS system, and the java 8/9 
divide for custom doclet stuff, it seems like the clearest win is to move 
all the way to Java11, though continue to target java 8 releases, and test 
on all JREs up until current.

So that's my pitch. For completeness, some other options that seem 
workable, keeping in mind that at present there are about 3 important JRE 
versions to support well: Java 8, Java 11, and the current stable release.
 * Require Java8 for javadoc, supersource tests
 * Allow any JRE 8+, use ant filters for tests for each version, maintain 
two javadoc builds
 * Allow any JRE 8+, use ant filters, only actually produce javadoc on 
java9+ builds

Other technical ways to deal with this, or have a missed an easier solution 
to one of these problems?

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit-contributors+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/0aa0701b-4287-4e4c-bbef-23952898c64an%40googlegroups.com.

Reply via email to