SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented
description
Transcript of SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented
![Page 1: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/1.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Day 1 Keynote: Platform Reinvented
Hugh Williams, Juergen Hoeller, Dave Syer, Andy Glover, Graeme Rocher
![Page 2: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/2.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform Reprise
2
Jobs, Steps,
Readers, Writers
Ingestion, Export,
Orchestration, Hadoop
Controllers, REST,
WebSocket
Channels, Adapters,
Filters, Transformers
WEB INTEGRATION BATCH BIG DATA
SPRING CORE
FRAMEWORK SECURITY GROOVY REACTOR
DATA
RELATIONAL
DATA ACCESS
NON-RELATIONAL
DATA ACCESS
BOOT
Bootable, Minimal, Ops-Ready
GRAILS Full-stack,
Web
XD Stream, Taps,
Jobs
IO EXECUTION
IO FOUNDATION
![Page 3: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/3.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform
3
Grails
Spring IO Platform Distribution
Spring XD
Spring Foundation
Apps
3rd Party Dependencies
Spring Boot
![Page 4: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/4.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform Distribution Roadmap
4
2.0 1.0 1.1
June 2014
Spring 4.0 baseline
Nov 2014
Spring 4.1 baseline
1H 2015
12 months - major
Current: 1.0.2
6 months - minor
![Page 5: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/5.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Spring Boot
• Execution layer: eliminate boilerplate
configuration
• Spring Boot 1.1.x Released
• 88 contributors
• Foundation for all Spring IO Execution
Layer DSRs
5
![Page 6: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/6.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Spring Boot
6
@RestController
class App {
@RequestMapping('/')
def home() {
"""
<html><body>Message: 'Hello World!’</body></html>
"""
}
}
![Page 7: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/7.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo:
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Boot
7
![Page 8: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/8.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Boot Sessions
8
TUE 8:30 AM Inside spring.io: a Production Spring Reference Application
TUE 10:30 AM Booting up Spring Social
TUE 2:30 PM Spring Boot for the Web Tier
TUE 4:30 PM Making Spring Boot Even Groovier
WED 10:30 AM "Bootiful" Applications with Spring Boot
THU 8:30 AM Micro Service Architecture with Spring Boot and Groovy
WED 12:45 PM Panel: Real World Boot-up Sequences
![Page 9: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/9.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/ 9
![Page 10: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/10.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Ten Years
Ago!
![Page 11: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/11.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Competitive Advantage
![Page 12: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/12.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Velocity is the Killer App
![Page 13: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/13.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
![Page 14: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/14.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
![Page 15: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/15.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
![Page 16: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/16.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Velocity
on the JVM
is the Killer App
![Page 17: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/17.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO and Microservices
• “Microservices” are not a free lunch
• Fortunately, many common problems have boilerplate solutions
• Spring is all about removing boilerplate:
• Foundation: business logic (Spring Framework, Spring Data, Reactor, etc.)
• Execution: configuration and runtime (Spring Boot, Spring XD, Grails)
• Coordination: patterns in distributed systems (Spring Cloud Components)
![Page 18: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/18.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform
18
Grails
Spring IO Platform Distribution
Spring XD
Spring Foundation
Apps
3rd Party Dependencies
Spring Boot
Spring Cloud
![Page 19: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/19.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform: Coordination
19
Jobs, Steps,
Readers, Writers
Ingestion, Export,
Orchestration, Hadoop
Controllers, REST,
WebSocket
Channels, Adapters,
Filters, Transformers
WEB INTEGRATION BATCH BIG DATA
SPRING CORE
FRAMEWORK SECURITY GROOVY REACTOR
DATA
RELATIONAL
DATA ACCESS
NON-RELATIONAL
DATA ACCESS
BOOT
Bootable, Minimal, Ops-Ready
GRAILS Full-stack,
Web
XD Stream, Taps,
Jobs
IO EXECUTION
IO FOUNDATION
IO COORDINATION SPRING CLOUD
![Page 20: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/20.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Groovy Update
• What’s new in Groovy 2.3
• Java 8 support
• Traits
• Templating
• What’s coming in Groovy 2.4
• Android support
• New documentation
• New website
20
![Page 21: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/21.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy 2.3 : Java 8 support
• Supports Java 8 runtime (not syntax)
• Use closures where you would use Java 8 lambdas
21
Java 8 Groovy
Integer youngest = persons.stream()
.filter(p -> p.getAge() > 18)
.map(Person::getAge)
.min(Comparator.<Integer>naturalOrder())
.get()
def youngest = persons.stream()
.filter { it.age > 18 }
.map { it.age }
.min { a,b -> a<=>b }
.get()
![Page 22: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/22.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy 2.3: Traits
• Composition of behaviors
with traits
• Favors composition over
inheritance
• Compatible with
@CompileStatic
• Callable from Java
22
trait Flying {
void fly() { println "I'm flying!" }
}
trait Speaking {
void speak() { println "I'm speaking!" }
}
class SpeakingDuck implements Flying,
Speaking {
void quack() { println "I'm quacking!" }
void speak() { prinln quack() }
}
def duck = new SpeakingDuck()
duck.fly()
duck.quack()
![Page 23: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/23.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy 2.3: New Template Engine
• MarkupTemplateEngine
• Primarily aimed at XML-like contents
• Builder syntax, Layouts and Type Checking
• Supported in Spring 4.1 and Spring Boot
23
@Controller @RequestMapping("/person") class PersonController { @RequestMapping("list") def list() { new ModelAndView( 'views/person/list', [persons: Person.list()] ) }}
ul { persons.each { person -> li { a(href: "/person/$person.id", "$person.lastName $person.firstName") } } }
![Page 24: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/24.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy 2.4 : Android Support
• Develop a full Android application in Groovy
• Gradle plugin
24
![Page 25: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/25.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy Housekeeping
• Shiny new website
• Statically generated
• New documentation
25
POWERED BY ASCIIDOCTOR
![Page 26: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/26.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Grails Update
• Grails 2.4
• Current release 2.4.3
• Ongoing maintenance
• 1150 Plugins!
• What’s coming in Grails 3.0
• Complete rewrite
26
![Page 27: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/27.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Grails 3.0 on Boot
• Grails 3.0 built on Spring Boot
• Spring IO Execution Layer
• Full support for Micro Services
• Traditional, Fat JAR and
embedded deployment
• Native Gradle and Maven support
• Ground up rewrite
27
![Page 28: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/28.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Grails 3.0 Goals
• Plugin Model / Event Driven
• Multi Project Builds
• Microservices
• App Profiles: Netty, Servlet, Batch etc.
• Remove Bloat
• Reduce Dependencies
• Allow scaling from micro to modular monolith
28
![Page 29: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/29.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Grails 3.0 Plugins
29
Gra
ils.s
h
Sta
tic v
oid
ma
in
Gra
dle
Bu
ild
Forked Grails Runtime
test-app
shell run-app
console
Codegen
Plugins Build Time
Plugins
Runtime
Plugins
![Page 30: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/30.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Execution: Grails Microservices
30
@Grab("com.h2database:h2:1.3.173")
import grails.persistence.*
@Entity
@Resource(uri='/books')
class Book {
String title
}
![Page 31: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/31.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo:
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Grails 3.0
31
![Page 32: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/32.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Groovy and Grails Sessions
32
TUE 8:30 AM Groovy in 2014 and beyond
TUE 10:30 AM Grails 3.0 Preview
TUE 12:45 PM Groovy, in the light of Java 8
TUE 2:30 PM Rethinking API Design with Traits
WED 8:30 AM Microservices Architecture with Grails
WED 2:30 PM Ratpack & Grails 3.0
![Page 33: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/33.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Day 2 Keynote: Platform Reinvented
Juergen Hoeller, Mark Fisher, Dave Syer, Jon Brisbin
33
![Page 34: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/34.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform
34
Jobs, Steps,
Readers, Writers
Ingestion, Export,
Orchestration, Hadoop
Controllers, REST,
WebSocket
Channels, Adapters,
Filters, Transformers
WEB INTEGRATION BATCH BIG DATA
SPRING CORE
FRAMEWORK SECURITY GROOVY REACTOR
DATA
RELATIONAL
DATA ACCESS
NON-RELATIONAL
DATA ACCESS
BOOT
Bootable, Minimal, Ops-Ready
GRAILS Full-stack,
Web
XD Stream, Taps,
Jobs
IO EXECUTION
IO FOUNDATION
IO COORDINATION SPRING CLOUD
![Page 35: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/35.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Spring Framework 4.1 GA
• Annotated JMS listener methods
• Comprehensive support for JCache (JSR-107) annotations
• Flexible resolution and transformation of static web resources
• MVC views: declarative resolution + Groovy markup templates
• Performance: SpEL compiler mode + concurrency fine-tuning
35
![Page 36: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/36.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring 4.1: Annotated JMS listener methods
36
@Component
public class MyService {
@JmsListener(destination = "myQueue")
public void processOrder(Order order, @Header("order_type") String type) {
...
}
}
![Page 37: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/37.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring 4.1: Support for JCache annotations
37
@Component
public class MyService {
@CacheResult(cacheName = "book")
public Book findBook(@CacheKey ISBN isbn, boolean checkWarehouse) {
...
}
}
![Page 38: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/38.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring 4.1: Flexible web resource handling
• Flexible resource resolution chain:path resolution, caching,
compression, versioning
• Flexible resource transformation chain:CSS links, caching,
HTML5 AppCache manifests
• Talk: “Resource Handling in Spring MVC 4.1”
by Brian Clozel and Rossen Stoyanchev - Wednesday 8:30
• Showcase: https://github.com/bclozel/spring-resource-handling
38
![Page 39: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/39.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring 4.1: Declarative MVC view resolution
39
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.enableContentNegotiation(new MappingJackson2JsonView());
registry.freeMarker().cache(false);
}
}
![Page 40: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/40.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring 4.1: Many further improvements...
• Java 8's Optional for injection points and MVC handler
parameters
• Annotated @Lookup methods with support for method arguments
• Direct field binding support with auto-growing for nested fields
• WebSocket scope, SockJS client support, WebSocket stats
• Declarative SQL scripts and programmatic transactions for tests
40
![Page 41: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/41.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring XD – Big Data, Little Time
41
![Page 42: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/42.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring XD: Unified Platform for Big Data
42
Spring XD Runtime
BIDIRECTIONAL
Compute
HDFS
RDBMS
NoSQL
R, SAS
Streams Jobs
ingest workflow
export
taps
Predictive Modelling
>_
Redis
![Page 43: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/43.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring XD: Quality of Service
• High Availability
• Cluster Management built upon ZooKeeper
• Leader Election for Admin Nodes
• Module Redeployment across Container Nodes
• Customizable Deployment
• Module Count and Criteria Properties
• Data Partitioning by Key (with SpEL support)
• Direct Binding for Co-located Modules (reduce network IO)
43
![Page 44: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/44.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo Domain: Smart Grid Data
44
http://www.cse.iitb.ac.in/debs2014 *
Inspired by ACM DEBS 2014 Grand Challenge* Demonstrate the applicability of event-based systems to provide scalable, real-time analytics over high volume sensor data to compute load forecasting.
Field Name Description
ID Unique ID of the measurement
Timestamp Number of seconds since epoch
Load Load in watts
House ID The house where the plug is located
Household ID The household inside the house
Plug ID The unique ID of the smart plug
![Page 45: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/45.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo Domain: Smart Grid Data
45
Field Name Description
ID Unique ID of the measurement
Timestamp Number of seconds since epoch
Load Load in watts
House ID The house where the plug is located
Household ID The household inside the house
Plug ID The unique ID of the smart plug
Inspired by ACM DEBS 2014 Grand Challenge* Demonstrate the applicability of event-based systems to provide scalable, real-time analytics over high volume sensor data to compute load forecasting.
![Page 46: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/46.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo Objectives
• Predictive models for energy consumption demand
• generated via R and exported as PMML
• Ingesting household meter data to HDFS via HTTP
• partitioning based on House ID
• Real-time data filtering and enrichment
• Real-time model scoring
• performed via Spring XD’s analytics-pmml processor module
• Real-time computed data aggregation
• Asynchronous UI updates
46
![Page 47: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/47.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo Topology
47
XD Admin
Zoo Keeper Zoo Keeper Zoo Keeper
Load
Balancer Generator
XD Container
HTTP
XD Container
HTTP
XD Container
HDFS
XD Container
HDFS
XD Container
HDFS Redis
Rabbit MQ
Hadoop
![Page 48: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/48.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo:
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring XD
48
![Page 49: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/49.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Looking Ahead
• Programming Model • Further Unification of the Batch and Stream Models
• Reactive Streams Support
• Developer Experience • Support for Java Config and Spring Integration DSLs
• Spring Boot-based Module Deployment and Packaging
• Deployment Targets • Spring XD as a PCF service
• Spring XD on Docker
• Spring XD on Mesos
• Quality of Service • Batching and Compression via Message Bus Interceptors
• Comprehensive Security Model
49
![Page 50: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/50.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring XD Sessions
50
TUE 2:30 PM Develop powerful Big Data Applications easily with Spring XD
TUE 4:30 PM Spring XD - A Guided Tour
WED 10:30 AM Building a Recommendation Engine with Spring and Hadoop
WED 2:30 PM IoT Realized - The Connected Car
THU 10:30 AM Spring XD for Real-time Hadoop Workload Analysis
THU 12:45 PM Implementing the Lambda Architecture with Spring XD
![Page 51: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/51.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Platform
51
Grails
Spring IO Platform
Spring XD
Spring Foundation
Apps
Spring Cloud
3rd Party Dependencies
Spring Boot
![Page 52: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/52.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
No Man (Microservice) is an Island
It's excellent to be able to implement a microservice really easily
(Spring Boot), but building a system that way surfaces
"non-functional" requirements that you otherwise didn't have.
There are laws of physics that make some problems unsolvable
(consistency, latency), but brittleness and manageability can be
addressed with generic, boiler plate patterns.
52
![Page 53: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/53.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Emergent features of micro-service systems
Coordination of distributed systems leads to boiler plate patterns
• Distributed/versioned configuration
• Service registration and discovery
• Routing
• Service-to-service calls
• Load balancing
• Circuit Breaker
• Asynchronous
• Distributed messaging
53
![Page 54: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/54.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Components
54
Client Bindings
Service
Discovery
Config
Server
Circuit
Breakers
Edge
Service
Intelligent
Router
Leader
Election
One-time
Tokens
Global
Locks
Cluster
State
Event Bus
![Page 55: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/55.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo:
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud
Components
55
![Page 56: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/56.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Components
• Common features of distributed systems developed by users as
Spring Boot apps
• Highly configurable and customizable
• Always do something sensible out of the box
• Works nicely as standalone apps on developer box
• Easy migration to Cloud and PCF
56
![Page 57: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/57.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Sessions
57
TUE 4:30 PM Security for Microservices with Spring and OAuth2
WED 12:45 PM Simplify Cloud Applications using Spring Cloud
WED 12:45 PM Spring Cloud, Spring Boot and Netflix OSS
WED 2:30 PM Developing Microservices for PaaS with Spring and Cloud Foundry
![Page 58: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/58.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Demo:
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Reactor
58
![Page 59: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/59.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Reactor
• Microservices proliferate in modern architectures
• No Microservice is an Island
• More Microservices === More Runtime Resources required
• More More Runtime Resources required === More $$$
• Microservices have acute need for efficiency
• Contrary to myth: Runtime Resources aren’t free/cheap
• Microservices are natural fit for Reactive Architecture
59
![Page 60: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/60.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Reactor
• What is Reactive Programming?
• Event-driven
• Modular
• Scalable
• Highly-available
• Non-blocking/async
o Blocking IO (BIO) is expensive
o Non-blocking IO (NIO) is more efficient
o NIO means async patterns, which can be hard
60
![Page 61: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/61.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/ 61
Reactive Architecture
• Reactive is usually Asynchronous
• Asynchronous !== Concurrent
• Non-blocking versus Blocking (usually IO)
• Provides Isolation
• Resource usage
• Failure
• Events are replayable
• Reactive can be complex
• Too low-level for most end users
![Page 62: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/62.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Reactor
Spring IO: Components → Reactor
62
Task Queue
Micro
Service
Micro
Service
Micro
Service
Micro
Service
Event
Event Event
![Page 63: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/63.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Reactive Stream Contributors
63
ccv
Doug Lea – SUNY Oswego
![Page 64: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/64.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Reactor
What is Reactive Streams?
64
“...provide a standard for asynchronous stream processing with
non-blocking backpressure.”
github.com/reactive-streams/reactive-streams
Available as a library
org.reactivestreams:reactive-streams:0.4.0.M2
![Page 65: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/65.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Spring IO Core: Reactor
• Reactive Streams API
• Publisher
• Subscriber
• Subscription
• Reactor’s Stream API implements Reactive Streams standard
65
![Page 66: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/66.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/ 66
R: 64
G: 173
B: 100
R: 77
G: 172
B: 169
R: 85 G: 139 B: 49
R: 63
G: 129
B: 179
R: 238
G: 238
B: 238
R: 51 G: 51 B: 51
R: 255 G: 255 B: 255
R: 84
G: 108
B: 159
R: 218
G: 102
B: 102
R: 226
G: 161
B: 47
R: 143
G: 136
B: 73
R: 125
G: 78
B: 128
![Page 67: SpringOne2GX 2014 Day 1 Keynote: Platform Reinvented](https://reader034.fdocuments.in/reader034/viewer/2022052508/559446301a28abfc728b45ff/html5/thumbnails/67.jpg)
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial l icense: http://creativecommons.org/licenses/by-nc/3.0/
Code formatting notes
67
Minimum 16pt
Blue 0 | 0 | 192
Purple 127 | 0 | 85
Orange 241 | 154 | 39
Green (notes) 63 | 127 | 95
Grey (annotations)