SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Josh Long (⻰龙之春)
@starbuxman
joshlong.com
josh.long@springsource.com
slideshare.net/joshlong
github.com/joshlong
http://spring.io
T H E U P D AT E
ABOUT ME
interested in big data, the open
web, cloud and all things Spring.
About Josh Long @Starbuxman
josh@joshlong.com
josh.long@springsource.com
Developer Advocate
SPRING IS.. SPRING.IO
WEB
Controllers, REST,
WebSocket
INTEGRATION
Channels, Adapters,
Filters, Transformers
BATCH
Jobs, Steps,
Readers, Writers
BIG DATA
Ingestion, Export,
Orchestration, Hadoop
DATA
NON-RELATIONALRELATIONAL
CORE
GROOVYFRAMEWORK SECURITY REACTOR
GRAILS
Full-stack, Web
XD
Stream, Taps, Jobs
BOOT
Bootable, Minimal, Ops-Ready
SPRING IS.. SPRING.IO
SPRING IS.. SPRING.IO
SPRING IS.. SPRING.IO
SPRING IS.. SPRING.IO
SPRING IS.. SPRING.IO
SPRING.IO IS REFERENCE IN ACTION
REST DESIGN WITH SPRING
H T T P : / / S P R I N G . I O
Demo
SPRING IS.. GITHUB
SPRING WORKS IN MANY LANGUAGES
Spring loves the JVM:
Java (5,6,7, and 8), Groovy, Scala, etc.
SPRING WORKS IN MANY LANGUAGES
val applicationContext =
new FunctionalConfigApplicationContext( classOf[ServiceConfiguration])
// ServiceConfiguration.scala
class ServiceConfiguration extends FunctionalConfiguration {
importClass(classOf[DataSourceConfiguration])
val dataSource : DataSource = getBean(“dataSource”)
val jdbcTemplate = bean() {
new JdbcTemplate( dataSource )
}
val jdbcTransactionManager = bean(“txManager”) {
new JdbcTransactionManager(dataSource)
}
}
Scala
SPRING WORKS IN MANY LANGUAGES
def bb = new BeanBuilder()
bb.loadBeans("classpath:*SpringBeans.groovy")
def applicationContext = bb.createApplicationContext()
// MySpringBeans.groovy
import o.sf.jdbc.core.JdbcTemplate
import o.sf.jdbc.datasource.DataSourceTransactionManager
beans {
jdbcTemplate(JdbcTemplate) {
dataSource = dataSource
}
transactionManager(DataSourceTransactionManager) {
dataSource = dataSource
}
}
Groovy
SPRING WORKS IN MANY LANGUAGES
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext( ServiceConfiguration.class);
// ServiceConfiguration.java
@Configuration
@ComponentScan
@Import(DataSourceConfiguration.class)
@EnableTransactionManagement
class ServiceConfiguration {
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) throws Exception {
return new JdbcTemplate( dataSource );
}
@Bean
public PlatformTransactionManager jdbcTransactionManager(DataSource dataSource){
return new JdbcTransactionManager (dataSource );
}
}
Java
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Delayed again! from 09/2013 to as late as 03/2014!
Meanwhile, even has lambas...
...
C++
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
IDE Support:
IntelliJ IDEA has had Java 8 support for a year
Eclipse won’t have any until June 2014 (..!!)
Eclipse-based Spring Tool Suite (STS) has beta Java 8 support.
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Spring 4.0 to be GA against Developer Preview by end of 2013.
Method references are a great fit for Spring!
JdbcTemplate jdbcTemplate;
// method references
private Customer map(ResultSet rs, int rowNum)
throws SQLException {
	 return new Customer( rs.getString("name"), rs.getInt("age") );
}
// let it satisfy the `RowMapper` functional interface
Customer customer = jdbcTemplate.queryForObject(
"select name, age from customers ",
this::map);
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Spring 4.0 to be GA against Developer Preview by end of 2014.
lambas are a great fit for Spring!
JdbcTemplate jdbc;
Customer customer = jdbc.queryForObject(sql,
(rs, rowNum) -> new Customer(rs.getLong("id")));
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Spring 4.0 to be GA against Developer Preview by end of 2014.
lambas are a great fit for Spring and Twitter!
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
JSR-310 - Date and Time
// declarative date format
import java.time.*;
import org.springframework.format.annotation.*;
public class Customer {
@DateTimeFormat(iso=ISO.DATE)
private LocalDate birthDate;
@DateTimeFormat(pattern="M/d/yy h:mm")
private LocalDateTime lastContact;
}
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Repeatable Annotations
@Scheduled(cron = "0 0 12 * * ?")
@Scheduled(cron = "0 0 18 * * ?")
public void performTempFileCleanup() {
...
}
SPRING WORKS IN MANY LANGUAGES
Java 8
a quick note on
Spring 4.0
JDK 6 -> JDK 8
Java EE 5 (with JPA 2.0 feature pack) -> Java EE 7
SPRING RUNS WELL ON JAVA EE 7
Spring works well in Java EE environments
Supports Java EE 7: Date/Time API, JTA 1.2, JMS 2.0, JPA 2.1, Bean
Validation 1.1, the new concurrency API in JSR-236, Servlet 3.1, and
WebSockets (JSR 356)
Even participated in a few JSRs: the websocket JSR (356) and the
Batch JSR (352)
SPRING IS WHERE YOU ARE
SPRING IS WHERE YOU ARE
SPRING IS WHERE YOU ARE
SPRING IS WHERE YOU ARE
S P R I N G C L O U D A N D
Demo
SPRING SUPPORTS NOSQL
Spring supports all the SQLs:
NoSQL, NOSQL, and SQL
SIMPLIFIED DATA ACCESS++
Spring Data offers conventional repositories,
*Template implementations, unified data
access exception handling
S P R I N G D ATA J PA R E P O S I TO R I E S
Demo
S P R I N G D ATA R E D I S C A C H E :
Demo
SPRING SUPPORTS
Surviving the Big Data
Wild-West with
Spring for Hadoop
SPRING SUPPORTS
But How Do You Process Data Realtime?
@metamarkets founder Michael E. Driscoll:
SPRING SUPPORTS
Introducing Spring XD
sources
sinks
S P R I N G X D A N D P I V O TA L H D
Demo
SPRING IS.. MESSAGING AND INTEGRATION FRIENDLY
Spring’s REST and Security support
AsyncRestTemplate
Hypermedia Links
@RestController
Websocket
S P R I N G C R M R E S T D E M O
Demo
SPRING IS EASY TO GET STARTED WITH
Boot
Autoconfigure
Starters
CLI
Actuator
Tools
Samples
Bootstrap
your productivity
SPRING SUPPORTS CONVENTION OVER CONFIGURATION
SPRING SUPPORTS CONVENTION OVER CONFIGURATION
S P R I N G B O O T TO M C AT S A M P L E
Demo
SPRING IS.. MESSAGING AND INTEGRATION FRIENDLY
Spring gets (and sends!) websockets
WebSockets delegating to implementations on app servers like GlassFish,
Tomcat, and Jetty
Supports Sock.js server, superset of WS.
higher level STOMP supported on WS
supports JSR 356 (javax.websocket.*) support.
W E B S O C K E T T R A D E R
Demo
Any
Questions
@starbuxman
josh.long@springsource.com
josh@joshlong.com
github.com/joshlong
slideshare.net/joshlong
?

Weitere ähnliche Inhalte

Was ist angesagt?

Big data beyond the JVM - DDTX 2018
Big data beyond the JVM -  DDTX 2018Big data beyond the JVM -  DDTX 2018
Big data beyond the JVM - DDTX 2018
Holden Karau
 
YQL:: Select * from Internet
YQL:: Select * from InternetYQL:: Select * from Internet
YQL:: Select * from Internet
drgath
 
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Holden Karau
 

Was ist angesagt? (20)

Graphql
GraphqlGraphql
Graphql
 
A Practitioner’s guide to Hardened JavaScript
A Practitioner’s guide to Hardened JavaScriptA Practitioner’s guide to Hardened JavaScript
A Practitioner’s guide to Hardened JavaScript
 
Not Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabsNot Only Streams for Akademia JLabs
Not Only Streams for Akademia JLabs
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
 
Apache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloudApache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloud
 
Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!
 
Big data beyond the JVM - DDTX 2018
Big data beyond the JVM -  DDTX 2018Big data beyond the JVM -  DDTX 2018
Big data beyond the JVM - DDTX 2018
 
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
Introducing Spring Auto REST Docs - Spring IO 2017
Introducing Spring Auto REST Docs - Spring IO 2017Introducing Spring Auto REST Docs - Spring IO 2017
Introducing Spring Auto REST Docs - Spring IO 2017
 
Elasticsearch for SQL Users
Elasticsearch for SQL UsersElasticsearch for SQL Users
Elasticsearch for SQL Users
 
YQL:: Select * from Internet
YQL:: Select * from InternetYQL:: Select * from Internet
YQL:: Select * from Internet
 
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with BehatGrand Rapids PHP Meetup: Behavioral Driven Development with Behat
Grand Rapids PHP Meetup: Behavioral Driven Development with Behat
 
The things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and AkkaThe things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and Akka
 
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
 
Rails 101
Rails 101Rails 101
Rails 101
 
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love itDrupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it
 
Spring rest-doc-2015-11
Spring rest-doc-2015-11Spring rest-doc-2015-11
Spring rest-doc-2015-11
 
Austin cassandra meetup
Austin cassandra meetupAustin cassandra meetup
Austin cassandra meetup
 
Autoscaling Best Practices - WebPerf Barcelona Oct 2014
Autoscaling Best Practices - WebPerf Barcelona Oct 2014Autoscaling Best Practices - WebPerf Barcelona Oct 2014
Autoscaling Best Practices - WebPerf Barcelona Oct 2014
 

Ähnlich wie the Spring Update from JavaOne 2013

Old Oracle Versions
Old Oracle VersionsOld Oracle Versions
Old Oracle Versions
Jeffrey Kemp
 
Big Data Beyond the JVM - Strata San Jose 2018
Big Data Beyond the JVM - Strata San Jose 2018Big Data Beyond the JVM - Strata San Jose 2018
Big Data Beyond the JVM - Strata San Jose 2018
Holden Karau
 
Elephant in the room: A DBA's Guide to Hadoop
Elephant in the room: A DBA's Guide to HadoopElephant in the room: A DBA's Guide to Hadoop
Elephant in the room: A DBA's Guide to Hadoop
Stuart Ainsworth
 

Ähnlich wie the Spring Update from JavaOne 2013 (20)

Spark Streaming @ Berlin Apache Spark Meetup, March 2015
Spark Streaming @ Berlin Apache Spark Meetup, March 2015Spark Streaming @ Berlin Apache Spark Meetup, March 2015
Spark Streaming @ Berlin Apache Spark Meetup, March 2015
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long
 
Big Data Processing with .NET and Spark (SQLBits 2020)
Big Data Processing with .NET and Spark (SQLBits 2020)Big Data Processing with .NET and Spark (SQLBits 2020)
Big Data Processing with .NET and Spark (SQLBits 2020)
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
Spark with Azure HDInsight - Tampa Bay Data Science - Adnan Masood, PhD
Spark with Azure HDInsight  - Tampa Bay Data Science - Adnan Masood, PhDSpark with Azure HDInsight  - Tampa Bay Data Science - Adnan Masood, PhD
Spark with Azure HDInsight - Tampa Bay Data Science - Adnan Masood, PhD
 
Old Oracle Versions
Old Oracle VersionsOld Oracle Versions
Old Oracle Versions
 
Polyalgebra
PolyalgebraPolyalgebra
Polyalgebra
 
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
 
Using Spring with Scala
Using Spring with ScalaUsing Spring with Scala
Using Spring with Scala
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
Introduction to PolyBase
Introduction to PolyBaseIntroduction to PolyBase
Introduction to PolyBase
 
Open source report writing tools for IBM i Vienna 2012
Open source report writing tools for IBM i  Vienna 2012Open source report writing tools for IBM i  Vienna 2012
Open source report writing tools for IBM i Vienna 2012
 
Big Data Beyond the JVM - Strata San Jose 2018
Big Data Beyond the JVM - Strata San Jose 2018Big Data Beyond the JVM - Strata San Jose 2018
Big Data Beyond the JVM - Strata San Jose 2018
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshop
 
Not only SQL
Not only SQL Not only SQL
Not only SQL
 
Elephant in the room: A DBA's Guide to Hadoop
Elephant in the room: A DBA's Guide to HadoopElephant in the room: A DBA's Guide to Hadoop
Elephant in the room: A DBA's Guide to Hadoop
 
Strata 2015 Data Preview: Spark, Data Visualization, YARN, and More
Strata 2015 Data Preview: Spark, Data Visualization, YARN, and MoreStrata 2015 Data Preview: Spark, Data Visualization, YARN, and More
Strata 2015 Data Preview: Spark, Data Visualization, YARN, and More
 
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
Does Java Have a Future After Version 8? (Belfast JUG April 2014)Does Java Have a Future After Version 8? (Belfast JUG April 2014)
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
 
Node.js Frameworks & Design Patterns Webinar
Node.js Frameworks & Design Patterns WebinarNode.js Frameworks & Design Patterns Webinar
Node.js Frameworks & Design Patterns Webinar
 

Mehr von Joshua Long

Extending spring
Extending springExtending spring
Extending spring
Joshua Long
 
The spring 32 update final
The spring 32 update finalThe spring 32 update final
The spring 32 update final
Joshua Long
 
Spring in-the-cloud
Spring in-the-cloudSpring in-the-cloud
Spring in-the-cloud
Joshua Long
 

Mehr von Joshua Long (20)

Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
 
Extending spring
Extending springExtending spring
Extending spring
 
The spring 32 update final
The spring 32 update finalThe spring 32 update final
The spring 32 update final
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
Integration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud FoundryIntegration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud Foundry
 
using Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundryusing Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundry
 
Spring in-the-cloud
Spring in-the-cloudSpring in-the-cloud
Spring in-the-cloud
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Multi client Development with Spring
Multi client Development with SpringMulti client Development with Spring
Multi client Development with Spring
 
Spring Batch Behind the Scenes
Spring Batch Behind the ScenesSpring Batch Behind the Scenes
Spring Batch Behind the Scenes
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
 
Spring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in HeavenSpring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in Heaven
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Extending Spring for Custom Usage
Extending Spring for Custom UsageExtending Spring for Custom Usage
Extending Spring for Custom Usage
 
Using Spring's IOC Model
Using Spring's IOC ModelUsing Spring's IOC Model
Using Spring's IOC Model
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

the Spring Update from JavaOne 2013

  • 2. ABOUT ME interested in big data, the open web, cloud and all things Spring. About Josh Long @Starbuxman josh@joshlong.com josh.long@springsource.com Developer Advocate
  • 3. SPRING IS.. SPRING.IO WEB Controllers, REST, WebSocket INTEGRATION Channels, Adapters, Filters, Transformers BATCH Jobs, Steps, Readers, Writers BIG DATA Ingestion, Export, Orchestration, Hadoop DATA NON-RELATIONALRELATIONAL CORE GROOVYFRAMEWORK SECURITY REACTOR GRAILS Full-stack, Web XD Stream, Taps, Jobs BOOT Bootable, Minimal, Ops-Ready
  • 10. REST DESIGN WITH SPRING H T T P : / / S P R I N G . I O Demo
  • 12. SPRING WORKS IN MANY LANGUAGES Spring loves the JVM: Java (5,6,7, and 8), Groovy, Scala, etc.
  • 13. SPRING WORKS IN MANY LANGUAGES val applicationContext = new FunctionalConfigApplicationContext( classOf[ServiceConfiguration]) // ServiceConfiguration.scala class ServiceConfiguration extends FunctionalConfiguration { importClass(classOf[DataSourceConfiguration]) val dataSource : DataSource = getBean(“dataSource”) val jdbcTemplate = bean() { new JdbcTemplate( dataSource ) } val jdbcTransactionManager = bean(“txManager”) { new JdbcTransactionManager(dataSource) } } Scala
  • 14. SPRING WORKS IN MANY LANGUAGES def bb = new BeanBuilder() bb.loadBeans("classpath:*SpringBeans.groovy") def applicationContext = bb.createApplicationContext() // MySpringBeans.groovy import o.sf.jdbc.core.JdbcTemplate import o.sf.jdbc.datasource.DataSourceTransactionManager beans { jdbcTemplate(JdbcTemplate) { dataSource = dataSource } transactionManager(DataSourceTransactionManager) { dataSource = dataSource } } Groovy
  • 15. SPRING WORKS IN MANY LANGUAGES ApplicationContext applicationContext = new AnnotationConfigApplicationContext( ServiceConfiguration.class); // ServiceConfiguration.java @Configuration @ComponentScan @Import(DataSourceConfiguration.class) @EnableTransactionManagement class ServiceConfiguration { @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) throws Exception { return new JdbcTemplate( dataSource ); } @Bean public PlatformTransactionManager jdbcTransactionManager(DataSource dataSource){ return new JdbcTransactionManager (dataSource ); } } Java
  • 16. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Delayed again! from 09/2013 to as late as 03/2014! Meanwhile, even has lambas... ... C++
  • 17. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on IDE Support: IntelliJ IDEA has had Java 8 support for a year Eclipse won’t have any until June 2014 (..!!) Eclipse-based Spring Tool Suite (STS) has beta Java 8 support.
  • 18. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Spring 4.0 to be GA against Developer Preview by end of 2013. Method references are a great fit for Spring! JdbcTemplate jdbcTemplate; // method references private Customer map(ResultSet rs, int rowNum) throws SQLException { return new Customer( rs.getString("name"), rs.getInt("age") ); } // let it satisfy the `RowMapper` functional interface Customer customer = jdbcTemplate.queryForObject( "select name, age from customers ", this::map);
  • 19. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Spring 4.0 to be GA against Developer Preview by end of 2014. lambas are a great fit for Spring! JdbcTemplate jdbc; Customer customer = jdbc.queryForObject(sql, (rs, rowNum) -> new Customer(rs.getLong("id")));
  • 20. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Spring 4.0 to be GA against Developer Preview by end of 2014. lambas are a great fit for Spring and Twitter!
  • 21. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on JSR-310 - Date and Time // declarative date format import java.time.*; import org.springframework.format.annotation.*; public class Customer { @DateTimeFormat(iso=ISO.DATE) private LocalDate birthDate; @DateTimeFormat(pattern="M/d/yy h:mm") private LocalDateTime lastContact; }
  • 22. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Repeatable Annotations @Scheduled(cron = "0 0 12 * * ?") @Scheduled(cron = "0 0 18 * * ?") public void performTempFileCleanup() { ... }
  • 23. SPRING WORKS IN MANY LANGUAGES Java 8 a quick note on Spring 4.0 JDK 6 -> JDK 8 Java EE 5 (with JPA 2.0 feature pack) -> Java EE 7
  • 24. SPRING RUNS WELL ON JAVA EE 7 Spring works well in Java EE environments Supports Java EE 7: Date/Time API, JTA 1.2, JMS 2.0, JPA 2.1, Bean Validation 1.1, the new concurrency API in JSR-236, Servlet 3.1, and WebSockets (JSR 356) Even participated in a few JSRs: the websocket JSR (356) and the Batch JSR (352)
  • 25. SPRING IS WHERE YOU ARE
  • 26. SPRING IS WHERE YOU ARE
  • 27. SPRING IS WHERE YOU ARE
  • 28. SPRING IS WHERE YOU ARE
  • 29. S P R I N G C L O U D A N D Demo
  • 30. SPRING SUPPORTS NOSQL Spring supports all the SQLs: NoSQL, NOSQL, and SQL
  • 31. SIMPLIFIED DATA ACCESS++ Spring Data offers conventional repositories, *Template implementations, unified data access exception handling
  • 32. S P R I N G D ATA J PA R E P O S I TO R I E S Demo
  • 33. S P R I N G D ATA R E D I S C A C H E : Demo
  • 34. SPRING SUPPORTS Surviving the Big Data Wild-West with Spring for Hadoop
  • 35. SPRING SUPPORTS But How Do You Process Data Realtime? @metamarkets founder Michael E. Driscoll:
  • 37. S P R I N G X D A N D P I V O TA L H D Demo
  • 38. SPRING IS.. MESSAGING AND INTEGRATION FRIENDLY Spring’s REST and Security support AsyncRestTemplate Hypermedia Links @RestController Websocket
  • 39. S P R I N G C R M R E S T D E M O Demo
  • 40. SPRING IS EASY TO GET STARTED WITH Boot Autoconfigure Starters CLI Actuator Tools Samples Bootstrap your productivity
  • 41. SPRING SUPPORTS CONVENTION OVER CONFIGURATION
  • 42. SPRING SUPPORTS CONVENTION OVER CONFIGURATION
  • 43. S P R I N G B O O T TO M C AT S A M P L E Demo
  • 44. SPRING IS.. MESSAGING AND INTEGRATION FRIENDLY Spring gets (and sends!) websockets WebSockets delegating to implementations on app servers like GlassFish, Tomcat, and Jetty Supports Sock.js server, superset of WS. higher level STOMP supported on WS supports JSR 356 (javax.websocket.*) support.
  • 45. W E B S O C K E T T R A D E R Demo