This document contains information about Josh Long, including his contact details, links to his work, and information about the Spring IO platform. It includes diagrams showing the architecture of Spring IO and its various modules. It also contains slides from one of Josh Long's presentations promoting Spring IO and its features, including Spring Boot, reactive programming, Java 8 support, REST design, security, and mobile development.
Spring, now part of Pivotal, continues to innovate and support next generation workloads. In this talk, I introduce some of the exciting new Spring technologies supporting websockets, Java 8, Java EE 7, data ingestion and stream processing, NoSQL and Hadoop, and production-ready REST, _and_ I introduce tools designed to expedite ramp-up time for teams who want to deliver, quickly.
Slides from my talk introducing Spring Boot. Unfortunately, this talk is 90% live-coding, so I'll post the relevant video recording here when it's available.
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
JavaScript MVC Frameworks are all the rage these days. They’ve taken the web development world by storm. This session explores the various features of the three hottest JavaScript MVC frameworks: AngularJS, Ember.js and React.js. It also compares client-side templating vs. server-side templating and how well each framework supports Isomorphic JavaScript (code that can run both client-side and server-side). Finally, it ranks each framework on 10 different criteria using Yevgeniy Brikman’s framework scorecard.
Video on InfoQ: https://www.infoq.com/presentations/comparing-angular-ember-react
Spring, now part of Pivotal, continues to innovate and support next generation workloads. In this talk, I introduce some of the exciting new Spring technologies supporting websockets, Java 8, Java EE 7, data ingestion and stream processing, NoSQL and Hadoop, and production-ready REST, _and_ I introduce tools designed to expedite ramp-up time for teams who want to deliver, quickly.
Slides from my talk introducing Spring Boot. Unfortunately, this talk is 90% live-coding, so I'll post the relevant video recording here when it's available.
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
JavaScript MVC Frameworks are all the rage these days. They’ve taken the web development world by storm. This session explores the various features of the three hottest JavaScript MVC frameworks: AngularJS, Ember.js and React.js. It also compares client-side templating vs. server-side templating and how well each framework supports Isomorphic JavaScript (code that can run both client-side and server-side). Finally, it ranks each framework on 10 different criteria using Yevgeniy Brikman’s framework scorecard.
Video on InfoQ: https://www.infoq.com/presentations/comparing-angular-ember-react
Java REST API Framework Comparison - UberConf 2021Matt Raible
Use Spring Boot! No, use Micronaut!! Nooooo, Quarkus is the best!!!
There's a lot of developers praising the hottest, and fastest, Java REST frameworks: Micronaut, Quarkus, and Spring Boot. In this session, you'll learn how to do the following with each framework:
✅ Build a REST API
✅ Secure your API with OAuth 2.0
✅ Optimize for production with Docker and GraalVM
I'll also share some performance numbers and pretty graphs to compare community metrics.
Related blog post: https://developer.okta.com/blog/2021/06/18/native-java-framework-comparison
This talk is geared towards users of jQuery plugins who are looking to pick the best plugins and plugin authors who would like a holistic review of existing jQuery plugins and what things to consider when making your own plugins. Marketing tactics and approaches to spreading the word about your plugin will also be discussed.
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015Matt Raible
Many Spring projects exist that leverage XML for their configuration and bean definitions. Most Java web applications use a web.xml to configure their servlets, filters and listeners. This session shows you how you can eliminate XML by configuring your Spring beans with JavaConfig and annotations. It also shows how you can remove your web.xml and configure your web components with Java.
Developing, Testing and Scaling with Apache Camel - UberConf 2015Matt Raible
Apache Camel is an integration framework that allows you to define routing and mediation rules in a number of domain-specific languages. This presentation shows how I used Apache Camel to replace IBM Message Broker on a project. It includes information on how routes were developed using Camel’s Java API and how Camel can be integrated with Spring Boot. It also covers unit, integration and load testing (using Gatling) of these services. Finally, it touches on monitoring with hawtio and New Relic.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Matt Raible
Presentation from Angular Summit talk in September 2015. http://angularsummit.com/conference/boston/2015/09/session?id=34190
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project for you and allow you to use Java 7 or 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Grunt or Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry, Heroku and Openshift.
React is a UI library that is changing the way web applications are written. While there are many benefits to using React, managing an application's complexity as it scales is one of the most powerful.
Web Developers are excited to use HTML 5 features but sometimes they need to explain to their non-technical boss what it is and how it can benefit the company. This presentation provides just enough information to share the capabilities of this new technologies without overwhelming the audience with the technical details.
"What is HTML5?" covers things you might have seen on other websites and wanted to add on your own website but you didn't know it was a feature of HTML 5. After viewing this slideshow you will probably give your web developer the "go ahead" to upgrade your current HTML 4 website to HTML 5.
You will also understand why web developers don't like IE (Internet Explorer) and why they always want you to keep your browser updated to latest version. "I have seen the future. It's in my browser" is the slogan used by many who have joined the HTML 5 revolution.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or JWT. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Java REST API Framework Comparison - UberConf 2021Matt Raible
Use Spring Boot! No, use Micronaut!! Nooooo, Quarkus is the best!!!
There's a lot of developers praising the hottest, and fastest, Java REST frameworks: Micronaut, Quarkus, and Spring Boot. In this session, you'll learn how to do the following with each framework:
✅ Build a REST API
✅ Secure your API with OAuth 2.0
✅ Optimize for production with Docker and GraalVM
I'll also share some performance numbers and pretty graphs to compare community metrics.
Related blog post: https://developer.okta.com/blog/2021/06/18/native-java-framework-comparison
This talk is geared towards users of jQuery plugins who are looking to pick the best plugins and plugin authors who would like a holistic review of existing jQuery plugins and what things to consider when making your own plugins. Marketing tactics and approaches to spreading the word about your plugin will also be discussed.
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015Matt Raible
Many Spring projects exist that leverage XML for their configuration and bean definitions. Most Java web applications use a web.xml to configure their servlets, filters and listeners. This session shows you how you can eliminate XML by configuring your Spring beans with JavaConfig and annotations. It also shows how you can remove your web.xml and configure your web components with Java.
Developing, Testing and Scaling with Apache Camel - UberConf 2015Matt Raible
Apache Camel is an integration framework that allows you to define routing and mediation rules in a number of domain-specific languages. This presentation shows how I used Apache Camel to replace IBM Message Broker on a project. It includes information on how routes were developed using Camel’s Java API and how Camel can be integrated with Spring Boot. It also covers unit, integration and load testing (using Gatling) of these services. Finally, it touches on monitoring with hawtio and New Relic.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Matt Raible
Presentation from Angular Summit talk in September 2015. http://angularsummit.com/conference/boston/2015/09/session?id=34190
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project for you and allow you to use Java 7 or 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Grunt or Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry, Heroku and Openshift.
React is a UI library that is changing the way web applications are written. While there are many benefits to using React, managing an application's complexity as it scales is one of the most powerful.
Web Developers are excited to use HTML 5 features but sometimes they need to explain to their non-technical boss what it is and how it can benefit the company. This presentation provides just enough information to share the capabilities of this new technologies without overwhelming the audience with the technical details.
"What is HTML5?" covers things you might have seen on other websites and wanted to add on your own website but you didn't know it was a feature of HTML 5. After viewing this slideshow you will probably give your web developer the "go ahead" to upgrade your current HTML 4 website to HTML 5.
You will also understand why web developers don't like IE (Internet Explorer) and why they always want you to keep your browser updated to latest version. "I have seen the future. It's in my browser" is the slogan used by many who have joined the HTML 5 revolution.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or JWT. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Building Node.js based APIs in minutes. Achieve full-stack JavaScript, Offline Sync, Geolocation, REST API / JSON, ORM and API Management in open source. Write your own connectors, work on express.js. Create MEAN stack applications connecting Angular to Node to MongoDB. Presented at the Connect.js conference in Atlanta
Picking the Right Node.js Framework for Your Use CaseJimmy Guerrero
Picking the Right Node.js Framework for Your Use Case with Shubhra Kar.
Topics covered in this webinar:
* Understanding the evolution of frameworks by design patterns
* Express
* Hapi
* Sails.js
* LoopBack.io
* Microservices
* IoT
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
This talk introduces some of the compelling features coming in Spring 3.1, 3.2 and then gazes into the future and looks at some of the powerful new features in the upcoming Spring 4.0 release.
Today's applications don't live in a vacuum - you need to take the applications to where your users are. Let Spring's REST support along with its powerful client-side technology support, help you get there faster.
Integration and Batch Processing on Cloud FoundryJoshua Long
This talk explores the new possibilities for scale by using Spring Integration, Spring Batch and RabbitMQ on Cloud Foundry, the open source PaaS from VMWare.
using Spring and MongoDB on Cloud FoundryJoshua Long
This talk introduces how to build MongoDB applications with Spring Data MongoDB on Cloud Foundry. Spring Data provides rich support for easily building applications that work on multiple data stores.
A Walking Tour of (almost) all of Springdom Joshua Long
this is the deck for my 3+ hour walking tour talk that I give as a workshop at various conferences. This talk introduces practically everything in Spring -- come into the talk unaware of the concepts or frameworks and leave with a working knowledge of all the frameworks, and of all the applications for the technologies.
This talk introduces the role that Spring MVC and REST can play as a service-side endpoint model that can be connected to from mobile, rich, and desktop applications.
A Spring Batch bootcamp! Spring Batch is the open source batch processing framework from SpringSource, makes of the Spring framework. http://www.springsource.org/spring-batch
Heard about Cloud Foundry? Already a Spring, Grails, Ruby, Node.js, Scala, or generalist programmer looking to understand what Cloud Foundry, the open source PaaS from VMware, means to you? Are you an architect trying to understand where PaaS fits it, and what it brings to the table? If you answered "yes" to any of those questions, then join the experts in this bootcamp to Cloud Foundry.
Spring in the Cloud - using Spring with Cloud FoundryJoshua Long
This talk's about using the power of the Spring framework with Cloud Foundry, the open source PaaS (platform as-a-service) from VMware. This is a bit more deep an introduction than my other Spring and Cloud Foundry talk, and so I've kept both, while encouraging people to check this one out, first.
Spring and Cloud Foundry; a Marriage Made in HeavenJoshua Long
Spring and Cloud Foundry: a Marriage Made in Heaven. This talk introduces how to build Spring applications on top of Cloud Foundry, the open source PaaS from VMware
The Spring framework packs a lot of punch, out of the box! The surface-level component model's extraordinarily flexible, and works well with in most situations, but the real power of Spring lays just underneath, in the numerous SPIs that Spring exposes, so that you can tailor the component model to your own use cases. Spring's SPI's are a great example of what Bob Martin describes as the open-closed principle, and it provides the solid underpinnings upon which the other Spring frameworks, including Spring Integration, Spring MVC and Spring Batch are built. In this talk, Josh Long, the Spring developer advocate from SpringSource, provides a walking tour of Spring's extension points.
In this talk, originally presented at JavaZone, in Oslo, Norway, I introduce the broad swath of supported inversion-of-control options in Spring's component model, and then introduce some more advanced features of the component model.
Enterprise Integration and Batch Processing on Cloud FoundryJoshua Long
Spring Integration, RabbitMQ and Spring Batch are natural vehicles for building bigger, better, more powerful applications on top of the scale that only Cloud Foundry can provide. This is the deck from my Spring IO 2012 talk.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
2. I AM…
Josh Long (⻰龙之春)
Spring Developer Advocate
@starbuxman
Jean Claude
van Damme!
| josh.long@springsource.com
Java mascot Duke
some thing’s I’ve authored...
3. THE SPRING IO PLATFORM (SOME “MARCHITECTURE”)
Deploy to Cloud
or on premise
Big,
Fast,
Flexible
Data
GemFire
Core
Model
Web,
Integration,
Batch
4. THE SPRING IO PLATFORM (SOME ARCHITECTURE)
XD
BOOT
GRAILS
Stream, Taps, Jobs
Bootable, Minimal, Ops-Ready
Full-stack, Web
INTEGRATION
BATCH
BIG DATA
WEB
Channels, Adapters,
Filters, Transformers
Jobs, Steps,
Readers, Writers
Ingestion, Export,
Orchestration, Hadoop
Controllers, REST,
WebSocket
DATA
RELATIONAL
NON-RELATIONAL
CORE
FRAMEWORK
SECURITY
GROOVY
REACTOR
21. JAVA CONFIGURATION
Java
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 );
}
22. SPRING 4 IS JAVA 8 READY
a quick note on
Java 8
...
!
Delayed again! from 09/2013 to as late as 03/2014!
Meanwhile, even
C++ has lambas...
23. BUT ARE THE IDES JAVA 8 READY?
a quick note on
Java 8
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.
!
!
24. JAVA 8 METHOD REFERENCES ARE A GREAT FIT FOR SPRING
a quick note on
Java 8
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);
25. JAVA 8 LAMBAS ARE A GREAT FIT FOR SPRING
a quick note on
Java 8
Spring 4.0 to be GA against Developer Preview by end of 2014.
!
lambas are a great fit for Spring and Twitter!
26. SPRING 4 AND JAVA 8
a quick note on
Java 8
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;
27. SPRING 4 AND JAVA 8
a quick note on
Java 8
Repeatable Annotations
@Scheduled(cron = "0 0 12 * * ?")
@Scheduled(cron = "0 0 18 * * ?")
public void performTempFileCleanup() {
...
}
28. REST DESIGN WITH SPRING
LET’S TURN OUR GAZE TO A TIME, LONG AGO, WHEN…
dumb clients roamed the earth... like dinosaurs
33. SO HOW DO OUR SMART CLIENTS CONNECT TO OUR SERVICES?
when someone uses SOAP because it’s “simple”
34. USE REST, OF COURSE!
REST Is..
!
• URI’s identify resources
• HTTP verbs describe a limited set of operations that can be used to manipulate
a resource
– GET
– DELETE
– PUT
– POST
– less used other verbs
• Headers help describe the messages
35. WHAT IS REST? (…BABY DON’T HURT ME, NO MORE…)
The Richardson Maturity Model
Level 0: swamp of POX
Uses HTTP mainly as a tunnel through one URI
e.g., SOAP, XML-RPC
Usually features on HTTP verb (POST)
http://martinfowler.com/articles/richardsonMaturityModel.html
36. LEVEL 1: URIS TO DISTINGUISH NOUNS
The Richardson Maturity Model
Level 1: resources
Multiple URIs to distinguish related nouns
e.g., /articles/1, /articles/2, vs. just /articles
http://martinfowler.com/articles/richardsonMaturityModel.html
37. LEVEL 2: GROUND ZERO USING SPRING MVC
The Richardson Maturity Model
Level 2: HTTP verbs
leverage transport-native properties to enhance service
e.g., HTTP GET and PUT and DELETE and POST
Uses idiomatic HTTP controls like status codes, headers
http://martinfowler.com/articles/richardsonMaturityModel.html
38. TANGENT: A QUICK PRIMER ON SPRING MVC
incoming
requests
delegate
request
DispatcherServlet
return
response
model
delegate
rendering of
response
model
return
control
render
response
view
template
controller
39. REST DESIGN WITH SPRING
import static ...RequestMethod.* ;
import static ...MediaType.* ;
!
@RestController
@RequestMapping (value = “/users/”)
class UserController {
!
@RequestMapping (method = DELETE, value = “/{user}”)
User delete(@PathVariable Long user) {
return crmService.removeUser(user);
}
@RequestMapping (method = GET, value = “/{user}”)
User read(@PathVariable Long user) {
return crmService.findById(user);
}
..
}
42. LEVEL 3: HATEOAS, OR THE UNPRONOUNCEABLE ACRONYM
The Richardson Maturity Model
Level 3: Hypermedia Controls (aka, HATEOAS)
No a priori knowledge of service required
Navigation options are provided by service and hypermedia controls
Promotes longevity through a uniform interface
http://martinfowler.com/articles/richardsonMaturityModel.html
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
43. METADATA == LINKS
The Richardson Maturity Model
Level 3: Hypermedia Controls (aka, HATEOAS)
Links provide possible navigations from a given resource
Links are dynamic, based on resource state.
!
<link href=“http://...:8080/users/232/customers”
rel= “customers”/>
http://martinfowler.com/articles/richardsonMaturityModel.html
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
44. REST DESIGN WITH SPRING
import static ...RequestMethod.* ;
import static ...MediaType.* ;
!
@RestController
@RequestMapping (value = “/users/” )
class UserController {
!
!
@Inject ResourceAssembler<User, Resource<User>> userResourceAssembler;
@RequestMapping (method = DELETE, value = “/{user}”)
Resource<User> delete(@PathVariable Long user) {
return userResourceAssembler.toResource( crmService.removeUser(user) );
}
@RequestMapping (method = DELETE, value = “/{user}”)
Resource<User> read(@PathVariable Long user) {
return userResourceAssembler.toResource( crmService.findById(user));
}
..
45. !
REST DESIGN WITH SPRING
@Component
class UserResourceAssembler implements ResourceAssembler<User, Resource<User>> {
!
!
public Resource<User> toResource(User user) {
Resource<User> userResource = new Resource<User>(user);
Collection<Link> links = new ArrayList<Link>();
Link toPhoto = linkTo( methodOn(UserProfilePhotoController.class)
.loadUserProfilePhoto( user.getId() ))
.withRel(“photos”);
Link toSelf = linkTo( methodOn( UserController.class))
.loadUser( user.getId() ))
.withSelfRel();
Resource<User> userResource =
new Resource<User>(user, Arrays.asList(toSelf, toPhoto));
54. SECURITY
Spring Security is a modern
security framework for a
modern age
!
• OAuth
• sign in / out & “Remember Me” support
• Kerbreros
• CAS
• pam
• ActiveDirectory / LDAP
• Encryption (TLS/SSL integration)
• x509 certificates
• OpenID
55. SECURITY
Spring Security is a modern security
framework for a modern age
!
Yes
client submits
authentication
credentials
Authentication
Mechanism
collects the details
No - retry!
Authentication is
valid?
Store Authentication in
SecurityContextHolder
process original request
56. SECURITY
Spring Security is a modern security
framework for a modern age
!
Yes
client submits
authentication
credentials
Authentication
Mechanism
collects the details
Authentication
Store Authentication in
SecurityContextHolder
Authentication is
valid?
Mechanism collects the details!
!
No AuthenticationRequest is sent to AuthenticationManager!
- retry!
!
(passes it through a chain of AuthenticationProviders)!
!
AuthenticationProvider asks a UserDetailsService for a UserDetails!
!
The UserDetails object is used to build an Authentication object!
!
!
process original request
57. SECURITY
!
Spring Security features a
clean Java configuration
API
@Configuration
@EnableWebSecurity
class SecurityConfig extends WebSecurityConfigurerAdapter {
!
!
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/api/*").authenticated();
http.formLogin()
.loginPage("/login")
.passwordParameter("pw")
.usernameParameter("user");
http.x509();
}
58. A CONNECTED WORLD WITH SPRING SOCIAL
* source: visual.ly/60-seconds-social-media
A Connected World in 00:60 seconds
700ksent
messages
1090
visitors
2000
checkins
175k
tweets
7610
searches
2MM
videos viewed
3125
photos uploaded
7630sent
messages
63. REST DESIGN WITH SPRING
Setting up Spring Social
@Configuration
@EnableJdbcConnectionRepository
@EnableFacebook(appId="${facebook.clientId}",
appSecret="${facebook.clientSecret}")
@EnableTwitter(appId=“${twitter.consumerKey}",
appSecret="${twitter.consumerSecret}")
@EnableLinkedIn(appId="${linkedin.consumerKey}",
appSecret="${linkedin.consumerSecret}")
public class SocialConfig {
// ...
64. REST DESIGN WITH SPRING
Setting up Spring Social
@Controller
class FacebookFriendsController {
!
!
}
!
@Inject Facebook facebook;
@RequestMapping(value="/facebook/friends", method=GET)
public String showFeed(Model model) {
model.addAttribute("friends", facebook.friendOperations().getFriendProfiles());
return "facebook/friends";
}
65. DEMO:
C O N N E C T I N G A P P L I C AT I O N S T O
USERS WITH SPRING SOCIAL
67. MOBILE FIRST APPLICATIONS
units (in millions) of units of each type of platform shipped
Linux Phone
BlackBerry
Symbian
Windows Mobile
iOS
Android
2Q 2012
2Q 2013
0
50
100
150
http://www.idc.com/getdoc.jsp?containerId=prUS24257413
200
71. SPRING SUPPORTS JAVA EE
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)
73. SPRING PROFILES MAKE IT EASY TO ADAPT
@Configuration
@Profile("cloud")
public class CloudConfig {
!
@Bean public Cloud cloud() throws CloudException {
CloudFactory cloudFactory = new CloudFactory();
return cloudFactory.getCloud();
}
@Bean public DataSource dataSource() {
return cloud().getSingletonServiceConnector(DataSource.class, null);
}
}
76. …AND A RICH ECOSYSTEM OF THIRD PARTY INTEGRATIONS
77. SPRING IS THE LEADING COMPONENT MODEL
Glassfish
Websphere
WebLogic
JBoss
Jetty
Apache Tomcat
% of survey of 1800
Java developers.
Multiple choices.
0
15
30
45
Source: ZeroTurnaround Developer Productivity Report 2012
60
78. SPRING INTEGRATION MAKES EIP EASY
Integration
• ! hard to get right
• patterned after “EIP book” patterns
• supports numerous adapters and gateways for external
systems
82. BATCH AND INTEGRATION
Batch Processing...
• ! avoids idle computing resources
• allows the system to use different priorities for batch and
interactive work
• supports numerous sinks and sources
• supports JSR 352 - Batch Applications
86. DEMO:
U S I N G S P R I N G B AT C H &
I N T E G R AT I O N
87.
88. SPRING SUPPORTS ALL THE DATA!
Spring supports all the SQLs:
NoSQL, NOSQL, and SQL
!
89. REST DESIGN WITH SPRING
!
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.repository.annotation.RestResource;
!
import java.util.List;
!
@RestResource (path = "users", rel = "users")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
!
// select * from users where username = ?
User findByUsername(@Param("username") String username);
!
!
}
// select * from users where firstName =? or lastName = ? or username = ?
List<User> findUsersByFirstNameOrLastNameOrUsername(
@Param("firstName") String firstName,
@Param("lastName") String lastName,
@Param("username") String username);
90. PROJECT REACTOR
The future is Reactive
!
Reactor: foundational
library. Drives drivers,
servers, data integration
libraries, domain
integration libraries, and
evented architectures
!
Used in: Spring
Integration, websocket =>
STOMP support, Grails,
etc.
101. “
china
on 11/11/2012 (the “Double Sticks” promotion
day), Tmall and Taobao witnessed 147 million
user visits, purchases of 30 million people and
nearly 100 million paid orders. At 0:00, more
than 10 million users were concurrently online
”
* source: http://www.infoq.com/news/2012/12/interview-taobao-tmall
http://spring.io/blog/2013/03/04/spring-at-china-scale-alibaba-group-alipay-taobao-and-tmall/
102. Spring and RabbitMQ:
powering India’s 1.2 B Person Biometric DB
• 1.2 billion residents
• ~75% literacy
• less than 3% pay incomes taxes
• less than 20% banking
• 800 million mobile, ~200-300 million migrant
workers
!
• Government spends about $25-40 billion on
direct attributes
• residents have no standard identity
• most programs plagued with ghost and multiple
identities causing leakage of 30-40%
india
103. japan
• traded on JASDAQ
• largest Java consultancy in Japan
• Spring Batch
– handles customer profile information and real-time ad matching system
• Spring is agile enabler
– production control system
– just-in-time production is really the heart of manufacturing
– cost decreased 30%
104. china
• 1.3 billion people in China
• Google is either mostly blocked or - from Hong
Kong - very slow
!
• Baidu has its own Android operating system, cloud
services (like GMail, Dogs, etc.)
!
• Built micro service architecture that builds on top of
Spring
!
• Custom web frameworks using Spring XML
namespaces as global integration API