DEV Community

loading...

Discussion on: CSS in JS - have we done something wrong?

Collapse
siy profile image
Sergiy Yevtushenko

Unfortunately IT is not driven by the technology quality, despite open source. Just like any other sector it's heavily influenced by the marketing and advertising campaigns performed by large companies. This is the reason why, for example, technically inferior solutions like Spring flood the market. Or zero real value dummies like Kotlin called "next big thing".

While I totally agree that IT is one of the most democratic places, I also realize that such a democracy is quite easy to affect and drive into necessary direction for those who has enough resources.

Thread Thread
pamprog profile image
PamProg

Hey, i'm late to the party, but could you explain why Spring is a technically inferior solutions ? And inferior to what ?
I'm not trying to annoy you with this question, I'm genuinely asking.

Thread Thread
siy profile image
Sergiy Yevtushenko • Edited

Spring:

  • Heavily relies on reflection
  • Consumes a lot of memory
  • Uses exceptions as a part of normal request processing flow
  • In many cases shifts error detection to run time
  • In many cases relies on text constants

Any of the above might be a sign of technically poor solution, but Spring collects them together and this indeed an achievement.

Spring is easy to start writing app, but at subsequent stages of development this is compensated by:

  • need to write more tests than necessary (see note above about shifting errors to run time), famous "check that context loads" tests is an example
  • hard to nail down and fix issues caused by "Spring magic" and dependency management. For example, adding yet another Spring module to dependencies may easily break your application even if you not actually use this dependency yet.

As a consequence, almost all Spring applications share the same properties - they are slow, consume a lot of memory, are hard to maintain and extend.

As for your question about "inferior to what?". I'd say that it is inferior to almost any alternative solution in each particular area. Lets take a look, for example, at core of Spring Boot: Spring DI and Spring MVC.

Spring DI is the slowest DI container. It even unable to complete all tests in the following benchmark github.com/greenlaw110/di-benchmark.

Spring MVC is one of the slowest among Java web frameworks: techempower.com/benchmarks/#sectio... Note that this is not a fluctuation, Spring is consistently lands among slowest through all tests.

Thread Thread
pamprog profile image
PamProg

Thanks for your extensive response !
I think I didn't work enough with Spring to be aware of all of this, except maybe your point about "Spring magic", but thanks again :)