by itsmefaz on 6/12/22, 10:19 AM with 10 comments
This was further evident when I started looking for Java developer roles in my country and found that just understanding the language and its principles were not enough. There seemed to be a general consensus that Java developers must know other related technologies like Spring, JPA, Hibernate, etc. All these related technologies bring their own software paradigm into the picture and hide the actual technology (Java) under the hood.
* Why for some weird reason a Java developer must know or supplement his understanding of the language with framework like Spring, JPA, Hibernate, etc? This is true for other platforms like Node.JS where you have MERN stack etc.
* Are there other languages (or platforms) like Go or Rust where the language is well developed that these external dependencies are minimal.
by topspin on 6/14/22, 7:31 PM
Seeking a language with minimal external dependencies is futile. Real world work almost always involves a substantial collection of dependencies regardless of the language. Gone are the days when the language has everything you need built-in; that went when the network and myriad protocols appeared.
Compared to Java, Go is generally 'simple' in the sense that it doesn't involve a lot of programming complexity created by the dependencies. There are no macros, annotations are few; mostly you just deal with the language itself and the APIs of dependencies. I really like that aspect of Go and I think it is closest to what you have in mind. Wading through error handling boilerplate is no fun though; easily the most tedious part of Go.
Rust is similar to Java in that you find yourself using dependencies that 'decorate' the language with annotations and macros that add capability and complexity. Many of these dependencies are well designed so the annotations and macros are straightforward to use and easy to live with. Others are mystifying and obtuse. Incompatibilities abound; stable vs nightly, Tokio vs std::async, etc. Rust can be a struggle.
I feel like you're making too big a deal over the commonly used Java stack dependencies. Spring is ubiquitous; there are all manner of resources to help you figure things out and when you understand it and stay between the lines it's fine. Add Lombok (a curated Spring dependency) and writing Java is fairly pleasant and highly productive. I can't speak to Hibernate; I've been fortunate to be able to mostly avoid ORMs. The little experience I've had with Java ORM only encourage that tendency.
by tomohawk on 6/12/22, 11:00 AM
Come to think about it, the Java ecosystem now resembles more of a Big Ball of Mud (http://www.laputan.org/mud/), where being a swamp guide is more important than other skills.
These days I primarily work in go, and the reduction in cognitive overhead to get things done is immense. Its a language that learned from the mistakes of many others, and gets many things right.
by franzwong on 6/12/22, 12:52 PM
You either have a bloated runtime or you need to include more external dependencies. It's just trade off. The trend is to have lightweight runtime in cloud era.
by aristofun on 6/12/22, 4:14 PM
Not even close to nodejs, even though js infra is far from perfect too.
But you can’t avoid the need to build hundreds of reused libraries when you build anything bigger than hello world.
It’s just some languages care about your comfort (like Ruby) while others - dont (like Scala)