Wednesday, August 24, 2016

Re: GWT 2.8.0 RC2 is here!

On Wednesday, August 24, 2016 at 4:38:51 PM UTC+2, Philippe Gonze wrote:
Hearing that 3.0 will be a "bundle", our key concern is "How many technologies should we (learn?) mix and organize to work together?".

Currently, GWT gives you a compiler with various linkers, emulation library, dev server(s), testing tool (GWTTestCase), and various libraries (i18n, dom, widgets, editors, places, activities, resources, uibinder, xhr, http, rpc, requestfactory, storage, etc.), all developed in a monorepo and shipped as a whole every other year.
Tomorrow, each bit would be developed separately (this is still unclear though, maybe it won't be the case and everything will stay the same as nowadays), at its own pace, with intermediate releases so you don't have to wait one year for a feature to be completed to finally have your fixes for other features (this is exactly the situation with 2.8: the goal was to ship with JsInterop, and it took a year to polish, and in the mean time we got Java 8 with stream emulation as well, but many bugfixes –like the nocache.js timestamp bug from 2.7, which was fixed a couple weeks after the release– had to wait this long to finally ship in a release); and every now and then, the dev team would pick the latest versions of each part, verify that they indeed work well together, fixing them when needed, and ship them as a whole: a bill of material of each components' version that are guaranteed to work well together, so you can choose to pick new versions of some components when you need a specific bugfix or feature, and wait for the "bundled release" for everything else; instead of using snapshots of the whole thing.
The big difference would be that the compiler, which currently builds "permutations", calls generators, transpiles, and optimizes (dead-code pruning/tree-shaking, minification, bundling) will be split into 4 parts: annotation processors run by your standard Java compiler (APT exists since Java 5, integrated into the Java compiler in Java 6; it's a stable technology), transpilation to ES6 through J2Cl, then compilation/optimization through Closure Compiler (or actually the tool of your choice), and "manual" permutations (AFAICT, i.e. you manually run the transpiler+compiler once for each locale you want to build for; permutations would likely go away for user.agent as browsers converge to being able to all run the same code with only few tweaks/checks here and there as needed). That transpiler/compiler split means that the compilation/optimization can take place not only on code transpiled from Java but also all your external pure-JS libraries (you'd currently have to copy/paste the lib into a JSNI method to have it optimized by GWT).
GWT could then also possibly come with additional tools to run everything in one go (except possibly annotation processing), just like you do today, instead of configuring all those steps into your build tool of choice (or maybe that will be left to the next-gen gwt-maven-plugin, gwt-gradle-plugin, et al.)
The goal of that "bundling" would be mostly (if not only) to make it as easy as it is today to use GWT, such that migration should be as easy as replacing all your GWT.create() calls with calls to generated classes; modulo deprecated/unported libraries, and other changes/tweaks needed to make things work (e.g. change an "extends SomeMarkerInterface" to an annotation, to trigger the corresponding annotation processor replacing a GWT generator).

But I repeat: this is all handwaving and hypotheses for now (and my very own point of view), only very few things are certain at this point in time. It's still too early to start worrying: 2.8 is still not released, and real work will only start after that, and not necessarily immediately after the release (there could actually be a 2.8.1 and 2.8.2 before the code is branched out for GWT 3, who knows?)

You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To post to this group, send email to
Visit this group at
For more options, visit

No comments:

Post a Comment