Hi Spring fans! And welcome to another, very special installment of This Month in Spring where we look not only at the last week's news but also the highlights of the year behind us. 2018 was one of incredible change on the technology landscape, one that the Spring community has been able to deftly navigate. In this special year-end wrapup we'll do what we always do – look at the latest and greatest in the ecosystem, but we'll also revisit the things that I, your friendly neighborhood @starbuxman, feel most positively impacted the Spring developer in 2018.
Now, let's get through our usual monthly roundup – and there's tons to look at! – then we'll review this Year in Spring.
- I've got a new Bootiful Podcast! Subscribe on SoundCloud or on iTunes. The podcast is a discussion of all the latest and greatest in the Spring ecosystem and beyond through the lens of those who make it wonderful. If you want to join in the discussion, then please follow us on Twitter (@BootifulPodcast)
- Hi Spring fans! We look at Spring Cloud Alibaba in this latest Spring Tips installment
- Spring Session for Apache Geode/Pivotal GemFire 2.1.2.RELEASE
- Spring Cloud Open Service Broker 3.0.0.M3 Released
- Spring Cloud Open Service Broker 2.1.0 Released
- Spring Cloud Data Flow and Skipper 2.0 M1 Released
- Spring Cloud for Alibaba 0.2.1 released
- Spring Cloud Greenwich.RC2 is now available
- Spring Tools 4.1.0 released
- Spring Tool Suite 3.9.7 released
- Spring Cloud Task 2.1.0.M2 is now available
- Check out the 2019 Software Trends review from the Pivotal blog
- Hi Spring fans! In last week's installment of Spring Tips we looked at Reactive SQL Data Access with Spring Data R2DBC
- JUnit 5.4 M1 is almost here. Check out all the new features.
- Check out these very promising first few steps at an OAuth 2 token relay using Spring Cloud Gateway
- Want a very full example of how to describe and deploy a multi-module Kubernetes and Helm-packaged Spring Boot microservices system? Check out Kenny Bastani's distributed systm which deploys an HA cluster of Apache Kafka and Prometheus IO
- InfoQ’s 2018, and What We Expect to See in 2019 is a very good read indeed
- Great discussion on the latest Screaming in the Cloud podcast with Andrew Clay Shafer, whose insight I always find valuable. The points made on what is driving bad decisions in enterprise IT are right on the mark.
- A nice video on Many-to-Many Relationships with Spring Data JDBC
- Eclipse IDE 2018-12 has been released
- Spring CredHub 2.0.0.RC1 released
- Netflix OSS and Spring Boot — Coming Full Circle – Netflix Technology Blog – Medium
- Hi Spring fans! In this latest installment of Spring Tips we look at the Bootiful Google Cloud Platform. This is a natural follow watch after you've watched the previous Spring Tip introducing Spring for Microsoft Azure. And, of course, do not miss tomorrow's installment of Spring Tips! Follow @SpringTipsLive on Twitter for the latest installments.
- Spring Cloud Greenwich.RC1 available now
- Lots of good information on service meshes and Cloud Foundry Check out the latest 3.1.1 release of the community led Spring Data ArangoDB project
- Do you really want to use a reactive facade on top of a blocking abstraction like JDBC? Really? And you're sure that you understand that the library might saturate your threadpool? And you're sure that you can't use one of the natively reactive options from R2DBC (H2, PostgreSQL, or Microsoft SQL Server)? Then check out this library that provides a Project Reactor-powered facade on top of blocking- and non-reactive components like JDBC and JPA . But remember, it isn't really reactive!
- Spring Data R2DBC 1.0 M1 released
- How Fast is Spring?
- Baeldung have a nice introduction to RSocket
- Do you want to encode rich web semantic information in your Spring Boot application using JSON-LD? Check out this nifty looking project on Github and maybe these examples
- Baeldung also have an interesting post on programmatically restarting a Spring Boot Application manually and using the Spring Boot Actuator endpoint
- Our own Kenny Bastani has put together a nice reference architecture on reactive event sourcing microservices complete with instructions on how to deploy to Kubernetes with Docker Compose
- The Spring Cloud RC is out. With it comes the announcement of some Spring Cloud Netflix projects going into maintenance mode. [It's time to consider moving over to Spring Cloud Gateway, Spring Cloud LoadBalancer and Resilience4J.
- The ServerSide have an interesting post on how to use strongly typed qualifiers in Spring
- There's a lot to love in the new Spring Tool Suite 4 release!
- Spring Session Bean-SR1 and Apple-SR7 Released
- Spring Boot 2.1.1 available now
- Spring Boot 2.0.7 available now
- Want to learn the ways that Pivotal Cloud Foundry supports you on Amazon Web Services (AWS)?
- Spring IO Platform Brussels-SR15
- Spring Security 5.1.2, 5.0.10, 4.2.10 Released
- Spring Boot 1.5.18 available now
- Check this out! This Month in RabbitMQ, Dec 4, 2018
- Check out these new Spring Security first-timer issues.
- I dig Maciej Walkowiak's walkthrough of developing complete reactive Spring applications with Spring WebFlux, Spring Data Redis, Test Containers, Lombok and of course Spring Boot
- Matt Raible's published the slides from his "Bootiful Development with Spring Boot and Vue" talk this evening.
- Not stricly speaking related to Spring, but still interesting. It's a French-language post on observing Java applications with Metricbeat and Jolokia over on the Elastic blog
- This is an oldie-but-a-goodie over on JavaWorld: mastering Spring framework 5, Part 2: Spring WebFlux | JavaWorld
- Nice article offering insights on tuning an Apache Camel application deployed into Spring Boot over on the JBoss Middleware blog.
- I love these Chinese-language videos on using project Reactor
- I love Spring Framework lead Juergen Hoeller's SpringOne Platform 2018 presentation, Spring Framework 5.1 on JDK 8 & 11, now up on InfoQ
- This is a nice post on customizing error responses in a Spring Boot application
- Don't miss the upcoming webinar on continuous delivery to the cloud with Spinnaker
- Yet another epic installment of the Talking Kotlin podcast on monitoring applications with Micrometer's own Jon Schneider
- The Spring team's epic Greg L. Turnquist has been busy pruning a lot of relics from the Spring guides from the old pre-1.0 days of Spring Boot
- Expedia have a nice UI, Haystack, that can be paired with Zipkin. Cool!
- Vladimír Oraný has a nice 10-part series on writing builder style DSLs in Apache Groovy.
- The Baeldung blog has a nice post on testing in Spring Boot
- Check out the JHipster Kotlin 0.6.0 support
- This is a prettu epic post on getting started with Spring Boot, JOOQ, Flyway, and ModelMapper on the Cantina blog
- Riff v0.2.0 is now available
- This post – which looks at dynamic Flow Control during Backpressure with RxJava and RSockets – also maps nicely to Reactor concepts.
- *
This year was an interesting year, one that saw existing practices refined in remarkable new ways. Here are the things I'll remember from the year that was 2018.
- Reactive Programming We touch on specific aspects of this in other items on this list, but 2018 was if nothing else the year of reactive. In 2018 we delivered the GA versions of all of our reactive integrations, where it makes sense. 2018 saw us release, among other things, Spring Boot 2 and Spring Cloud Finchley which aggregate other projects like Spring Data Kay, Spring Security 5 and of course Spring Framework 5. These releases brought parity, where appropriate, to existing usecases in the blocking and synchronous world. It was also the year that saw us begin the work of providing options that are reactive-only; things that go beyond what was possible ad that are better for their basis on reactive programming, like R2DBC and RSocket.
- RSocket Systems integration is hard. Integration is hard. HTTP is a strong protocol for document retreival, but it lacks application-level semantics that each developer must re-imagine on top of the HTTP verbs (REST). It is geared towards request-response architectures but lacks the ability to handle other message-exchange patterns like request-response, fire-and-forget, and streams (in either the request, the response or both). We know that the reactive streams specification provides a nice mental model for dealing with integration. In it, boundaries are assumed asynchronous and decoupled. Components support flow-control through the notion of backpressure. Additionally, HTTP is text-encoded. Sure, you can conduct binary data, but you need to encode it as such. RSocket is a new, binary protocol with built-in support for the reactive streams specification from the minds of folks from Netflix and Facebook. It supports all the above message-exchanged patterns. As it's a protocol, there are different client libraries supporting different platforms and languages including JavaScript, C++, and Java. The Java implementation is based, naturally, on Project Reactor. We announced formal support for RSocket in the upcoming Spring Framework 5.2 release train at our tentpole SpringOne Platform 2018 conference.
- R2DBC A question we always get when people look at reactive programming is "should I use JDBC?" or "Can I use JDBC?" Or, more bluntly, if there is no reactive JDBC option, "should I even bother with reactive programming?" And the answer was always, distressingly, fairly pessimistic: you're not going to get the vaunted scale benefits of reactive programming if at any point in the stream you need to block to handle the scale. If you end up spinning up new threads to scale out the interaction with JDBC, then you've limited your systems scale potential. But this isn't to say that there's no way to achieve reactive SQL. It's just not JDBC. There are options on the horizon that might make for a very interesting alternatives to JDBC for those database vendors whose drivers natively support asynchronous IO and reactive programming. One option is R2DBC which we announced at our tentpole conference SpringOne Platform 2018. The integration is three tiered: first there's the lower-level R2DBC SPI, on top of which are built database bindings. At this point there are bindings for H2, Microsoft SQL Server, and PostgreSQL. At this level you'll find a
DatabaseClient
, more or less equivalent toJdbcTemplate
, which makes using low-level R2DBC as convenient as it gets. Then, finally, at the top of the proverbial stack is Spring Data R2DBC. I look at all of this and more in last week's Spring Tips installment, too! - KNative Serverless, a term that is in of itself almost meaningless these days, is all the rage. It describes this idea that we should let the platform handle increasingly more of the work of moving software into production. In a function-as-a-service platform the unit of currency is a function. It's something that the platform invokes on a request. Everything else -routing, dispatch, scale up and out – is handled by the platform. The output of one function can be the input to another function. This composition means that interesting things can happen. Functions can be connected ad-hoc one to another to yeild results. In addition, functions can be attached to event sources, responding to events in the ecosystem of functions on whatever platform the functions happen to be running. Here, their prowess as integration code becomes evident. We at Pivotal announced Project Riff in 2017. It was, as we originally envisaged it, a function-as-a-service platform built on Kubernetes. But this was only the first step. A few months after we introduced it at SpringOne Platform 2017 event, the Riff team started work with Google in developing KNative. KNative is a further abstractification of Kubernetes. It provides built-in primitives that something like a Project Riff could conceivably be built on. Which is exactly what we did. In 2018, Google and Pivotal announced KNative at Google NEXT, and I became the first non-Google employee to do a KNative demo in my joint-presentation with Ray Tsang at Google Next. KNative is a big deal not just for Project Riff, but for the Kubernetes ecosystem in general and I'm excited to see where it goes.
- Spring Cloud Supremacy This year cemented Spring Cloud's role in the distributed systems toolkit for developers. Spring Cloud core itself became reactive. It introduced new oft-asked for features like Spring Cloud Gateway. It also saw the release of GA versions of Spring Cloud for Google Cloud, and Spring Cloud for Microsoft Azure. It also saw the debut of Spring Cloud for Alibaba (that's tomorrow's Spring Tips installment!) This year more than ever we saw large organizations make the move to microservices and even vanguard technology companies like Netflix, which were already integrating Spring Cloud, doubled-down on Spring Cloud this year.
What a year indeed! And next year is already looking to be bigger and better! That's a wrap for 2019. We'll see you next year, 1 January 2019.
Happy New Year from all of us to all of you!