Hi, Spring fans! Welcome to another installment of This Month in Spring! I've gotta tell you, mes amis, the month-ish cadence I've struck with this newsletter, This Month in Spring, has been more jarring for me than anyone. They're a constant reminder that entire months have crept up on me unawares. Time sure flies when you're having fun! And I have indeed been having a lot fun! I've been busy – super busy – working on my book Reactive Spring and on the podcast, A Bootiful Podcast.
The Reactive Spring book is not yet finished, but it's already north of 250 pages, and the chapters that are there are solid. You can buy the book now and you can start reading today (and feeding back). You'll be entitled to any updates to the book leading to its completion as well as to the final book itself. Even if you don't read the book, you're more than welcome to peruse the source code for the book over on Github.com/Reactive-Spring-Book. There's a lot of code there, all using the latest stable versions of Project Reactor, Spring Boot and Spring Cloud. There's also a project that I've built that supports the publication process itself. Remember, I'm self-publishing this book, so naturally, I used Spring Boot to make it easy to create the screen- and prepress-ready pdf
, epub
, mobi
, and html
editions of the book. I wrote the whole thing to support my book, but then realized it's all pretty reusable as autoconfiguration. So, maybe you can use it if you ever decide to self-publish a book as I have.
I've also been hard at work on the podcast, or at least, the technology behind the podcast. I wanted more of a platform, so I've been working on the code over on Github.com/Bootiful-Podcast. There's a ton of stuff there, but basically, the entire pipeline to create and publish a podcast episode is described there. So too is the static-site generator that I use to keep the new official site for the podcast (BootifulPodcast.fm) – which is, at long last, live! – up to date. Most of the code involved in that pipeline is Java and Spring Boot running as Cloud Foundry application instances. There is one component that I use to do the audio mixing and that thing is written in Python and requires gobs of memory so it runs on AWS. Sigh. I'll figure out how to get that thing working on Cloud Foundry one day or die trying!
You know what could be kind of interesting? Taking advantage of the brand spanking new mvn spring-boot:native-image
Maven command to generate native Docker images with Spring Boot 2.3.0. (You can, of course, already try it out on the Spring Initializr (start.Spring.io)!) The new Docker support leverages buildpacks, so you get consistent builds anytime you use the same buildpack. Don't know about buildpacks? They're basically container factories. They take a code artifact – a .jar
or a .exe
for .NET or a bunch of .pyc
files or .js
or whatever – and they generate a container with a standard layout and a filesystem loaded up with the things required to run that code artifact. So, you might give the Java buildpack a .jar
, and it'll make sure you're given a container with the latest, secured, and tuned version of Java with parameters tuned appropriately for Spring Boot applications. This helps give you organizational consistency. If I wasn't using a fully-fledged platform like Cloud Foundry or Heroku, then I could at least rest easier knowing that buildpacks (which came from a collaboration between Heroku and Cloud Foundry) are supported. I can use the resulting containers to run on Kubernetes-based platforms.
Of course, it's been fun visiting with customers and doing shows, too! And, I'm so looking forward to good fun in Atlanta, GA, on 19 February for the epic Devnexus 2020 event. This show is always one of the best in the business, and it is the second-largest Java show (after SpringOne Platform 2020, of course!) in the US. If you're there, don't hesitate to drop me a line, as usual – I'd love to connect! I'll be talking about the reactive revolution, looking at new technologies like RSocket, R2DBC, and their use in Spring Boot and Spring Cloud.
I'm also doing an online training about Reactive Spring on the Safari technical marketplace on 14 February 2020. There are still some spots available – register now and join me for three-plus hours of Reactive Spring.
Now, my friends, without further ado, let's get into this last month's roundup. There's entirely too much stuff, so I'm grateful that I take such studious notes every Tuesday on the Spring blog.
- The Java at Microsoft blog has a nice recap of what's new in Azure Spring Cloud
- Spring Cloud App Broker 1.1.0.M1 Released
- Spring Session Dragonfruit-M1, Corn-SR1 and Bean-SR9 Released
- Spring Cloud Data Flow 2.4.0 Released
- Spring Boot for Apache Geode & Pivotal GemFire 1.1.5.RELEASE, 1.2.4.RELEASE and 1.3.0.M1 are available
- Spring Session for Apache Geode & Pivotal GemFire 2.1.8.RELEASE, 2.2.2.RELEASE and 2.3.0.M1 are now available
- Spring Cloud Greenwich Service Release 5 (SR5) is available.
- "The Phoenix Project" and "The Unicorn Project" author Gene Kim
- This is a very useful reminder on how we name Spring Cloud releases
- Happy 5th Birthday, CloudFoundry Foundation
- The new JRebel 2020 report has some interesting findings including, but not limited to, the fact that Spring Boot (82%! Nothing else even matters or comes close, staying in the 1% range…) dominates the majority of workloads, followed by DropWizard, and that PostgreSQL is the dominant database.
- Greg Turnquist does an epic job introducing the the Fundamentals of Spring Boot in this YouTube video
- Tom Prior has a nice post on easy boarding with Kotlin and Cloud Foundry
- I love this post demonstrating how to do end-to-end testing with TestContainer and Spring Boot 2.3.0.M1.
- This is a cool post on using Spring Integration to manipulate RSS feed data and write to files
- Check out the Spring Cloud App Broker community channel on Gitter.im
- Creating Docker images with Spring Boot 2.3.0.M1
- Spring Cloud Data Flow 2.4.0 M1 Released
- Spring Cloud Data Flow 2.3.1 Released
- In this installment of A Bootiful Podcast, I interview Neo4j's mad scientist Michael Hunger on graphs, databases, and relationships
- Spring Boot 2.3.0.M1 is now available
- Spring Integration 5.3 Milestone 1 Available
- Spring Tools 4.5.1 released
- Want to run your own Azure Spring Cloud workshop? The team is constantly evolving their public workshop at https://github.com/microsoft/azure-spring-cloud-training
- Improved Java support poured into Microsoft's Visual Studio Code – will it be enough to tempt developers? • The Register
- First look at Cloud Native Buildpacks support in Spring Boot 2.3 Milestone 1
- Juan Medina has a nice post on optimizing building optimized Spring-based Kubernetes services
- IntelliJ IDEA 2020.1 EAP: Java 14, improvements for Git and UI, and much more | IntelliJ IDEA Blog
- This seems like an interesting video for getting started with Spring Webflux
- Learning Spring Boot: First as a Student, Then as a Teacher
- One of the technologies that underpins Spring Boot 2.3's new image building support is Cloud Native Buildpacks, about whose 2020 Roadmap you can learn more in this post on Medium
- Ah, the familiar singleton. I tend to take it for granted, but it's always worth introducing if you don't have any exposure to it. Here's a nice article that reuses some diagrams from the original Interface 21 training (the company before SpringSource which then got acquired by VMWare, which then spun out to form Pivotal, which is now again a recently accquired part of VMWare..)
- Richard Seroter has a very nice article introducing the new replicated quorum queues in RabbitMQ
- Spring Boot 2.2.4 released
- Spring Vault 2.2.1.RELEASE and 2.1.5.RELEASE available
- In this installment of A Bootiful Podcast, I talk to Spring Cloud Services' Bella (Yuxin) Bai
- Spring Boot 2.2.3 released
- Spring Boot 2.1.12 released
- Spring Framework 5.2.3, 5.1.13, 5.0.16, and 4.3.26 releases
- Spring Data Neumann M1 released
- Spring Data Moore SR4 and Lovelace SR15 released
- This is an interesting post on two of my favorite pieces of cloud infrastructure: Running Cloud Foundry on Kubernetes using KubeCF
- How to Instrument and Monitor Your Spring Boot 2 Application in Kubernetes Using Wavefront – Wavefront by VMware
- Spring team legend Roy Clarkson published a really interesting blog post on the Reactive BookStore Service Broker. A service broker is an application that acts as an agent, manipulating some sort of resource, in a unified way, on behalf of a Kubernetes or a Cloud Foundry platform. It's an API with a uniform interface. You could use a service broker to spin up MongoDB instances, RabbitMQ, SendGrid, e-mail caches, and so much more. So this post demonstrates how to build a custom service broker using reactive APIs.
- Hey Spring fans! Do not miss this February 12th: Effective Spring on Kubernetes Webinar
- Spring Integration AWS 2.3.1 & Spring Cloud Stream Kinesis Binder 2.0.1 Available
- In this installment of A Bootiful Podcast, I talked to Pivotal Labs Sydney director David Julia about applied agile, testing strategy, the business of Pivotal Labs, and so much more. Do not miss this one. This was one of my favorite episodes – so illuminating.
- Spring Security 5.3.0.M1 Released
- There's another excellent webinar, in two short days, on Getting Started with Spring Cloud Gateway
- JAXEnter did a Java retrospective series, and I was one of the industry veterans that they consulted for their opinion. I got my responses in a little late, but they added them in (retroactively) and you might enjoy the read.
- I love This Month in RabbitMQ and they just published the December 2019 recap installment.
- Speaking of RabbitMQ, there are a ton of exciting new changes in store. Bit by bit, the team is replacing the old consensus protocols with Raft, introducing new queue types, providing better upgrade features and observability and introducing Kubernetes support.
- I liked Tom Prior's post, Easy Lift Off with Kotlin and PCF.
- Hippolyte Durix created a really interesting Spring Boot application demonstrating test-driven design, and domain-driven design, and Hexagonal architecture, among other things.
- I am really looking forward to speaking at Dr. Venkat Subramaniam's new conference in beautiful Colorado, DevDotNext
- The Okta Developer blog has a great post on securing legacy apps with Spring Cloud Gateway
- Happy new year! In this first installment of A Bootiful Podcast in the new year, I am delighted to have been able to bring you an interview with my hero, the amazing, the inimitable, the legendary, Spring Boot, and Spring Cloud co-founder Dr. Dave Syer
- We'd love your feedback on your opinion of Spring Cloud Data Flow
- Did you see the Spring Cloud roadmap published right before Christmas?
- I like this blog, Modernize Monolith Java Application to Containerized Microservices, that looks at building microservices with Spring Boot
- I love Matt Raible's tutorial over on the Okta blog, Build a CRUD App with Angular 9 and Spring Boot 2.2
- Oliver Drotbohm identifies the common issues in unstructured monoliths and discusses approaches to package design, component structure, transactions, and the usage of events, in this SpringOne Platform 2019 talk that's now on InfoQ.
- I loved this talk from Google's Ray Tsang on tools – Jib, Skaffold – and best practices for Spring and Kubernetes.
- This is an interesting thread on Reddit: are Reactive Streams single-threaded or multi-threaded
- This is an interesting example on doing RSocket BASIC authentication with Spring
- This seems like an interesting use case: Spring Boot and Elasticsearch-powered autocompletion.
I've always wondered if I should have a post-roundup paragraph thing or not. It would kind of be like one of those famous Marvel post-credits scenes. But, Spring's a tough act to follow, so instead, I'll see you next month!