Apr 07 2019

Is Spring still relevant?

Category: English posts,TechnicalIuliana @ 13:39

This Friday I’ve had a debate at the company with a colleague of mine which is known to be a straight up genius about the topic in the title. Obviously, I was arguing that Spring is still relevant, and my colleagues was arguing that it is not. How did I end up in this position? Well, since I’ve written so many books about Spring, why not? I’ve written books about how it can be used, explained its under-the-hood internals to others, I could talk to others about it, right? Well, turns out… not really. I am really bad at debates with geniuses, that happened to study computer science. Because I’m an engineer, I’m practical, I get down in the dirt to make sense of things and fix them up. I build things from scratch, and although I do overthink and design things, my overall direction is practicality. And this is what being relevant is for me. Can it make my work easier, faster, stable and can in the end produce revenue? Then it is relevant. So yeah, for me being needed and being useful means being relevant.

For him, being relevant, means change, means driving the domains toward innovation.

And because, our definition of relevant was different, the debate was a cluster-fuck. Funny as hell, but a cluster-fuck nonetheless.

Here is my take on this.

The Spring Framework is 17 years old. It has been around from 2002. It came into existence only 7 years after Java. Rod Johnson, the father of Spring, created Spring because he was frustrated while writing a book about application design using J2EE. I haven’t got frustrated writing books about Spring yet, so if this isn’t a good sign I have no idea what it is.

It has evolved from a bunch of libraries used to configure relationships between components (classes) in XML to declaring them in the code, to 22 full-blown projects, one of them encapsulating template configurations for any type of applications you might need.Yes, I am talking about Spring Boot, the epitome of convention over configuration.

The Spring Framework was the start, but after being taken over by VMWare, which provided virtualization solutions, it grew up into a technology that could be used to build SaaS and PaaS, all using quite non-intrusive, cohesive, low coupled, very modular and elegant ways to do so. Then Pivotal took over and since they had the data centers, IaaS got into the picture. So now every cloud service that could be build using Spring could also be hosted by Pivotal. So Pivotal has everything needed to put Java on the cloud, all except a JVM of course. All this in 2015, when other companies were still trying to figure out how these could be better implemented and sold.

Spring makes writing complex enterprise applications easy, the learning curve is quite fast and it runs on top of JVM. So as long as JVM will be here, Spring will be too. And slowly Spring is slipping into the functional universe. You can use Spring to write Groovy, Kotlin or even Scala aplications.(a community project, but it exists nonetheless)

To say that Spring is not relevant because it does not lead innovation is not really true. There are three arguments I have here:

  • JEE is what it is today because Spring was an inspiring competition. Sure, at some point Spring was losing the race, because internally it was using reflection for dependency injection, which made it quite heavyweight, but when JEE 6 came out with their brand new CDI, it was time for Spring to get inspiration from JEE. But Spring still has clear and intuitive standards, which JEE is still missing. I am very curious which of them will win the next race.
  • When NoSql databases became a trend, Spring was the first framework to provide a practical way to connect and manage data. I remember using Spring with HBase at the end of 2011. Some developers would call this bandwagoning, but NoSql databases were here to stay, not providing a proper solution to work with them based on JVM would have been crazy. If there wasn’t a Java solution to work with them and Spring provided it, it’s not really bandwagoning, it’s just keeping up with the trend. and providing what the industry needs.
  • When reactive components became a trend, Spring provided its Flux and Mono implementation, before JDK provided its Publisher and Subscriber.

Then again, my expertise is limited to the Java world. So, my colleague might be right, Spring might be bandwagoning compared to the rest of the IT world. But for the Java world, it continues to lead innovation, and Java developers everywhere are thankful for it.

From a business point of view, Pivotal is very good a making money. They have their hands now in a very special pie named the US government and another one named Boeing. Pivotal provided software consultancy and replaced all their deprecated information systems with cloud services, about two years ago and I know this because there were presentations about these two at SpringOne.

From a community support point of view, Spring has a huge opensource community around it. It’s almost a religion. The US SpringOne conference gathers up tens of thousand of people. I still can’t wrap my head around the fact that something else but music can gather up such a big amount if people in the same place.

Conclusion is, Spring is here to stay. If it really drives innovation or not at this point I can’t really tell. It is a driving innovation force in the JVM world that is sure. And from my experience innovation is driven by handful of people, not companies. Companies just try to maintain their source of income, if that aligns with innovation, fine, they will support it, but otherwise they follow the principle if something works, don’t fix it. If that weren’t true, the world would have given up fossil fuels a long time ago. But we are still drilling for oil and burning coal, even we already have the technology not to do so.

Tags: ,

Leave a Reply