5 ms·
It's just that pleasant to use, has a very mature ecosystem and a very helpful community.
by Traubenfuchs 6y ago
It's just that pleasant to use, has a very mature ecosystem and a very helpful community.
- lmm 6y agoNah, it's the PHP of the Java world: easy to spin up something quick with, but impossible to maintain.
- Traubenfuchs 6y agoIf there is no both WORTH to maintain and hard to maintain code in your language of choice, it's because that language of choice was not used to solve the type of problem Java is used for... In this current post monolith, micro-service world, most java applications remain very maintainable though.
- lmm 6y agoActually my language of choice has been used mostly as a Java replacement. And while there is no perfectly maintainable language, little else is remotely close to the awfulness of trying to maintain a Spring Boot application.
- nurgasemetey 6y agoFor me, node js projects are not difficult to maintain. Who is right at the end?
- int_19h 6y agoThat's certainly not true of Spring MVC, and yet it's also very popular.
- jto1218 6y agoWhat are you talking about? What exactly makes Spring projects unmaintainable? Have you ever seen or used it before?
- lmm 6y agoSpring boot specifically; regular Spring is relatively ok. I'm using it professionally at the moment. It's just impossible to find where anything is coming from or understand how your application is wired up, because everything magically appears based on what's on the classpath - it's like the COME FROM statement joke. Even just changing your dependency versions can suddenly radically change your application's behaviour (e.g. now it's suddenly running a webserver).
- jto1218 6y agoThat is true, there's a lot of "magic" that comes with boot. It can be helpful to take a look at what all of that auto-configuration code is actually doing, but reading that stuff is pretty difficult as well.
- lmm 6y ago> It can be helpful to take a look at what all of that auto-configuration code is actually doing You can't tell by reading it either, because it's all dynamic: all of the autoconfigurations create beans conditionally only if other beans of that type aren't defined, if certain classes are present on the classpath, if particular values are defined in the configuration that's written in magical self-transforming YAML, or all three. The only way I've found is to breakpoint at the point where something is wired in to see what the concrete class is, then breakpoint again in the constructor of that class to find where it's being constructed from, so you have to restart your application and run the (slow) spring boot startup twice for each thing you care about. And even that doesn't always work because spring encourages doing AOP with bytecode-manipulation-based proxies.
- a_imho 6y agoI don't understand why is it better to have something wired up by annotations than explicitly writing java code. Is 'new' obsolete? At least tools (including IDE) can look for method calls, annotation strings not so much. I'm completely baffled by the popularity of Spring.
- fetbaffe 6y ago> Laravel of the Java world Fixed it for you.