Hi, Spring fans! Welcome to another installment of This Month in Spring! How've you been? I've been busy!
I've been working a lot on Kubernetes and Spring application development. Paul Czarkowski (@pczarkowski) captures the experience perfectly:
Me: how's it going with Kubernetes?@starbuxman: have you seen "Naked and Afraid" ?
— Czarcuterie Board of Insults (@pczarkowski) April 28, 2021
But I love Kubernetes. It's got abstractions for every kind of workload. You can build fantastic things on it. And for the 80% case, you can use primitives like Buildpacks, and integration pipelines, and platforms like Cloud Foundry that sit on top of Kubernetes, to smooth the path to production. It's awesome. One opportunity is that you can use the official Kubernetes Java client, which has a very nice Spring Boot autoconfiguration, to control the platform. Naturally, the good Dr. Dave Syer has already blazed that trail. I took his example. The good Doctor even got it working with GraalVM by hand crafting a reams of required .json
reflection configuration. I took that inspiring work and built some Spring Native hints that you can use by adding it to the dependencies for the spring-aot
Maven plugin, as demonstrated here. You can clone that example and then run mvn clean package spring-boot:build-image
. Run that controller against Minkube or Docker Desktop, as demonstrated here. Deploy something, and you should see it pop up in the console. The result is a controller that starts up in milliseconds (~30ms on my machine) and takes substantially less RAM than a typical Java application, while retaining all the power of Spring. Pretty cool, no?
Obviously, this is just the beginning of the possibilities. Kubernetes and Spring a dynamic duo, and you can do some amazing things if you use Spring to expand on Kubernetes programmability. This is the core conceit of the upcoming SpringOne Tour installment, starting May 12th, 2021. It's free, of course, and it's going to be awesome! Join us for day one, where we'll explore some of the incredible opportunities that Spring and Kubernetes extend, and stick around for a chance to do a hands on workshop lead by Spring team members on day two. I'll be there, and I look forward to seeing you, too!
Anyway, we've got a ton to get to, so let's get right into it!
- The amazing Andy Clement and I presented on Spring Native and GraalVM at JRush last week. Here's the recording
- Learn how to enable asynchronous messaging at cloud scale in Spring Boot Java apps using Java Message Service (JMS) API and Azure Service Bus.
- In this episode of A Bootiful Podcast, I talked to Reliably CEO Russ Miles
- An awesome hands-on-lab of using Cloud Native buildpacks with Spring Boot by Toshiaki Maki
- Check out Sam Brannan’s epic wiki page on meta programming with Spring
- I love this utility for Google Chrome-using Spring Boot developers from Spring Cloud AWS contributor and legend Maciej Walkowiak: a tiny extension that points you to the current version of the Spring documentation.
- Check out the release notes for Spring Boot 2.5.0-RC1
- Spring Cloud Hoxton.SR11 has been released
- What's new in Spring Data 2021.0?
- Check out this VS Code extension that allows you to record and play back guided tours of codebases, directly within the editor.
- Blog: Evolving Kubernetes networking with the Gateway API
- Blog: Graceful Node Shutdown Goes Beta
- Blog: Kubernetes 1.21: Metrics Stability hits GA
- Looking into the JDK 16 vector API
- Microsoft Build of OpenJDK 11.0.11 and 16.0.1 (EA) Now Available
- Oracle Java SE Support Roadmap – Oracle is offering extended support for Java 8 until 2030
- This is an interesting article by Ben Evans on how the JVM executes bytecode
- 5 WAYS to go to PRODUCTION with SPRING BOOT (ft. surprise guest)! – YouTube
- A Bootiful Podcast: Biden campaign CTO, Spinnaker cofounder, Target distinguished engineer, and all around epic guy Dan Woods
- A cool sample Spring Boot app from Oracle
- A nice blog on Spring HATEOAS
- An interesting use case with Azure Spring Cloud and SwissRe
- Blog: Annotating Kubernetes Services for Humans
- Blog: Defining Network Policy Conformance for Container Network Interface (CNI) providers
- Blog: Introducing Indexed Jobs
- Blog: Local Storage: Storage Capacity Tracking, Distributed Provisioning and Generic Ephemeral Volumes hit Beta
- Blog: Three Tenancy Models For Kubernetes
- Blog: Volume Health Monitoring Alpha Update
- Check out the replay of this talk, Bootiful Cassandra, with DataStax's Patrick McFadin, Cedrick Lunven, and Spring's Josh Long.
- Vinoth Selvaraj put together a nice blog on a microservice design pattern, Choreography Saga Pattern With Spring Boot
- Check out this talk, Efficient web apps with Spring Boot with Spring committers Stéphane Nicoll and Brian Clozel
- Introducing Spring Cloud Square
- Java is criminally underhyped
- Spring Boot 2.3.10 is now available
- Spring Boot 2.4.5 available now
- Spring Boot 2.5.0-RC1 available now
- Spring Data 2021.0 goes GA
- Spring Data Neumann SR9 and 2020.0.8 available
- Spring Framework 5.3.6 and 5.2.14 available now
- Spring Integration 5.5 RC1, 5.4.6 & 5.3.7 Available
- Spring for Apache Kafka 2.7.0 Available
- Spring Framework 5.3.6 and 5.2.14 available now
- In this episode of A Bootiful Podcast, I talked to Ambassador Labs devrel director, InfoQ contributor, lifelong learner, and awesome human, and friend Daniel Bryant
- An interesting use case with Azure Spring Cloud and SwissRe
- Did you know that there are Bitcoin starters for Spring Boot?
- I did a talk, Reactive Spring, for the jLove conference a few weeks ago. You might dig it.
- My team is hiring! Come work with me and we'll help make the world a better place, one Kubernetes production deploy at a time, at Tanzu.
- Reliable WebSockets-based pub/sub with Spring Boot
- This exciting project uses Spring Boot and JHipster and Azure Spring Cloud
- This isn't, strictly speaking, related to Spring, but this older article from last year but it's awesome: Compiling Kotlin at Runtime
- Why Kubernetes Developer Ecosystem Needs A PaaS
- Blog: Introducing Suspended Jobs
- Blog: Kubernetes 1.21: CronJob Reaches GA
- Blog: Kubernetes 1.21: Power to the Community
- Blog: Local Storage: Storage Capacity Tracking, Distributed Provisioning and Generic Ephemeral Volumes hit Beta
- In this episode of A Bootiful Podcast, I talked to SpringFox creator Marty Pitt on Swagger, Vyne and Taxi lang, and much more
- A new Microsoft build of OpenJDK will become the default in Azure
- API Rate Limiting with Spring Cloud Gateway
- Check out the new release of Spring Cloud Sleuth OpenTelemetry support
- Ki is a New, More Flexible Kotlin Interactive Shell – I love this!
- Running Spring Cloud Gateway for Kubernetes
- Spring Data 2021.0.0-RC1 and 2020.0.7 released
- The Road to Kotlin 1.5
- Wanna join the Reactor team? We're hiring!
- Want to learn more about RSocket Routing and the RSocket broker, check out this episode of Tanzu Code with special guest Oleh Dokuka
- A Bootiful Podcast: Shigeru Urushibara, President and CEO at UL Systems, Inc., and Japanese technology ecosystem legend. This is one of my favorite episodes of all time. Urushibara-san is a great technologist and an even better person.
- A neat Infoq article on Spring Native
- I like this German-language article on Spring Boot and container images called Container-Images: Abschied vom Dockerfile
- How to Debug Your Spring Native Applications
- I tried Spring Native for GraalVM and I like it! – YouTube
- I’ll be speaking at the Cloud Conf Day
- The video from our recent SpringOne Tour 2021 day 1 ensemble performance, #Booternetes, is now up! There's a lot here so make some coffee and enjoy!
- Testing the file upload API in Spring Boot
- Using Elasticsearch in Spring Boot