Large applications with GWT

Arnaud Tournier, le 11-11-2015

Speaker : Harald Pehl (RedHat)

Wildfly Management Console, written in GWT

github.com/hal/core

Quick demo of management console

Configring the Wildly server

Deployments, Configuring AP, subsystems, …

#

Project created in 2011, Feb.

Code base : 150kLOC, mostly Java GWT code.

Different declinaisons : Community version and commercial version, with different look and feel and some functionalities only available on commercial edition.

7 years support.

Dependencies are kept at the minimal level : - gwt from ArcBees, - gin, - guava, - gwt-log (allen-sauer)

Architecture

Maven module == GWT module Annotation processors Code splpitting Stick to GWT MVP Composition over Inheritance Async Flow => github.com/hal/core/tree/master/flow Circuit => github.com/hal/circuit (data flow, escape callback hell, coordinate asynchronous tasks)

Circuit is inspired by Flux (part of React.js). Unidirectional data flow.

UI

  • No UiBinder
  • Vanilla GWT widgets
  • Cell Widgets
  • Styled with external CSS (PatternFly)
  • Builder like APIs

Lessons learned

  • KISS,
  • Use what’s there,
  • Composition over inheritance,
  • Do not fear code duplication (eases maintenance because limits bug fixing regression),
  • Factor out only if necessary.

Arnaud Tournier, le 11-11-2015