JAX 2013: Modern Architectures with Spring and JavaScript


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

JAX 2013: Modern Architectures with Spring and JavaScript

  1. 1. ModernArchitecturesMartin Lippert,VMwaremlippert@vmware.com, @martinlippertwithSpringJavaScriptand
  2. 2. about meMartin LippertStaff Engineer, R&D, atSpringSource/VMware and lead ofSpring Tool Suite developmentWorking areas• Eclipse Tooling for the Springplatform• Open Source Committer• Aspect-Weaving for OSGi• Cloud IDEs and JavaScript• Agile software development
  3. 3. Typical Runtime StructuresTomcat / tc ServerRelational DatabaseBrowsercontains databusiness logic &page renderingrender HTML
  4. 4. More Detail...ControllersRDBMSBrowser-basedHTML RenderingRepositoriesService LayerViewGenerationChannelsBrowserApplicationServer
  5. 5. What happens?Tomcat / tc ServerRelational DatabaseBrowsercontains data & newchallenges (structure, size)business logic &page rendering & APIsrender HTML & improvedexperience using JavaScriptAJAX calls
  6. 6. A few observationsTomcat / tc ServerRelational DatabaseBrowsercontains data & newchallenges (structure, size)business logic &page rendering & APIsrender HTML & improvedexperience using JavaScriptAJAX callsduplicated logic, nomodularizationAPIs are challenging, Java notthe only language anymorerelational & transactionaldon‘t fit anymore
  7. 7. Different picturesmodern apps old style appsNoSQLJavaScriptScalaClojureCoffeeScriptnode.jsHadoopRuby/RailsPaaSAWSJavaRDBMSApplicationServerJavaScriptHTML5/CSS3HTML/CSS
  8. 8. Where do we gofrom here?
  9. 9. TheClientSide
  10. 10. Innovation happens here
  11. 11. The JavaScript Storyhttp://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 applicationwritten in JavaScript becomes the newrich client architecture“
  13. 13. Browser-basedHTML RenderingMore Detail...HTML5 & JS EngineControllersClient-side ModelDOMWebStorage
  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)Examplesbackbone.jsangular.jsember.js...
  16. 16. Browser App (JavaScript)forget about JSF ;-)maybe GWT, but likely notmaybe also CoffeeScript,TypeScript, Dart
  17. 17. TheServerSide
  18. 18. ControllersRDBMSRepositoriesService LayerViewGenerationChannelsRDBMSServiceNoSQLService ServiceServiceotherService Servicebusiness/domainservicesplatformservices
  19. 19. Service Service Service Service Servicethis is where Spring is really powerfulready to run „in the cloud“ (scalability)(no client-side rendering or logic)
  20. 20. ServiceSpring MVC + Spring HATEOASis a powerful combinationAPIs are JSON and HATEOAS basedSpring MVC is the easiest way toimplement RESTful APIs and servicesmore on Spring HATEOAS:https://github.com/SpringSource/spring-hateoas
  21. 21. ServiceSpring BatchSpring Integration &Messaging
  22. 22. My assumptions- server side languages -many different languages in usechoose the right language for the right jobdon‘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 pictureRDBMSServiceBrowserPaaSHTML5 & JS EngineControllersClient-side ModelDOMWeb StorageNoSQLService ServiceServiceotherService Servicebusiness/domainservicesplatformservices
  25. 25. Browser App(JavaScript)ServiceRESTful API(JSON over http)Push(JSON over WebSockets)Communication
  26. 26. TheChallenges
  27. 27. ModularityinJavaScript
  28. 28. AMD(asynchronous module definition)wire.js(Dependency Injection for JavaScript)Micro Services for JavaScript(OSGi services written in JavaScript)
  29. 29. More Challengesofflinecloud-ready servicesdefine good APIsversioned APIsTDD for JavaScript
  30. 30. Adrian Colyer on Application Development in the Cloud Erahttp://www.youtube.com/watch?v=axOPJbrIjkYExample app using Spring for providing RESTful APIs and JavaScript for a rich client and mobileapphttps://github.com/SpringSource/html5expenseAsynchronous Module Definition for JavaScript (AMD)https://github.com/amdjs/amdjs-apihttp://requirejs.org/docs/whyamd.htmlwire.jshttps://github.com/cujojs/wirehello world with wire.jshttps://github.com/briancavalier/hello-wire.jsmore advanced example for wire.jshttps://github.com/briancavalier/piratescriptCloud Foundry PaaShttp://www.cloudfoundry.comhttp://www.cloudfoundry.orgmore information
  31. 31. Martin Lippert,VMwaremlippert@vmware.com, @martinlippertQ&Aand thank you for your attention
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.