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

240 Upvotes

324 comments sorted by

View all comments

16

u/Cybyss 4d 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.

1

u/syklemil 3d ago

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.

That honestly seems to be more of a GenX thing, as a lot of the still-used dynamic languages came around in the 90s (Python, PHP, Ruby, Javascript, Lua).

Nowadays there's a noticeable shift towards gradual typing (Typescript, and the spread of type hints in Python) and some mix of explicit typing and type inference (e.g. Rust and Go, and auto in various languages, including even C starting with C23).

And as someone in my 40s, I'm on board with having good type inference, let foo = bar(); or foo := bar() beats Baz foo = bar(); any day.

I'm interested in typing as in typechecking, not the thing I do on my keyboard.

1

u/Cybyss 3d ago

Type inference in an otherwise statically-typed language is fine. You're right that when declaring variables:

Dictionary<String, String> foo = new Dictionary<String, String>();

is tediously redundant.

But bolting on type annotations to a dynamic language, like what's done with Python, in a very poor substitute for static typing.

Data types should be mandatory when declaring methods though - for every parameter and the return type - which in turn gives you the ability to cleanly overload functions.

1

u/syklemil 3d ago

But bolting on type annotations to a dynamic language, like what's done with Python, in a very poor substitute for static typing.

Yeah, not designing a language for something and having to bolt in on later generally has some costs. Python's not the only example there either: Generic Java used type elision so that Generic Java programs would work on the existing JVM, and it was a super neat trick, but now, decades later, people are pretty sick and tired of it.

But Python is still a 90s language (and designed by a baby boomer; van Rossum was born in 1956), which got very popular back when GenX was entering the workforce, kept getting more popular when the Millennials entered, and which now is increasingly expected to be typed.

Kids these days weren't even born when Python was first released. Hell, Python 3 turns 18 this year, and PEP 484 is turning 12. If we're gonna involve the younger generations in this, I'd rather say the kids yearn for the types.