It Happens Every Spring (One)

Spring One Platform opened this week with the usual cheesy jokes you expect from tech leadership during keynote addresses. There were some stunning releases for both Spring and Pivotal. Spring 5 is primed to change application development. Spring Boot 2 is ready to change how we design applications, and the changes to Pivotal Cloud Foundry make it the most versatile platform on the market.

Like many conferences, Spring One was a showcase of what Pivotal has to offer the industry. As the primary contributor to the leading Java development framework, Spring, this is more than just a product showcase. It’s a showcase of the future of Java development. That future is a further realization of the old desire for Service Oriented Event Driven Architecture. The primary drive of Pivotal’s marketing was for the improvements to Pivotal Cloud Foundry. The talks from Pivotal developers focused on the improvements to Spring. It was good to see an industry leader maintaining their open-source focus, and I think the additions to Spring will keep Java development relevant for years.

Out of respect for the work that’s been done on Pivotal Cloud Foundry, I’ll start with their additions, then we’ll get to Spring 5. Most revolutionary for the product is the technology support expansion with the introduction of the Pivotal Container Service called PKS, and Pivotal Function Service called PFS. PKS is for Kubernetes on Cloud Foundry. This allows for the simple orchestration of Docker and compatible containers alongside the containerized applications PCF builds for us with the classic Heroku based technology, now called Pivotal Application Service, PAS. This makes Docker a first class citizen in PCF along with server-less functions. By integrating through VMWare’s proven NSX networking, we’ll have seamless integration with PCF’s current service binding technology. Giving us one happy little platform to host whatever technology we want.

Give PCF your code, and have it build a container for you. Give it your own container and have it schedule and run it for you. Give it your server-less functions and host them behind an HTTP end-point: whatever you want to run, however you want to run it. By trimming the minimum footprint from 20 VMs to 6 VMs, PCF is more manageable for smaller organizations. It still doesn’t compare with how small other PAAS solutions can scale, but one does have to wonder if such small-scale architectures need this level of support from a platform. Pivotal Cloud Foundry 2.0 has matured into a complete enterprise platform giving you the ability to run the right technology for any job that needs to be done. I almost forgot to mention, IBM is now supplying a fully supported J2E application server as an option for Spring Boot. Now you have enterprise support for you Spring Boot applications, and while not a requirement, Spring is making it easier than ever to take advantage of these improvements.  All while introducing some revolutionary support regardless of what platform you run on.

Many finer minds then myself have written better examinations of how microservices is a refinement of Service Oriented Architecture, SOA. The 12 Factors of Cloud Native Development, or Cloud Native Applications is really just a codification of how to develop such an architecture. Even before SOA became a one the industry’s first buzzwords, we had Event Based insert for whatever you’re working on. Reactive programming similarly codifies Event Based application design. Spring 5 brings Reactive frameworks into the mainstream, so just like Spring Boot facilitated Cloud Native development, Spring 5’s inclusion of Reactive programming facilitates event driven application development. This is set to fundamentally change Java development and keep the language relevant for years to come in the face of newer languages.

Primarily, Spring 5 make Reactive streams a primary component, easily defined and supported as components in any Spring application. Much like Spring Web allows us to develop View rendering and RESTful endpoints alongside each other. Spring 5 supports Reactive streams alongside our more traditional logic. This way, you can easily extend the logic in your streams by including standard Spring Beans as part of a stream. Alternatively, just as an end-point to add functionality to an existing application.

However, the Reactive support isn’t just limited to incorporating Streams as Beans. Most sub-projects have been updated to introduce meaningful Stream support. Spring Boot provides a framework for developing Stream based Functions. Spring Web Reactive provides a simple framework for exposing those Functions and other Streams as HTTP end-points. Spring Integration adds full Stream support, allowing us connect Streams to message queues, thread pools, and schedulers.  This, along with its robust catalog of pre-developed components means Spring Integration is the leading Event Driven application development framework. Personally, I wish it got the attention it deserves. Equally important is the support Spring Security gives to Streams, meaning that we can easily include existing security infrastructure in a Reactive architecture.

Over the years Spring has been playing catch-up. Catching up on realizing Inversion of Control. Catching up on standardizing boilerplate code such as JDBC and Transaction Management. Catching up on supporting the latest design patterns and architectural philosophies such as REST and Enterprise Integration. Catching up on supporting the latest technologies, like AMQP, NoSQL, and Cloud infrastructure. Now, with version 5, Spring takes the lead by adopting Reactive and Function based development early. Now mainstream developers that have stability and support as their primary concerns limiting their ability to adopt new technologies can take advantage of the two biggest revolutions in Java development in years, and they know there is a community and industry leader like Pivotal backing their technology choice.

About the Author