jax 2012: moderne architektur mit spring und javascript
TRANSCRIPT
![Page 2: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/2.jpg)
Were do we come from?
http://www.nasa.gov
![Page 3: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/3.jpg)
Servlet Specificationmostly static HTML created on server
Template Engines
JSP Specificationmostly static HTML created on server
no template engines necessary anymore
Web Frameworksmostly static HTML created on server
various framework, supporting:authentication, session-handling, page flows, etc.
JavaScriptonly used to do some kid‘s stuff
![Page 4: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/4.jpg)
Or from here?
SWT?
Swing?
Desktop?
![Page 5: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/5.jpg)
Typical Runtime Structures
Tomcat / tc Server
Relational Database
Browser
contains data
business logic &page rendering
render HTML
![Page 6: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/6.jpg)
And today...
![Page 7: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/7.jpg)
What happens?
Tomcat / tc Server
Relational Database
Browser
contains data & newchallenges (structure, size)
business logic &page rendering & APIs
render HTML & improved experience using JavaScript
AJAX calls
![Page 8: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/8.jpg)
A few observations
Tomcat / tc Server
Relational Database
Browser
contains data & newchallenges (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
![Page 9: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/9.jpg)
Different pictures
Startups „old economy“
NoSQL
JavaScript
Scala
Clojure
CoffeeScript
node.js
Hadoop
Ruby/Rails
PaaS
AWSJava
RDBMS
Application Server
JavaScript
HTML5/CSS3
HTML/CSS
![Page 10: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/10.jpg)
Where do we go from here?
![Page 11: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/11.jpg)
The
ClientSide
![Page 12: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/12.jpg)
Innovation happens here
![Page 13: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/13.jpg)
The JavaScript Story
http://www.maztek.com/blog/wp-content/uploads/javascript.jpg
![Page 14: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/14.jpg)
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“
![Page 15: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/15.jpg)
Existing JavaScript libs are UI centric(focus on making life with the DOM easier)
most prominent:jquery
![Page 16: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/16.jpg)
JavaScript versions of„good old rich client patterns“
begin to appear(and are highly necessary)
Examplesbackbone.jsangular.jsember.js
...
![Page 17: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/17.jpg)
The
ServerSide
![Page 18: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/18.jpg)
My assumptions- server side languages -
many different languages in usechoose the right language for the right job
don‘t use a new language for fun
![Page 19: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/19.jpg)
My assumptions- data storage -
more and more data (big data)different storage techniques combined
(rdbms, nosql, graph databases)scalability is important
![Page 20: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/20.jpg)
The landscape
Service
RDBMS
Browser App(JavaScript)
RDBMS
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Service Service Service Service
![Page 21: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/21.jpg)
Service
RDBMS
Browser App(JavaScript)
RDBMS
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Service Service Service Servicerich client applicationwritten in JavaScript
(a lot bigger than what we do today in JavaScript within the browser)
![Page 22: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/22.jpg)
The landscape
Service
RDBMS
Browser App(JavaScript)
RDBMS
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Service Service Service Service
services are provided by a PaaSor are hand-written (in a language of your choice)
this is where Spring is really powerfulready to run „in the cloud“ (scalability)
(no client-side rendering or logic)
![Page 23: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/23.jpg)
Service
RDBMS
Browser App(JavaScript)
RDBMS
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Service Service Service Service
RDBMS and NoSQL datastores are provided by the PaaS
the PaaS takes care of scalabilityaccess managed by Spring (e.g. Spring Data)
![Page 24: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/24.jpg)
Service
RDBMS
RDBMS
NoSQL
NoSQL
NoSQL
NoSQL
NoSQL
Service Service Service Service
Running in the cloud (on a PaaS)
![Page 25: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/25.jpg)
The
Challenges
![Page 26: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/26.jpg)
Modularityin
JavaScript
![Page 27: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/27.jpg)
AMD(asynchronous module definition)
wire.js(Dependency Injection for JavaScript)
Micro Services for JavaScript(OSGi services written in JavaScript)
![Page 28: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/28.jpg)
More Challengesofflinecloud-ready servicesdefine good APIs versioned APIsTDD for JavaScript
![Page 29: JAX 2012: Moderne Architektur mit Spring und JavaScript](https://reader033.vdocuments.us/reader033/viewer/2022060108/554f4520b4c90572088b55c0/html5/thumbnails/29.jpg)
Adrian Colyer on Application Development in the Cloud Erahttp://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.jshttps://github.com/cujojs/wire
hello world with wire.jshttps://github.com/briancavalier/hello-wire.js
more advanced example for wire.jshttps://github.com/briancavalier/piratescript
Cloud Foundry PaaShttp://www.cloudfoundry.comhttp://www.cloudfoundry.org
more information