Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided i...
For further actions, you may consider blocking this person and/or reporting abuse
Knowledge of Spring will help to be in trend, but Spring itself is an example of poorly designed and even worse implemented piece of technology. Its wide use greatly contributed to recognition of Java as slow and memory hungry language.
P.S. I think Spring is technically obsolete since release of Java 1.5
I must disagree with this statement. Spring is typically ranked somewhere in a middle of the scale of synthetic benchmarks. Which is quite good considering how rich the framework is. The whole Spring ecosystem is one of the best in Java world, making it one of the first choices for enterprise development. Moreover, Spring Boot is also a great choice for rapid prototyping.
Number of features is a bad excuse for poor performance.
Let's take a look at Techempower benchmark:
In "Multiple queries" and "Data updates" benchmarks those results achieved with modern webflux-based versions, which are quite far from traditional Spring applications. But even these results are poor compared to Vert.x or Jooby versions, for example. Overall this does not look like "in the middle".
The whole Spring ecosystem is one of the most popular, but popularity does not automatically mean high technical quality. In fact it's happens quite often when technically inferior solutions gets more popular than more technically advanced competition.
Spring was a revolution at the time when it appeared. Heavy use of run-time reflection was completely reasonable by that time, there were just no other way to add necessary functionality. Since Java 1.5, there is a compile-time annotation processing which enables achieving almost the same results without such a run-time overhead. Take a look at, for example, Micronaut framework, in many respects Micronaut is a "Spring done properly".
As for rapid prototyping. There are many much smaller frameworks which are even better for rapid prototyping. Also, quick start with the Spring does not mean quick release of the production version. Spring has many other issues like using exceptions as part of business logic, many ways to do same thing, a lot of "magic" which can easily break (and result to many hours/days of painful debugging), overuse of annotations and so on and so forth. All these makes development of the production version far more painful than it needs to be.
So first: Everyone should be happy with whatever feels right. But spring is still industry standard so it’s absolutely correct to put it on the list.
Regarding its design: I think it’s actually very well designed. Especially if you think about how flexibility it is and how it evolved from XML based DI container to something modern as spring boot without a total rewrite.
Regarding vertx: Vertx actually was very poorly designed, at least until version 3. We had couple of teams and micro services that used vertx for years and all of them migrate to spring boot.
So unless you need that last bit of performance in very specific scenarios (which 95% of the use cases are not), there is no reason to pick vertx over spring.
Agreed. And I'd also like to add, that developers are paid to solve people's problems. Companies pay developers to solve people's problems, too. If you can accomplish this with a smallest investment possible, reach you architectural (quality) goals (which should also be good enough, not better) and keep the maintenance/operational/ support cost reasonable and sustainable, then opting for a framework like Spring is really a good choice. The size of community and the number of extensions says or all.
In other words, "1 million of lemmings can't be wrong".
In fact maintenance/support cost with Spring are quite high and quickly grows as application ages.
Great article man, thanks a lot.
Thx, happy that you find it useful.
Great article lambda snippet can be even shorter.
(s1, s2) -> s1.length() - s2.length()
Quite beautifully written👏, I wish I could find such an article on Golang.
Thx, happy that you find it useful.
This was quite helpful. As a new Java developer I was looking for things to focus on and this article helped narrow it down for me. Thanks
Thanks for the resources.
Great article. Just to follow up, is Java still as much a language that's targeted at write once run everywhere or has it become a language for web applications?
Thanks a lot!
This has inspired me to see what I can organize for my team.
I wish this pandemic accelerate gone , meanwhile I choose to learn Quarkus or Helidon 2.0 framework to accelerate my application services
Great Article , Really Helpfull