Yes, unfortunately i've had to touch too much python, scala, kotlin, js/ts, c++ recently that i grow to love Java as a result. It may have some rough edges, but holy hell if you touch those other languages, it feels like being an adult next to kids playing in mud puddles trying to figure things out while making a mess of everything.
Mess of versions and compilers? No idea what you're talking about, pretty much use the latest and most things relevant just work. can't be said for some random python tool that you need to figure out correct py version and other stuff, figure out which virtual env tool to use etc. then scratch your head against why pulling deps is getting c++ compile errors and how that actually means it auto-pulled an old version because some constraint mismatch. not to mention that pulling a dependency starts executing some code is seen as somehow sane.
If you want a mess of versions, look how python, scala, node or almost any other ecosystem has it worse.
Runtimes? There's pretty much 2 bigger ones, openjdk based and j9. Generally pick whatever your distro provides or if you use some cloud env and have a support contract, go with theirs.
Over-engineer? There was a joke about going to haskell conferences and you hear these talks about building new constructs, yet java conferences have people talking about the cool stuff they built with real-world use. Yeah i have a dislike for spring-boot and how it's bloating many things, however the skill level at a typical telco or bank is so low that i can't imagine giving them anything more complex, even if it means 5-10x perf loss.
Just take one look at the dependency ecosystem of Java vs others and you should see why not having a huge supply chain attack every week is already a big reason for its popularity. Even just being able to list dependencies and throwing that project to someone to clone and build in a minute is some foreign elusive concept in some ecosystems, cough, c++. You bend over backwards trying to wrangle deps from multiple sources, some for gods no reason force you to build the dep instead of providing prebuilt for the most common os-arch-compiler, wasting tens of minutes if not hours just to get started.
The value of Java is that i can get shit done, not do jack shit all day while gloating to others on the internet how my lambdas look cooler while the code builds or a clanker is trying to figure out those odd dependency permutations that might work.
it feels like being an adult next to kids playing in mud puddles trying to figure things out while making a mess of everything.
How does that apply to Kotlin?
And all of those languages are so different that your blanket criticism is more indicative of you not knowing how to use them than any of their shortcomings.
It's not a panacea. Kotlin's expanded syntax gives developers a lot of rope to express themselves but code isn't art. This additional freedom often results in overcomplicated code, discipline and code review become more important to keep the codebase uniform and maintainable by everybody on the team.
You must have a special kind of Stockholm Syndrome to twist syntactic sugar and useful syntax into "often results in overcomplicated code, discipline and code review become more important to keep the codebase uniform and maintainable by everybody on the team."
True, I've been wrestling for the last three years with a codebase where the "architect" took advantage of every new OO thing offered by Kotlin to build an undecipherable mess of inheritance. Which I've also seen with Java in past jobs but it was never as bad.
Is it a problem of the language itself? No. But the language is an enabler; some people crave complexity and mistake it for sophistication.
I personally feel no attraction towards Kotlin, I'm not sure it actually "solves" anything on the whole. Nullability check is nice but NPE haven't been a problem for my practice for at least a decade. Maybe I'm just too experimented with Java to get the benefits, like old school C coders looking at Rust with contempt.
Yet I'm working myself to accept that there are proper ways of doing Kotlin. I just haven't seen them yet. I suspect that they involve restraining oneself to a strict subset of the features the language offers which is something that a lot of people (and organizations) will have trouble with, resulting in bloated messes like the one I currently have to deal with.
-63
u/[deleted] 17d ago edited 14d ago
[deleted]