5. - Vaadin is a development platform for web
applications that prioritizes ease of development
and uncompromised end user experience.
- The Vaadin platform consists of a comprehensive
set of web components, a Java web framework,
configurable themes, tools and a set of app
templates.
Vaadin
11. GWT's mission is to radically improve the web experience
for users by enabling developers to use existing Java tools
to build no-compromise AJAX for any modern browser.
GWT Mision
A high-level language allows the Developer not to miss out
on low-level details
GWT Productivity 2006
29. Status of the current GWT
GWT 2.8.x
- Big artifacts (no split in modules)
- Stable & Long Term API Support
- No new Features planned
- Prepared for JS
- JsInterop stable
- Elemental2 unstable
- Large ecosystem
- 2.8 is stable and available for foreseeable future
32. - Be updated and use latest stable GWT
- Avoid legacy modules
- Most Widgets, RPC, RF, etc
- Design with UIBinder and CSS3
- Use J8 syntax, collapse browser permutations.
- Select good 3rd party libs
- Gwt-material, Gwt-bootstrap, Gwt-query
- Use JsInterop for json data or Resty-GWT
- MVP or GWTP ?
Good Practices for LTS apps in 2.8.x
34. The Near future of GWT
GWT 2.9.x
- Modular (split in small artifacts)
- Parts might be transferred to, or taken by the community
- Expect changes and new Features in API
- Removing browsers, jsni, moving namespaces, etc
- Replacing generators with Annotation Processors
- But maintaining backwards compatibility
- Prepared for the JavaScript wild
- Stable JsInterop
- Stable Elemental-2
36. - Use min set of modules, start with Core.gwt.xml
- Forget Classic Widgets and Element
- Replace classic DOM with Elemental2
- #useThePlatform as much as possible
- Check 3rd party modules not to import User.gwt.xml
- Design the UI using Js reusable widgets
- Web components (gwt-polymer)
- Html templates (elemento or polymer)
- Decouple business logic from UI
Best practices for the Transition
41. Alternatives
Since UiBinder is still thought for Widgets or Elements
and it uses generators, try:
- Elemento is a lightweight template system based
in pure HTML and Annotation Processors
- Designed with Elemental2 & jsInterop in mind
- Polymer templates
- Are evaluated in runtime with good performance
- Powerful data-binding
- You need to import manually until work in progress in
gwt-polymer
50. - Most GWT apps and webs ported to other solutions.
- Vaadin, Sencha, ArcBees... are redirecting their efforts.
- Google is moving to J2CL
- GWT-3.0 was announced in 2014 but ...
- 3 years of uncertainty that confuses and concerns the community
- Not open sourced yet, and no ETA
- No Presence of GWT in tech channels or events
- There are no GWT jobs
GWT Facts
51. GWT reasons, not valid anymore
- For the Browser (2006)
- Huge diffs between vendors (IE6)
- memory limitations (256Kb RAM PCs)
- Related with JavaScript (2006)
- No way to debug JS
- No tooling for JS optimisation and obfuscation
- No way of modularising / managing dependencies
- No IDE. No Testing tools. Slow runtime.
- Java Specific (2006)
- Same language client/server
- More developers than JavaScript
52. - The Java Language is the strong Key of using GWT
GWT reasons nowadays
55. GWT 3.0 is for the frontend jungle
- New compiler and tooling
- J2CL
- Runtime JVM, Node or both?
- Build system bazel, maven, npm ?
- Big changes in API and emulated JRE
- Prepared for the platform
- JsInterop
- Elemental2
- Comes with a different DX paradigm
56. Two possible paths for J2CL
➔ Classic Java Development flow
◆ Java IDE
◆ Java dependency artifacts (.jar)
◆ Java Build tools mvn, gradle, j2cl, closure, linker
◆ JVM for server side and testing tools
➔ Just a transpiler to JavaScript
◆ Java IDE
◆ JS dependencies (.js)
◆ JS Build tools npm, closure-compiler-js
◆ node-js for server side
◆ JS testing tools
57. A java transpiler in the JS world
NODE
ECOSYSTE
M
npm,gulp,*.js
,
Java IDE
mvn, jar,
Java IDE
JVMJAVA NODE
npm, gulp,
*.js,
Java IDE
JAVA