4 ms·
This is harsh, but as someone that has done a lot of enterprise Java development, the only reason to avoid Java is the developers. Specifically, the enterprise
by ryandvm 4y ago
This is harsh, but as someone that has done a lot of enterprise Java development, the only reason to avoid Java is the developers. Specifically, the enterprise priests of Spring.
Java is fine language and the JVM is a great runtime, but unfortunately the language itself is like a bug zapper light for graybeard enterprise devs who are not so much "Java developers" as they are "Spring engineers" (though they often refer to themselves as architects). They usually have a flair for overly complex abstraction and an encyclopedic knowledge of a couple decades worth of Spring spells, er, annotations.
They typically don't build as much as they just hook shit together with Spring. Every solution is always, "oh just use yadda yadda Spring annotation/plugin." Sometimes it works, often you end up spending the day learning about yet another convoluted hunk of shit that your project just absorbed. Every Spring project turns into a myriad of black boxes where everything happens everywhere else and you're always just a few plugins short of having what you need.
For enterprises this works... okay. They're big and they have a lot of money, so they usually prefer slow, complex, and consistent over rapid development dice rolls. For startups, a seasoned Java enterprise dev is like a rat. If you let one get in the door you're going to be dealing with a fucking mess in no time.
- angryasian 4y ago>They typically don't build as much as they just hook shit together with Spring. >They're big and they have a lot of money, so they usually prefer slow, complex, and consistent over rapid development dice rolls. These two statements seem contradictory to me. The entire point of using Spring is to be able to not worry about the cumbersome and gain efficiencies in development. Spring is no different than rails, a framework thats highly regarded for fast development
- MattPalmer1086 4y agoI'm sure it is highly regarded... My own (admittedly limited) experience is it is a hell hole of abstraction, vast stack traces, obscure error messages and grindingly slow performance. Apparently the things I want to do are either impossible or require so much indirection it's easier to rip it out and just write it yourself... You may have detected I'm not a fan!
- piva00 4y agoYes, it takes time to learn a complex framework. With Spring Boot a lot has been simplified, I never used Spring before that because I had similar thoughts as you. Nowadays when I have to work without Spring (my current job doesn't use it, for example) I keep yearning for it as there's just so much productivity gains after you know the framework. It's funny because I have said in the past the exact same arguments as you, it just comes from lack of experience. I recommend stop hating it and sincerely give a try on properly learning and using it for a while, I still have some reservations and grievances with Spring but not these shallow ones :)
- MattPalmer1086 4y agoI don't really disagree with you. I'm sure it's possible to be really productive in it. It has a steep learning curve of course. Having said that, I stand by my performance criticism. I have done some detailed profiling on spring and non spring versions of code (I didn't write the spring parts, a spring expert did). It really does add a lot of overhead to start up and transactions vs. straightforward POJOs and JDBC code.
- piva00 4y agoWas this profiling done while using `JdbcTemplate`? To be honest I don't use much more than that for querying RDBMSs, I don't like any kind of ORM and actively avoid them.
- MattPalmer1086 4y agoNo, just straight JDBC, no Spring classes at all.