Diese Präsentation wurde erfolgreich gemeldet.

JAX 2013: Modern Architectures with Spring and JavaScript

12

Teilen

Wird geladen in …3
×
1 von 31
1 von 31

Weitere Verwandte Inhalte

Ähnliche Bücher

Kostenlos mit einer 14-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 14-tägigen Testversion von Scribd

Alle anzeigen

JAX 2013: Modern Architectures with Spring and JavaScript

  1. 1. Modern Architectures Martin Lippert,VMware mlippert@vmware.com, @martinlippert with Spring JavaScript and
  2. 2. about me Martin Lippert Staff Engineer, R&D, at SpringSource/VMware and lead of Spring Tool Suite development Working areas • Eclipse Tooling for the Spring platform • Open Source Committer • Aspect-Weaving for OSGi • Cloud IDEs and JavaScript • Agile software development
  3. 3. Typical Runtime Structures Tomcat / tc Server Relational Database Browser contains data business logic & page rendering render HTML
  4. 4. More Detail... Controllers RDBMS Browser-based HTML Rendering Repositories Service Layer View Generation Channels Browser Application Server
  5. 5. What happens? Tomcat / tc Server Relational Database Browser contains data & new challenges (structure, size) business logic & page rendering & APIs render HTML & improved experience using JavaScript AJAX calls
  6. 6. A few observations Tomcat / tc Server Relational Database Browser contains data & new challenges (structure, size) business logic & page rendering & APIs render HTML & improved experience using JavaScript AJAX calls duplicated logic, no modularization APIs are challenging, Java not the only language anymore relational & transactional don‘t fit anymore
  7. 7. Different pictures modern apps old style apps NoSQL JavaScript Scala Clojure CoffeeScript node.js Hadoop Ruby/Rails PaaS AWS Java RDBMS Application Server JavaScript HTML5/CSS3 HTML/CSS
  8. 8. Where do we go from here?
  9. 9. The Client Side
  10. 10. Innovation happens here
  11. 11. The JavaScript Story http://www.maztek.com/blog/wp-content/uploads/javascript.jpg
  12. 12. My assumptions - on the client side - Browser only (HTML5/CSS3) JavaScript only „The browser-based application written in JavaScript becomes the new rich client architecture“
  13. 13. Browser-based HTML Rendering More Detail... HTML5 & JS Engine Controllers Client-side Model DOM Web Storage
  14. 14. Existing JavaScript libs are UI centric (focus on making life with the DOM easier) most prominent: jquery
  15. 15. JavaScript versions of „good old rich client patterns“ begin to appear (and are highly necessary) Examples backbone.js angular.js ember.js ...
  16. 16. Browser App (JavaScript) forget about JSF ;-) maybe GWT, but likely not maybe also CoffeeScript, TypeScript, Dart
  17. 17. The Server Side
  18. 18. Controllers RDBMSRepositories Service Layer View Generation Channels RDBMS Service NoSQL Service Service Service other Service Service business/domain services platform services
  19. 19. Service Service Service Service Service this is where Spring is really powerful ready to run „in the cloud“ (scalability) (no client-side rendering or logic)
  20. 20. Service Spring MVC + Spring HATEOAS is a powerful combination APIs are JSON and HATEOAS based Spring MVC is the easiest way to implement RESTful APIs and services more on Spring HATEOAS: https://github.com/SpringSource/spring-hateoas
  21. 21. Service Spring Batch Spring Integration & Messaging
  22. 22. My assumptions - server side languages - many different languages in use choose the right language for the right job don‘t use a new language for fun
  23. 23. My assumptions - data storage - more and more data (big data) different storage techniques combined (rdbms, nosql, graph databases) scalability is important
  24. 24. The picture RDBMS Service Browser PaaS HTML5 & JS Engine Controllers Client-side Model DOM Web Storage NoSQL Service Service Service other Service Service business/domain services platform services
  25. 25. Browser App (JavaScript) Service RESTful API (JSON over http) Push (JSON over WebSockets) Communication
  26. 26. The Challenges
  27. 27. Modularity in JavaScript
  28. 28. AMD (asynchronous module definition) wire.js (Dependency Injection for JavaScript) Micro Services for JavaScript (OSGi services written in JavaScript)
  29. 29. More Challenges offline cloud-ready services define good APIs versioned APIs TDD for JavaScript
  30. 30. Adrian Colyer on Application Development in the Cloud Era http://www.youtube.com/watch?v=axOPJbrIjkY Example app using Spring for providing RESTful APIs and JavaScript for a rich client and mobile app https://github.com/SpringSource/html5expense Asynchronous Module Definition for JavaScript (AMD) https://github.com/amdjs/amdjs-api http://requirejs.org/docs/whyamd.html wire.js https://github.com/cujojs/wire hello world with wire.js https://github.com/briancavalier/hello-wire.js more advanced example for wire.js https://github.com/briancavalier/piratescript Cloud Foundry PaaS http://www.cloudfoundry.com http://www.cloudfoundry.org more information
  31. 31. Martin Lippert,VMware mlippert@vmware.com, @martinlippert Q&A and thank you for your attention

×