Java at 30: How a language designed for a failed gadget became a global powerhouse
-
The language was initially called Oak after an oak tree that stood outside
Things could have been a lot different!
"fucking oak what the fuck" still works so not that different
-
The language was initially called Oak after an oak tree that stood outside
Things could have been a lot different!
Oakscript does have a certain ring to it
-
Oh, I know you can, but it's optional and the syntax is kind of weird. I prefer languages that are strongly typed from the ground up and enforce it.
Python is strongly typed, it's just not statically typed. Python with consistent type hinting is extremely similar to a statically typed language like C#.
-
Show me an Android app written in Java, and I’ll show you the line of developers ready to rewrite it in Kotlin.
Sure, and Kotlin is largely syntax sugar for Java. It's certainly nicer, but the semantics are largely the same.
-
Python is strongly typed, it's just not statically typed. Python with consistent type hinting is extremely similar to a statically typed language like C#.
I would argue that without consistent and enforced type hinting, dynamically typed languages offer very little benefit from type-checking at runtime. And with consistent, enforced type hinting, they might as well be considered actual statically typed languages.
Don't get me wrong, that's a good thing. Properly configured Python development environments basically give you both, even if I'm not a fan of the syntax.
-
Sure, and Kotlin is largely syntax sugar for Java. It's certainly nicer, but the semantics are largely the same.
You must not write much Kotlin then? It’s far more than sugar when a language fixes core issues in another.
It’s a modern, statically typed language that addresses many of Java’s longstanding limitations with robust type safety, expressive functional features, coroutine-based concurrency, and extensibility — all integrated natively. Interoperability with Java is a strength, not a sign of dependency.
Calling Kotlin merely syntactic sugar is like saying Swift is just Objective-C with prettier syntax — it misses the deep improvements in language design, safety, and developer experience.
-
I attribute Java's uptake to a large amount of marketing and support, which led to a massive ecosystem. Even a mediocre language like this one can find success when propped up like that.
I am going to be decapitated for this, but you're totally right.
You only have to look at Rust. An horrible language with a massive hype machine and an army of zealots pushing it everywhere.
I can't understand how people are complaining about the java boiler plate and its verbosity, while promoting Rust every time they can.
-
Open jdk is where it's at
Yep, thanks to the AdoptOpenJDK project which really helped make OpenJDK builds available for all platforms. (It is now called Eclipse Temurin and Adoptium.)
-
I attribute Java's uptake to a large amount of marketing and support, which led to a massive ecosystem. Even a mediocre language like this one can find success when propped up like that.
For me it's the tooling surrounding it that makes it nice.
-
You don't think the $500 million marketing budget Sun put towards Java has anything to do with its success? It was more than just luck.
-
You can annotate types in Python, and it's actually pretty nice when used with Pyright/Pylance.
But nobody else does, and I need it more on code I am consuming than producing. In fact, many functions rely on being able to send various types for different behavior. Dynamic programming is crazy to me. It's like guessing. I don't know what type your code is accepting and I have to guess based on the name of read your code directly.
-
C++ is a monster. I'd suggest C instead to learn about these basic ideas.
C++ has classes though and if you start with C and then try to go to other Object-oriented languages you’ll be a little lost. But, by learning C++ first, you’re pretty much learning C at the same time, you just need to avoid using classes.
-
But nobody else does, and I need it more on code I am consuming than producing. In fact, many functions rely on being able to send various types for different behavior. Dynamic programming is crazy to me. It's like guessing. I don't know what type your code is accepting and I have to guess based on the name of read your code directly.
I have the opposite experience, a ton of libraries I use provide optional types, and the handful that don't often have a good reason for it (e.g. numpy). Our projects at work have types almost everywhere, and it's pretty nice to work with.
-
I would argue that without consistent and enforced type hinting, dynamically typed languages offer very little benefit from type-checking at runtime. And with consistent, enforced type hinting, they might as well be considered actual statically typed languages.
Don't get me wrong, that's a good thing. Properly configured Python development environments basically give you both, even if I'm not a fan of the syntax.
What's wrong with the syntax? It's just
var_name: Type = value
, it's very similar to Go or Rust. Things get a little wonky with generics (list[Type]
ordict[Type]
), but it's still similar to other languages.One nice thing about it being runtime checked is you can accept union types,
def func(param: int | float)
, which isn't very common in statically typed languages. -
You must not write much Kotlin then? It’s far more than sugar when a language fixes core issues in another.
It’s a modern, statically typed language that addresses many of Java’s longstanding limitations with robust type safety, expressive functional features, coroutine-based concurrency, and extensibility — all integrated natively. Interoperability with Java is a strength, not a sign of dependency.
Calling Kotlin merely syntactic sugar is like saying Swift is just Objective-C with prettier syntax — it misses the deep improvements in language design, safety, and developer experience.
I've written a fair amount, enough to know it's a significant improvement on Java, but that it still suffers from the unnecessary abstraction in the standard library. And that's pretty much my main problem with Java.
Swift is a different story because the main issue with Objective C is the syntax.
-
For me it's the tooling surrounding it that makes it nice.
Yes, that's part of the ecosystem.
-
This post did not contain any content.
This dude came to my spouses work to do some sort of work/help (I don’t know the exact details) and someone wrote a doc he needed to review. It was a lot of work not just like a few notes but a proper doc and all he wrote back upon “reviewing” it was a thumbs up emoji!!
everyone was shocked lol, no feed back, no notes nothing just
-
Python is easy, but it can also be infuriating. Every time I use it, I'm reminded how much I loathe the use of whitespace to define blocks, and I really miss the straightforward type annotations of strong, non-dynamically typed languages.
Try 'Nim'. It is Pythonic language with static typing.
-
I used Java years ago for Android dev, but stopped when I stopped doing that. Every once in a while I'll get the itch to work on a new project, and always wonder if Java would be a good idea.
My hesitance is that I don't trust Oracle (and don't know to what extent they're involved nowadays), I'm not familiar enough with the ecosystem to know what is legacy crap to avoid, and I think it's generally seen as an uncool language, and I'm way too cool to be taking such risks.
Oracle has nearly nothing to do with Java. OpenSDK is developed by the Apache Foundation.
-
Kotlin is now the language of choice for Android.
Rather Dart and Flutter.