Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Present and Future of GWT from a developer perspective

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Cargando en…3
×

Eche un vistazo a continuación

1 de 58 Anuncio
Anuncio

Más Contenido Relacionado

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

Anuncio

Más de Manuel Carrasco Moñino (20)

Anuncio

Present and Future of GWT from a developer perspective

  1. 1. Present and Future of GWT from a developer perspective Manolo Carrasco +ManuelCarrascoMonino @dodotis
  2. 2. About me
  3. 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
  4. 4. FIGHT FOR SIMPLICITYthinking of U and I
  5. 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
  6. 6. Architecture Developer Space Provided by Vaadin JVM Browser
  7. 7. Java Lang JVM ecosystem libs, IDEs ... Developer space GWT vs Vaadin Java Lang JVM ecosystem libs, IDEs ... Scala, Groovy...
  8. 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
  9. 9. Next Generation Architecture
  10. 10. 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
  11. 11. 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
  12. 12. The present of GWT
  13. 13. GWT is Popular in the Java Web 2016 2012
  14. 14. Stable Platform
  15. 15. Reliable
  16. 16. Good Tools & Ecosystem
  17. 17. High Quality and Mature
  18. 18. Fast development cycles
  19. 19. For Big Teams & Big Projects
  20. 20. But
  21. 21. High Learning Curve
  22. 22. Outdated docs
  23. 23. Obsolete Stuff ↝ Generators ↝ Widgets, Elements, JSO ↝ RPC ↝ RF ↝ AutoBeans ↝ UiBinder ↝ JSNI ↝ Classic DevMode ↝ Ant ↝ Designer
  24. 24. Project Activity Deceleration
  25. 25. A project with few Contributors
  26. 26. Unmaintained libs GWT spring react
  27. 27. Hard to Use the Platform
  28. 28. 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
  29. 29. Long Term Support Applications LTS Apps
  30. 30. 2.8.x is perfect for Long Term Apps
  31. 31. - 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
  32. 32. The future of GWT
  33. 33. 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
  34. 34. 2.9.x might be your Transition Path
  35. 35. - 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
  36. 36. Inherit: the minimum stuff
  37. 37. Import: JsInterop & elemental2
  38. 38. Use UiBinder as an HTML container
  39. 39. Code: Interact with Elemental2
  40. 40. 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
  41. 41. Frontend: State of the art
  42. 42. We are in the JavaScript Era
  43. 43. Popularity of Web Platforms
  44. 44. Huge ecosystem
  45. 45. Good dev tools in JS
  46. 46. JS also runs everywhere
  47. 47. How is GWT in this jungle
  48. 48. Lot of reactions, Is GWT Dead?
  49. 49. - 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
  50. 50. 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
  51. 51. - The Java Language is the strong Key of using GWT GWT reasons nowadays
  52. 52. What should GWT developers do?
  53. 53. Embrace the JavaScript world
  54. 54. 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
  55. 55. 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
  56. 56. 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
  57. 57. Thanks manolo@vaadin.com +ManuelCarrascoMonino @dodotis

×