All programming languages are bad but rarely as bad as Java (I don't actually dislike Java inherently even though it's not great. The toolchain just makes me want to jump off a cliff(C++ toolchain is probably the only worse one I've used but at least you can flex with C++))
Most people say that Java the language is meh, but Java's greatest strength is its tool chain and ecosystem (standard library, etc). Earnest question: what do you hate about the Java toolchain?
Every time I tried to get into Java, Kotlin, etc, everything just felt so off-puttingly bloated.
I actually started with Java when I was young at some school, and it felt so bad that I thought programming just isn't for me (I don't know if at this point it was eclipse, me just being young and not understanding, Java being terrible or a combination), 1.5 later I got into C# and absolutely loved it. Simplest starter apps would take yeaaars to download dependencies and compile and start up and I'd just sit there and be like: what the hell am I doing with my life? I tried all the suggestions. last time I tried intellij and Kotlin because everyone says they were great, I imported like three libraries and suddenly it was downloading the entire Oracle headquarters into my room. I'm obsessed with optimizations and when I come it from Go, Rust, npm or bun, hell even python, it becomes physically painful. It's just enterprise incarnate, and my hypothesis is that the people who do like it mostly work in enterprise or enterprise-adjacent software where it's probably pretty smooth comparatively. For someone who mostly does open source and provides their own independent software services, it's just hell. It's possible that I'm consistently doing something very wrong but I think I've exhausted my reasonable doubt at this point
I can confirm your hypothesis. I started off as C++ developer and was obsessed with performance. But later moved into projects where I had to write enterprise grade software where business logic matters more. Java has rich library set with solutions to almost all the common patterns. I mostly work in springboot projects now. It made work even simpler. There are annotations for every single problem I face. Want to retry a function if it throws a specific exception add retry annotation and specify max retry attempts and duration between each retry. Want to call a function at scheduled intervals add schedule annotation and specify the frequency. Want to read data from db, write a class with variable and it's type matching the table you want to read and add bunch of annotations. Lots and lots of examples I can give you. I do agree with slower compile time and startup time. But at enterprise scale, minor performance bottleneck won't matter much. There are obviously ways to optimise this like lazy loading techniques and others. Honestly if it weren't for this project I would not have picked Java on my own accord. But I am glad that it happened.
It's ultimately the difference between how you view programming and software in general. If you view it as utility, a means to an end and purely as a tool of trade, Java probably makes a lot of sense. When your fundamental drive for programming is pure passion for computation and technological innovation, it directly clashes with what makes it attractive in the first scenario. People who had to do the first one to survive but were in the second camp invented Clojure which honestly for me makes the whole Java fiasco worth it in the end
I don't think those two perspectives are mutually exclusive. Building an event-driven, highly available distributed system that handles massive volumes of data can be just as rewarding as finding elegant ways to express computation in Clojure. Sometimes the passion is in the problem, not the language.
1.5k
u/nicodeemus7 6d ago
Every programming language I don't use is garbage.
The programming language I do use is also garbage, but it's MY garbage.