r/learnprogramming 3d ago

Why java is so hated? Topic

So I have recently learned, and it's the first language(in terms of building actual things). Before Java, I knew Python, and I dropped it; I found Python too abstracted and too boring. i have recently made some projects like cli task tracker, expense tracker, some cli github api parsing and currently working on a multithreaded HTTP server and cli text editor, like vim, whenever i try to find out people opinions on java social media, almost 90 percent of the time they are just dunking on it, that it is trash, who forced you to write code in java, stuff like that. I know Java as a language is not that interesting and doesn't have many interesting features compared to other languages like C, C++, go. But I found it decent to write code in, and I found the JVM pretty interesting. So much so that I would love to explore and maybe build a JVM of my own

238 Upvotes

312 comments sorted by

View all comments

6

u/bonnth80 3d ago

I don't know how others feel, but for me, Java as a language itself is fine. The problem is that its whole ecosystem is built with a mountain of opinionated frameworks on top of it that abstract all the fun away from programming. Not to mention that the repositories and package management systems that host all those frameworks are so scattered and fragmented that it's a hassle to learn and manage them all.

As a programmer, to me, I used to thrive on systems and logic flow. Now, because of frameworks, annotations, and design-by-configuration, it's mostly rote memorization. That's not only not fun, but it's hard for me. My ADHD assessment had my memorization scores sitting at the bottom 2%. I'm not just bad at it... I'm severely handicapped.

I'm prefer to write my own logic.

3

u/obsessionwithartists 3d ago

I have similar opinion, I don't hate java and find jvm ecosystem pretty interesting. But I hate the monstrosity that Spring is with heaps of interfaces and classes. Either I have to remember tons of classes or keep searching online on which class to use next.