Uncategorized

This Decade in Spring – January 2020

Hi, Spring fans! What a crazy month since we last spoke! Happy belated holidays and new year to you all! I hope it was festive, fun and filled with things learned and family and friends hugged. I've been doing my best to keep busy, as usual. Just completed jury duty here in California, USA, yesterday. I've been working on my Reactive Spring book, writing a ton of code to support improvements to the production pipeline of my podcast, and so much more. I mourned the passing of my father on December 11th, celebrated the holidays with my family and friends. I visited Los Angeles, California; Denver, Colorado; Sydney and Brisbane, Australia; Tokyo, Japan; and more.

Oh, also, you might have heard: the Spring team, and Pivotal as a whole, are now part of VMware! So I spent the last few weeks ramping up as a new employee of VMWare. Now, some of you may know that Pivotal was spun out of EMC and VMware in 2013. We've just been spun back in, 7 years later. I was the first Spring Developer Advocate, ever, when I first joined VMWare in 2010, 10 years ago, and then I continued in that function at Pivotal, and I continue again here at VMWare. So, that's been fun!

I always wind down the last year with a look at the overall guiding trends from that year. This year, the last year of the decade was different. I looked instead at the big trends defining the decade for the Spring and JVM developer. It wasn't easy! Where does one even start? It's hard to believe we've come this far, as a community. Remember, the earliest pages of code in Spring date back to 2001, almost 19 years ago. Rod Johnson, the original creator of Spring, talked about Spring's progression over the last almost two decades in this blog post – 18 Years of Spring.

Let's analyse the decade that was.

This Decade in Spring

It wasn't easy widdling down an entire decade, but I did my level-headed best to do it.

  • Spring Boot – this one is pretty easy! Spring Boot is changing the world. When we on the Spring team announced the .4 release of Spring Boot back in 2013, none of us could have guessed how far it would go. It was an opinionated approach on Spring and the Java ecosystem it supports that embraces some of the best patterns from convention-over-configuration frameworks like Rails, Grails, Spring Roo and others while also not sacrificing flexibility. Spring Boot is now – by far – the most widely used JVM library in the JVM ecosystem save for Java itself. All the major-scale online services use it. It's been forged in the fires of production and the work, of late, has seen it go from being the most productive, powerful framework to being among the most performant frameworks. Who knows what the next decade will offer for the Spring developer, but I'll bet it builds upon Spring Boot.
  • Spring Cloud – if Spring Boot is an opinionated approach to building applications, Spring Cloud – which builds on Spring Boot – is an opinionated approach at building applications (microservices!) that are destined for the cloud. The cloud, for modern applications, is production. Spring Cloud leverages the same Spring Boot autoconfiguration and supports an opinionated approach to building applications.
  • Java 8 – Java 8 came out in 2014 and revitalized the JVM. If it wasn't clear with Spring Boot that Java was the ecosystem to bet on, this release cinched it. It showed that there was life yet in this workhorse ecosystem and introduced tons of new language and runtime features. Suddenly, Java syntax looked a lot more like some of its more contemporary siblings. It's hard to underestimate how important Java 8 and deliver-new-features mindset the Java team has since embraced is to our ecosystem.
  • The Death of the Application Server – While Spring Boot wasn't the first to support alternative deployment models for JVM-based applications, it was the first to popularize it. It made clear that the application server, such as we knew them, were no longer relevant. Sure, you can run a Spring Boot application in an application server, but…. why? You gained nothing and sacrificed, clearly sacrificed, a considerable amount to do so. Now, keep in mind, Pivotal/VMware are, and have been, one of the major investors into Apache Tomcat, the most prolific application server, so the death of the application server was a self-inflicted wound. We're just fine with that. You can use Apache Tomcat, as a library, in Spring Boot, and millions already do. It's just that you don't have to. The HTTP server isn't the same as your runtime, and that's as it should be.
  • Cloud Native Applications – Spring Boot assumed the runtime responsibilities of the application server, where the cloud stepped in to deliver the platform-centric responsibilities that the application server never could. These two things – smart applications powered by Spring Boot and smart platforms like Cloud Foundry and Kubernetes – have ushered in a new era of Cloud Native Java applications, a topic I love so much I wrote a book on it!

I could've included so many other things that were implied in some of these higher-level trends – like containers – but I didn't. I wanted to keep it brief. What do you think? Do these posts line up with your sense of the industry in the last decade?

This Month in Spring

And of course, we've still got a ton of exciting stuff to review from the last month, so let's get to it!