SlideShare a Scribd company logo
Modern
Architectures
Spring
           with

                         and

   JavaScript

          Martin Lippert,VMware
  mlippert@vmware.com, @martinlippert
Were do we come from?




                    http://www.nasa.gov
Servlet Specification
        mostly static HTML created on server
                  Template Engines




                                      JSP Specification
                                     mostly static HTML created on server
                                    no template engines necessary anymore




    Web Frameworks
    mostly static HTML created on server
        various framework, supporting:
authentication, session-handling, page flows, etc.



                                          JavaScript
                                        only used to do some kid‘s stuff
Or from her
           e?
Desktop?
            SWT?

   Swing?
Typical Runtime Structures



     Browser          render HTML



                      business logic &
Tomcat / tc Server
                      page rendering



Relational Database    contains data
And today...
What happens?


                         render HTML & improved
     Browser
                         experience using JavaScript
            AJAX calls


                              business logic &
Tomcat / tc Server         page rendering & APIs


                            contains data & new
Relational Database
                         challenges (structure, size)
A few observations
                         duplicated logic, no
                           modularization
                           render HTML & improved
     Browser
                          experience using JavaScript
            AJAX calls
                         APIs are challenging, Java not
                          the only language anymore
                                 business logic &
Tomcat / tc Server            page rendering & APIs

                          relational & transactional
                              contains anymore
                              don‘t fit data & new
Relational Database
                           challenges (structure, size)
Different pictures


AWS             node.js                HTML/CSS
          NoSQL               Java
                                     JavaScript
JavaScript      Hadoop
          CoffeeScript


  modern apps                old style apps

  Scala
             Ruby/Rails      Application
 Clojure          PaaS         Server
                                           RDBMS
          HTML5/CSS3
Where do we go
    from here?
The

Client
  Side
Innovation happens here
The JavaScript Story




            http://www.maztek.com/blog/wp-content/uploads/javascript.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“
Existing JavaScript libs are UI centric
         (focus on making life with the DOM easier)


               most prominent:
                  jquery
JavaScript versions of
„good old rich client patterns“
       begin to appear
         (and are highly necessary)




           Examples
         backbone.js
          angular.js
          ember.js
              ...
The

Server
  Side
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
My assumptions
             - data storage -




     more and more data (big data)
different storage techniques combined
     (rdbms, nosql, graph databases)
         scalability is important
The landscape

                    Browser App
                       (JavaScript)




Service   Service     Service         Service    Service



                NoSQL                           NoSQL
RDBMS                                  NoSQL
      RDBMS                NoSQL                 NoSQL
Browser App
                        (JavaScript)




               rich client application
Service         written in JavaScript
          Service       Service      Service   Service
        (a lot bigger than what we do today in
             JavaScript within the browser)

                   NoSQL                   NoSQL
RDBMS                                  NoSQL
       RDBMS                NoSQL              NoSQL
Browser App
       (JavaScript)




     maybe also CoffeeScript,
        TypeScript, Dart


maybe GWT, but likely not



    forget about JSF
The landscape
         services are provided by a PaaS
  or are hand-written (in a language of your choice)
                  Browser App
    this is where Spring is really powerful
                      (JavaScript)

    ready to run „in the cloud“ (scalability)
              (no client-side rendering or logic)




Service   Service       Service          Service     Service



                   NoSQL                            NoSQL
RDBMS                                       NoSQL
      RDBMS                   NoSQL                  NoSQL
Service


  Spring MVC is the easiest way to
implement RESTful APIs and services


      APIs are JSON and HATEOAS based


        Spring MVC + Spring HATEOAS
          is a powerful combination


                     more on Spring HATEOAS:
          https://github.com/SpringSource/spring-hateoas
Service


Spring Integration &
     Messaging


    Spring Batch
Browser App
                    (JavaScript)




RESTful API                        Push
using AJAX                     (over WebSockets)
   (over http)




                  Service
Browser App
                      (JavaScript)


        RDBMS and NoSQL datastores are
               provided by the PaaS
        + the PaaS takes care of scalability
Service access managed by Spring (e.g. Spring Data)
      + Service     Service   Service       Service



                  NoSQL                  NoSQL
RDBMS                                NoSQL
       RDBMS              NoSQL              NoSQL
Running in the cloud
                    (on a PaaS)


Service   Service    Service      Service    Service



                NoSQL                       NoSQL
RDBMS                              NoSQL
      RDBMS              NoSQL               NoSQL
The

Challenges
Modularity
    in
JavaScript
AMD
 (asynchronous module definition)

             wire.js
(Dependency Injection for JavaScript)

Micro Services for JavaScript
(OSGi services written in JavaScript)
More Challenges
offline
cloud-ready services
define good APIs
versioned APIs
TDD for JavaScript
more information
                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
Q&A
and thank you for your attention




        Martin Lippert,VMware
mlippert@vmware.com, @martinlippert

More Related Content

PDF
JAX 2012: Moderne Architektur mit Spring und JavaScript
KEY
MVC on the server and on the client
PPT
MVC Demystified: Essence of Ruby on Rails
PPT
Ruby on Rails: Building Web Applications Is Fun Again!
PPTX
Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...
KEY
Offline Html5 3days
PPT
Asp.net
PDF
Berlin.JAR: Web future without web frameworks
JAX 2012: Moderne Architektur mit Spring und JavaScript
MVC on the server and on the client
MVC Demystified: Essence of Ruby on Rails
Ruby on Rails: Building Web Applications Is Fun Again!
Building rich Single Page Applications (SPAs) for desktop, mobile, and tablet...
Offline Html5 3days
Asp.net
Berlin.JAR: Web future without web frameworks

What's hot (19)

PPTX
Beginners' guide to Ruby on Rails
PDF
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
PDF
From User Action to Framework Reaction
PDF
Ruby on Rails Security
PDF
Apache Etch Introduction @ FOSDEM 2011
PDF
Java Web Programming [4/9] : JSP Basic
PDF
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
PPTX
Integration of Backbone.js with Spring 3.1
PDF
Java API for XML Web Services (JAX-WS)
PDF
Spring Framework - MVC
PPT
Java EE 7 (Hamed Hatami)
PDF
Jsf Framework
PPTX
KnockOutjs from Scratch
PPTX
Spring Web Services
KEY
Multi Client Development with Spring
PPTX
Angular jS Introduction by Google
 
PDF
Lecture 7 Web Services JAX-WS & JAX-RS
ODP
springmvc-150923124312-lva1-app6892
PPT
Spring 3.1: a Walking Tour
Beginners' guide to Ruby on Rails
SOFEA: Service Oriented Front End Architecture, Next Gen Web Architecture for...
From User Action to Framework Reaction
Ruby on Rails Security
Apache Etch Introduction @ FOSDEM 2011
Java Web Programming [4/9] : JSP Basic
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
Integration of Backbone.js with Spring 3.1
Java API for XML Web Services (JAX-WS)
Spring Framework - MVC
Java EE 7 (Hamed Hatami)
Jsf Framework
KnockOutjs from Scratch
Spring Web Services
Multi Client Development with Spring
Angular jS Introduction by Google
 
Lecture 7 Web Services JAX-WS & JAX-RS
springmvc-150923124312-lva1-app6892
Spring 3.1: a Walking Tour
Ad

Viewers also liked (20)

PDF
GeeCON 2012 Bad Tests, Good Tests
PDF
How To Use The Codename One Sources
PDF
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
PDF
Introduction to Rails engine
PDF
Design & Development of Web Applications using SpringMVC
PPTX
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
PDF
Integrate Spring MVC with RequireJS & Backbone.js & Spring Data JPA
PDF
Creating MVC Application with backbone js
PPTX
Rest with Java EE 6 , Security , Backbone.js
ODP
Java Spring MVC Framework with AngularJS by Google and HTML5
PPT
Building a Scalable Architecture for web apps
PDF
Hr coverage directi 2012
PPT
Web Application Development Fundamentals
PPTX
Web application architecture
PPTX
Introduction to Web Architecture
PDF
Fundamentals of Web Development For Non-Developers
PDF
Architecture of a Modern Web App
PPTX
Shall we play a game?
PDF
Study: The Future of VR, AR and Self-Driving Cars
PDF
3 Things Every Sales Team Needs to Be Thinking About in 2017
GeeCON 2012 Bad Tests, Good Tests
How To Use The Codename One Sources
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
Introduction to Rails engine
Design & Development of Web Applications using SpringMVC
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
Integrate Spring MVC with RequireJS & Backbone.js & Spring Data JPA
Creating MVC Application with backbone js
Rest with Java EE 6 , Security , Backbone.js
Java Spring MVC Framework with AngularJS by Google and HTML5
Building a Scalable Architecture for web apps
Hr coverage directi 2012
Web Application Development Fundamentals
Web application architecture
Introduction to Web Architecture
Fundamentals of Web Development For Non-Developers
Architecture of a Modern Web App
Shall we play a game?
Study: The Future of VR, AR and Self-Driving Cars
3 Things Every Sales Team Needs to Be Thinking About in 2017
Ad

Similar to Modern Architectures with Spring and JavaScript (20)

PDF
Modern Architectures with Spring and JavaScript
PDF
JAX 2013: Modern Architectures with Spring and JavaScript
KEY
SSJS, NoSQL, GAE and AppengineJS
PPTX
Webdevcon Keynote hh-2012-09-18
KEY
20120802 timisoara
PDF
Spring Into the Cloud
KEY
20120306 dublin js
PDF
Node.js
PDF
Hpc lunch and learn
PPTX
JavaScript on the server - Node.js
PDF
Post-relational databases: What's wrong with web development?
ODP
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
PDF
Kann JavaScript elegant sein?
PDF
Building Cross Platform Mobile Web Apps
ODP
Trends in Technology
PDF
Hybrid mobile apps
PDF
Post-relational databases: What's wrong with web development? v3
PDF
The spring 32 update final
PDF
World of javascript
Modern Architectures with Spring and JavaScript
JAX 2013: Modern Architectures with Spring and JavaScript
SSJS, NoSQL, GAE and AppengineJS
Webdevcon Keynote hh-2012-09-18
20120802 timisoara
Spring Into the Cloud
20120306 dublin js
Node.js
Hpc lunch and learn
JavaScript on the server - Node.js
Post-relational databases: What's wrong with web development?
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Kann JavaScript elegant sein?
Building Cross Platform Mobile Web Apps
Trends in Technology
Hybrid mobile apps
Post-relational databases: What's wrong with web development? v3
The spring 32 update final
World of javascript

More from martinlippert (18)

PDF
WJAX 2013: Java8-Tooling in Eclipse
PDF
WJAX 2013: Die PaaS-Parade - Teil 2 - Cloud Foundry
PDF
EclipseCon-Europe 2013: Optimizing performance - how to make your Eclipse-bas...
PDF
EclipseCon-Europe 2013: Making the Eclipse IDE fun again
PDF
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
PDF
JAX 2013: Introducing Eclipse Orion
PDF
Spring Tooling: What's new and what's coming
PDF
Scripted - Embracing Eclipse Orion
PDF
PaaS Parade - Cloud Foundry
PDF
Browser and Cloud - The Future of IDEs?
PDF
What's new with tooling for Spring, Grails, and the Cloud
PDF
Tooling for the JavaScript Era
PDF
Embracing Eclipse Orion
PDF
Why SOLID matters - even for JavaScript
PDF
JAX 2012: Pimp Your IDE Productivity
PDF
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
PDF
Spring Tooling Update - New & Noteworty (at SpringOne 2011)
PDF
Classloading and Type Visibility in OSGi
WJAX 2013: Java8-Tooling in Eclipse
WJAX 2013: Die PaaS-Parade - Teil 2 - Cloud Foundry
EclipseCon-Europe 2013: Optimizing performance - how to make your Eclipse-bas...
EclipseCon-Europe 2013: Making the Eclipse IDE fun again
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
JAX 2013: Introducing Eclipse Orion
Spring Tooling: What's new and what's coming
Scripted - Embracing Eclipse Orion
PaaS Parade - Cloud Foundry
Browser and Cloud - The Future of IDEs?
What's new with tooling for Spring, Grails, and the Cloud
Tooling for the JavaScript Era
Embracing Eclipse Orion
Why SOLID matters - even for JavaScript
JAX 2012: Pimp Your IDE Productivity
WaveMaker - Spring Roo - SpringSource Tool Suite - Choosing the right tool fo...
Spring Tooling Update - New & Noteworty (at SpringOne 2011)
Classloading and Type Visibility in OSGi

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Approach and Philosophy of On baking technology
PPT
Teaching material agriculture food technology
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Electronic commerce courselecture one. Pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
cuic standard and advanced reporting.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
NewMind AI Monthly Chronicles - July 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MYSQL Presentation for SQL database connectivity
Spectral efficient network and resource selection model in 5G networks
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
Approach and Philosophy of On baking technology
Teaching material agriculture food technology
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Modernizing your data center with Dell and AMD
Diabetes mellitus diagnosis method based random forest with bat algorithm
Electronic commerce courselecture one. Pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
cuic standard and advanced reporting.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The AUB Centre for AI in Media Proposal.docx
Unlocking AI with Model Context Protocol (MCP)
NewMind AI Monthly Chronicles - July 2025

Modern Architectures with Spring and JavaScript

  • 1. Modern Architectures Spring with and JavaScript Martin Lippert,VMware [email protected], @martinlippert
  • 2. Were do we come from? http://www.nasa.gov
  • 3. Servlet Specification mostly static HTML created on server Template Engines JSP Specification mostly static HTML created on server no template engines necessary anymore Web Frameworks mostly static HTML created on server various framework, supporting: authentication, session-handling, page flows, etc. JavaScript only used to do some kid‘s stuff
  • 4. Or from her e? Desktop? SWT? Swing?
  • 5. Typical Runtime Structures Browser render HTML business logic & Tomcat / tc Server page rendering Relational Database contains data
  • 7. What happens? render HTML & improved Browser experience using JavaScript AJAX calls business logic & Tomcat / tc Server page rendering & APIs contains data & new Relational Database challenges (structure, size)
  • 8. A few observations duplicated logic, no modularization render HTML & improved Browser experience using JavaScript AJAX calls APIs are challenging, Java not the only language anymore business logic & Tomcat / tc Server page rendering & APIs relational & transactional contains anymore don‘t fit data & new Relational Database challenges (structure, size)
  • 9. Different pictures AWS node.js HTML/CSS NoSQL Java JavaScript JavaScript Hadoop CoffeeScript modern apps old style apps Scala Ruby/Rails Application Clojure PaaS Server RDBMS HTML5/CSS3
  • 10. Where do we go from here?
  • 13. The JavaScript Story http://www.maztek.com/blog/wp-content/uploads/javascript.jpg
  • 14. 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“
  • 15. Existing JavaScript libs are UI centric (focus on making life with the DOM easier) most prominent: jquery
  • 16. JavaScript versions of „good old rich client patterns“ begin to appear (and are highly necessary) Examples backbone.js angular.js ember.js ...
  • 18. 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
  • 19. My assumptions - data storage - more and more data (big data) different storage techniques combined (rdbms, nosql, graph databases) scalability is important
  • 20. The landscape Browser App (JavaScript) Service Service Service Service Service NoSQL NoSQL RDBMS NoSQL RDBMS NoSQL NoSQL
  • 21. Browser App (JavaScript) rich client application Service written in JavaScript Service Service Service Service (a lot bigger than what we do today in JavaScript within the browser) NoSQL NoSQL RDBMS NoSQL RDBMS NoSQL NoSQL
  • 22. Browser App (JavaScript) maybe also CoffeeScript, TypeScript, Dart maybe GWT, but likely not forget about JSF
  • 23. The landscape services are provided by a PaaS or are hand-written (in a language of your choice) Browser App this is where Spring is really powerful (JavaScript) ready to run „in the cloud“ (scalability) (no client-side rendering or logic) Service Service Service Service Service NoSQL NoSQL RDBMS NoSQL RDBMS NoSQL NoSQL
  • 24. Service Spring MVC is the easiest way to implement RESTful APIs and services APIs are JSON and HATEOAS based Spring MVC + Spring HATEOAS is a powerful combination more on Spring HATEOAS: https://github.com/SpringSource/spring-hateoas
  • 25. Service Spring Integration & Messaging Spring Batch
  • 26. Browser App (JavaScript) RESTful API Push using AJAX (over WebSockets) (over http) Service
  • 27. Browser App (JavaScript) RDBMS and NoSQL datastores are provided by the PaaS + the PaaS takes care of scalability Service access managed by Spring (e.g. Spring Data) + Service Service Service Service NoSQL NoSQL RDBMS NoSQL RDBMS NoSQL NoSQL
  • 28. Running in the cloud (on a PaaS) Service Service Service Service Service NoSQL NoSQL RDBMS NoSQL RDBMS NoSQL NoSQL
  • 30. Modularity in JavaScript
  • 31. AMD (asynchronous module definition) wire.js (Dependency Injection for JavaScript) Micro Services for JavaScript (OSGi services written in JavaScript)
  • 32. More Challenges offline cloud-ready services define good APIs versioned APIs TDD for JavaScript
  • 33. more information 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
  • 34. Q&A and thank you for your attention Martin Lippert,VMware [email protected], @martinlippert