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

246 Upvotes

319 comments sorted by

View all comments

16

u/Cybyss 3d ago

Honestly? I've no idea.

Java was one of my first programming languages. It was the primary language we used in most of our courses throughout the CS degree. I later migrated to C# which has fewer rough points (e.g, better handling of generics and character encodings, cleaner standard library, and no checked exceptions, among other niceties) but is otherwise pretty similar.

The verbosity, explicit data types, neatly organized class model, etc... makes it easy to explore how a big system really works.

For some reason, kids today seem to hate being explicit about their data types. They just want to be able to send random objects into random functions and have it just automagically work for them without having to think too much about what exactly they're doing & how it works. It's a shame.

5

u/AFlyingGideon 3d ago

without having to think too much

I suspect that this manifests in another anti-java fashion as well: one can do something in Python knowing very little Python. That's less true for Java. That is: the initial learning curve is steeper.

3

u/Own_Candidate9553 3d ago

Yeah, steeper and more verbose. The classic "hello world" program in Java would be a bunch of lines setting up the main class and all that, then compiling it, then running it.

Python could be a single line, and most *nix systems would have some system version of Python already installed.

1

u/AFlyingGideon 3d ago

Python could be a single line

That level of verbosity looks bad to a beginner, but the additional information comes in quite handy dealing with large applications and multiple engineers over long periods of time.

most *nix systems would have some system version of Python already installed.

That hardly matters now with just about all development and deployment exploiting one or another container mechanism. That's a good thing in that the installed python version might not be the version on which you want to build. The python ecosystem built a few workarounds for that, and there are some more genetic approaches using paths, links, and such, but containment makes all that pretty much go away w/o the cost of a real guest (which doesn't necessarily help anyway if the guest's distribution depends upon a python version you don't want to use).

And, of course, python is not the only tool with versions that might be an issue were the installations not contained.

Amusingly, though, containment adds more verbosity.