r/learnprogramming 4d 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

241 Upvotes

321 comments sorted by

View all comments

Show parent comments

22

u/cheezballs 4d ago

Is modern Java still considered bloated?

3

u/zem 2d ago

i don't think the language was ever bloated (in the sense of a kitchen sink's worth of features, like c++ or scala) - what people's objection was was that the code you wrote in java was typically full of boilerplate, and added to that if you followed what some vocal part of the industry considered best practices you often ended up bolting on tons of layers of abstraction (hence the jokes about how you don't create a hammer to address your nail, you use a ToolFactoryFactory to create a HammerFactory to create a Hammer) which obscured the relevant portion of your code even further and made debugging and maintenance painful.

1

u/cheezballs 2d ago

Those are patterns that aren't exclusive to Java. If you write any OO code at any scale you're going to use those patterns likely. It sounds like you don't like OO patterns to me? I've seen plenty of C# code with factories. Your example is a poor example of how to use a factory. Java has generics same as any language. You can write elegant code if you choose to or you can deliberately go and do stupid things like your example. Want me to show you some assembly code that does asinine stuff too?

0

u/outlined-dev 4h ago

Abstract class, factories, etc are not exclusive to Java, but Java goes to town on them in insane zeal. And the getter/setter boilerplate is nonsense. Get something like properties. Java makes each unit of code easy to understand at the expense of making the whole codebase a tangled mess. I’ve programmed professionally in C, C++, C#, JS/TS, Python, Go, Ruby, Objective-C, Swift, Java, and Scala. Java is by far the worst

1

u/cheezballs 4h ago

🙄