Spring IO Foundation
The Spring IO Foundation layer is a cohesive set of APIs and embeddable runtime components that enable you to build applications addressing a wide range of enterprise requirements. For any given application you will of course only need to include those parts of the foundation that your application actually requires. The foundation makes it easy to identify components that work together; it does not force you to include components you wouldn't otherwise need.
All of the major workload types are represented: enterprise integration, batch processing, big data processing, web applications (including WebSocket support), and the creation of server-side APIs in support of single-page apps, mobile clients, and services.
Channels, Adapters, Filters, Transformers
Jobs, Steps, Readers, Writers
Ingestion, Export, Orchestration, Hadoop
Controllers, REST, WebSocket
Spring's web stack has evolved to include comprehensive REST support for the creation of RESTful APIs – useful for supporting mobile and rich-client application architectures. Spring Framework 4 also adds support for the WebSocket programming model.
Integration workloads are another major use case for Spring. For these, Spring IO provides a rich programming model based on Enterprise Integration Patterns and its notions of channels, adapters, filters, and transformers.
Spring IO also defines a domain language for batch processing – batch jobs are divided into processing steps with readers and writers used to read the data in and write it back out again. Spring IO's comprehensive batch framework enables you to build robust batch applications that process large volumes of records.
Of course any given application in the enterprise rarely falls neatly into just one of these buckets, and often contains elements of web, batch, and integration processing all in one. Spring's embedded runtime model makes this easy and natural to do. The emerging category of big data workloads is an example of this. It's one thing to lay down a Hadoop cluster but it's quite another to figure out how you're going to ingest data from all over your enterprise into that cluster, how you're going to orchestrate the batch workloads that process that data, and how you're going to get the results of that processing back into a form that can drive the rest of your business. A fundamental insight here is that these "big data problems" have a lot in common with traditional enterprise integration and batch processing. Spring IO supplements Spring's traditional strengths in these areas to provide all the support you need to build robust and maintainable big data applications.
The data landscape is evolving rapidly. When Spring got started, 'data' pretty much meant a traditional relational database, and maybe a cache in front of it if you were lucky. Today we have a wide variety of data stores covering structured and unstructured data, in-memory and on-disk, standard-size and big. The industry has come to recognize that one size does not fit all, and it's a matter of choosing the most appropriate store for the task in hand. Spring IO addresses this modern data landscape—including full support for Apache Hadoop—whether it be document, graph, key-value, relational, or simply unstructured files.
At the center of the Spring IO Foundation layer, and common across all workload types, we find the core framework itself. Via Spring Framework 4.0, Spring IO enables you to take full advantage of Java SE 8 and the latest updates from EE 7. Spring IO has full support for addressing security concerns, and Spring IO's Reactor provides a foundation for building reactive, asynchronous, event- and data-driven applications.
Provides core support for dependency injection, transaction management, web apps, data access, messaging and more.
Protects your application with comprehensive and extensible authentication and authorization support.
Brings high-productivity dynamic language features to the JVM.
A foundation for reactive fast data applications on the JVM.
The popular Groovy dynamic language is supported as an integral part of the Spring IO platform. Groovy integrates seamlessly with your existing classes and libraries and works especially well with IO Execution DSRs such as Boot and Grails.
Spring IO Execution
The Spring IO Execution layer provides domain-specific runtimes (DSRs) for applications built on the IO Foundation modules. A DSR may run standalone without requiring deployment to an external container. The first release of Spring IO will include three DSRs: Spring XD, Spring Boot, and Grails.
Domain-specific runtime for batch- and stream-based data-oriented applications
Takes an opinionated view of building Spring applications and gets you up and running as quickly as possible.
Builds on Spring to provide a full-stack environment for creating web applications using the Groovy language.
Spring XD provides a powerful runtime and DSL for describing big data ingestion and analytics, export, and Hadoop workflow management. In many cases, descriptions of streams, taps and jobs can be directly pushed to the XD DSR without requiring any code to be written at all. The set of XD modules (components that can be used in DSL expressions) is easily extended using building blocks based on Spring Integration and Spring Batch.
Spring Boot reduces the effort needed to create production-ready, DevOps-friendly, XML-free Spring applications. It simplifies bootstrapping of Spring projects with minimal code, implements an extensible set of operational features such as automated health checking and metrics endpoints, and supports embedded containers enabling the creation of self-contained executables.
Grails provides a productive and stream-lined full-stack web framework by combining the power of the Spring IO Foundation components with a set of comprehensive Groovy-based DSLs.