SlideShare a Scribd company logo
1 of 58
Download to read offline
Present and Future of GWT
from a developer perspective
Manolo Carrasco
+ManuelCarrascoMonino
@dodotis
About me
Agenda
1. A little bit of context of Vaadin and GWT
2. The Present of GWT
3. Future of GWT
4. State of the Frontend
FIGHT FOR SIMPLICITYthinking of U and I
- 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
Architecture
Developer Space
Provided by Vaadin
JVM
Browser
Java Lang JVM
ecosystem
libs, IDEs ...
Developer space GWT vs Vaadin
Java Lang JVM
ecosystem
libs, IDEs ...
Scala, Groovy...
Millestone 3.0
IT Mill 4.0
IT Mill 5.0
2002
2007
2008
2018
2013
2009
Vaadin 6.0
Vaadin 7.0
2017
Vaadin 8.0
Vaadin 10
Vaadin: a 18y whisky
Next Generation Architecture
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
Innuvo
1.0.21
1.3.3 O.S
2005
2006
2007
2018
2010
2009
2.0 UIB OOPHM
2.1 MVP RF
2011
2.2 Designer
3.0 J2cl ?
GWT a 12y whisky
2012
Grid 2.4
2013
2.5 SDM
2017
2.8 J8 JSi2014
2.6 J7
The present of GWT
GWT is Popular in the Java Web
2016
2012
Stable Platform
Reliable
Good Tools & Ecosystem
High Quality and Mature
Fast development cycles
For Big Teams & Big Projects
But
High Learning Curve
Outdated docs
Obsolete Stuff
↝ Generators
↝ Widgets, Elements, JSO
↝ RPC
↝ RF
↝ AutoBeans
↝ UiBinder
↝ JSNI
↝ Classic DevMode
↝ Ant
↝ Designer
Project Activity Deceleration
A project with few Contributors
Unmaintained libs
GWT spring react
Hard to Use the Platform
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
Long Term Support Applications
LTS Apps
2.8.x is perfect for Long Term Apps
- 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
The future of GWT
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
2.9.x might be your Transition Path
- 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
Inherit: the minimum stuff
Import: JsInterop & elemental2
Use UiBinder as an HTML container
Code: Interact with Elemental2
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
Frontend: State of the art
We are in the JavaScript Era
Popularity of Web Platforms
Huge ecosystem
Good dev tools in JS
JS also runs everywhere
How is GWT in this jungle
Lot of reactions, Is GWT Dead?
- 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
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
- The Java Language is the strong Key of using GWT
GWT reasons nowadays
What should GWT
developers do?
Embrace the JavaScript world
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
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
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
Thanks
manolo@vaadin.com
+ManuelCarrascoMonino
@dodotis

More Related Content

What's hot

Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetupGuenjun Yoo
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 
JHipster Code 2020 keynote
JHipster Code 2020 keynoteJHipster Code 2020 keynote
JHipster Code 2020 keynoteJulien Dubois
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkitrajivmordani
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Igalia
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component LibraryClement Ho
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformDidier Girard
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
GWTcon 2015 - Best development practices for GWT web applications
GWTcon 2015 - Best development practices for GWT web applications GWTcon 2015 - Best development practices for GWT web applications
GWTcon 2015 - Best development practices for GWT web applications Arcbees
 
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...Igalia
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+Joone Hur
 
Introduction to Google Web Toolkit - part 1
Introduction to Google Web Toolkit - part 1Introduction to Google Web Toolkit - part 1
Introduction to Google Web Toolkit - part 1Muhammad Ghazali
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)Igalia
 
Finding the Jelly in the JAMstack
Finding the Jelly in the JAMstackFinding the Jelly in the JAMstack
Finding the Jelly in the JAMstackTessa Mero
 
GWT 2.0 - OSCON 2010
GWT 2.0 - OSCON 2010GWT 2.0 - OSCON 2010
GWT 2.0 - OSCON 2010sullis
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJulien Dubois
 
Webkit overview
Webkit overviewWebkit overview
Webkit overviewEun Cho
 

What's hot (20)

Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetup
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 
JHipster Code 2020 keynote
JHipster Code 2020 keynoteJHipster Code 2020 keynote
JHipster Code 2020 keynote
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component Library
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
GWTcon 2015 - Best development practices for GWT web applications
GWTcon 2015 - Best development practices for GWT web applications GWTcon 2015 - Best development practices for GWT web applications
GWTcon 2015 - Best development practices for GWT web applications
 
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
Introduction to Google Web Toolkit - part 1
Introduction to Google Web Toolkit - part 1Introduction to Google Web Toolkit - part 1
Introduction to Google Web Toolkit - part 1
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Gwt Presentation
Gwt PresentationGwt Presentation
Gwt Presentation
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
Finding the Jelly in the JAMstack
Finding the Jelly in the JAMstackFinding the Jelly in the JAMstack
Finding the Jelly in the JAMstack
 
GWT 2.0 - OSCON 2010
GWT 2.0 - OSCON 2010GWT 2.0 - OSCON 2010
GWT 2.0 - OSCON 2010
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynote
 
Qt5.pptx
Qt5.pptxQt5.pptx
Qt5.pptx
 
Webkit overview
Webkit overviewWebkit overview
Webkit overview
 

Similar to Present and Future of GWT from a developer perspective

GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosifirenze-gtug
 
Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2JooinK
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day DNG Consulting
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
GWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 PanicGWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 PanicCristiano Costantini
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
GWT Introduction and Overview - SV Code Camp 09
GWT Introduction and Overview - SV Code Camp 09GWT Introduction and Overview - SV Code Camp 09
GWT Introduction and Overview - SV Code Camp 09Fred Sauer
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServerJody Garnett
 
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015AboutYouGmbH
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006ardlian
 
HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)Kevin Gill
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 

Similar to Present and Future of GWT from a developer perspective (20)

GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosi
 
GWT Reloaded
GWT ReloadedGWT Reloaded
GWT Reloaded
 
Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2Javascript as a target language - GWT kickoff - part1/2
Javascript as a target language - GWT kickoff - part1/2
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
GWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 PanicGWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - Beyond GWT 3.0 Panic
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Gwt Presentation1
Gwt Presentation1Gwt Presentation1
Gwt Presentation1
 
GWT Introduction and Overview - SV Code Camp 09
GWT Introduction and Overview - SV Code Camp 09GWT Introduction and Overview - SV Code Camp 09
GWT Introduction and Overview - SV Code Camp 09
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServer
 
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
Rolando Santamaría Masó - Simplicity meets scalability - code.talks 2015
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006
 
HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
GWT-Basics
GWT-BasicsGWT-Basics
GWT-Basics
 
GWT-Basics
GWT-BasicsGWT-Basics
GWT-Basics
 

More from Manuel Carrasco Moñino

Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWAManuel Carrasco Moñino
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsManuel Carrasco Moñino
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013Manuel Carrasco Moñino
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011Manuel Carrasco Moñino
 
GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryManuel Carrasco Moñino
 

More from Manuel Carrasco Moñino (20)

CRUD with Polymer 2.0
CRUD with Polymer 2.0CRUD with Polymer 2.0
CRUD with Polymer 2.0
 
Web Components and PWA
Web Components and PWAWeb Components and PWA
Web Components and PWA
 
Building Components for Business Apps
Building Components for Business AppsBuilding Components for Business Apps
Building Components for Business Apps
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
 
Rock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer ElementsRock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer Elements
 
Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)
 
Speed up your GWT coding with gQuery
Speed up your GWT coding with gQuerySpeed up your GWT coding with gQuery
Speed up your GWT coding with gQuery
 
Vaadin codemotion 2014
Vaadin codemotion 2014Vaadin codemotion 2014
Vaadin codemotion 2014
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011
 
Apache James/Hupa & GWT
Apache James/Hupa & GWTApache James/Hupa & GWT
Apache James/Hupa & GWT
 
GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactory
 
Mod security
Mod securityMod security
Mod security
 
Gwt IV -mvp
Gwt IV -mvpGwt IV -mvp
Gwt IV -mvp
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Seguridad en redes de computadores
Seguridad en redes de computadoresSeguridad en redes de computadores
Seguridad en redes de computadores
 

Present and Future of GWT from a developer perspective

  • 1. Present and Future of GWT from a developer perspective Manolo Carrasco +ManuelCarrascoMonino @dodotis
  • 3. Agenda 1. A little bit of context of Vaadin and GWT 2. The Present of GWT 3. Future of GWT 4. State of the Frontend
  • 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
  • 7. Java Lang JVM ecosystem libs, IDEs ... Developer space GWT vs Vaadin Java Lang JVM ecosystem libs, IDEs ... Scala, Groovy...
  • 8. Millestone 3.0 IT Mill 4.0 IT Mill 5.0 2002 2007 2008 2018 2013 2009 Vaadin 6.0 Vaadin 7.0 2017 Vaadin 8.0 Vaadin 10 Vaadin: a 18y whisky
  • 10.
  • 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
  • 12. Innuvo 1.0.21 1.3.3 O.S 2005 2006 2007 2018 2010 2009 2.0 UIB OOPHM 2.1 MVP RF 2011 2.2 Designer 3.0 J2cl ? GWT a 12y whisky 2012 Grid 2.4 2013 2.5 SDM 2017 2.8 J8 JSi2014 2.6 J7
  • 14. GWT is Popular in the Java Web 2016 2012
  • 17. Good Tools & Ecosystem
  • 20. For Big Teams & Big Projects
  • 21. But
  • 24. Obsolete Stuff ↝ Generators ↝ Widgets, Elements, JSO ↝ RPC ↝ RF ↝ AutoBeans ↝ UiBinder ↝ JSNI ↝ Classic DevMode ↝ Ant ↝ Designer
  • 26. A project with few Contributors
  • 28. Hard to Use the Platform
  • 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
  • 30. Long Term Support Applications LTS Apps
  • 31. 2.8.x is perfect for Long Term Apps
  • 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
  • 35. 2.9.x might be your Transition Path
  • 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
  • 38. Import: JsInterop & elemental2
  • 39. Use UiBinder as an HTML container
  • 40. Code: Interact with Elemental2
  • 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
  • 43. We are in the JavaScript Era
  • 44. Popularity of Web Platforms
  • 46. Good dev tools in JS
  • 47. JS also runs everywhere
  • 48. How is GWT in this jungle
  • 49. Lot of reactions, Is GWT Dead?
  • 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