Java at 30: How a language designed for a failed gadget became a global powerhouse
-
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.
-
I'm still wondering what Java's niche is, it seems like it does everything, but nothing particularly well. I guess it found a home on Android, but I don't think that's because it's particularly well-suited for it.
Enterprise programming and portable GUI applications.
-
Java was the new hotness when I was in the middle of my comp sci degree. The biggest benefit I found was javadocs. Other languages had shit documentation that usually didn’t match reality in comparison.
Yes. JavaDoc was/is good.
There, I said something nice about Java. I'm giving myself a gold star, and going to stop typing.
-
Java is nothing like Rust. Java was always sold as a low skill programmer language, Rust has a steep learning curve. Java tooling has always sucked where Rust has excellent tooling pretty much since 1.0, Java is extremely verbose and needs a lot of tools to generate code to be productive at all, Rust is very expressive and most people write the code by hand or just use built-in language features. Java has a culture of "who care about that backtrace in my log as long as the app does what it is supposed to" while Rust has a culture that very much cares about correctness more than performance. Java was always driven by CEOs pushing it on people from the top while Rust is very much a language programmers try to push into their companies from the bottom.
Also, none of the languages you listed have a very particular niche that differs from what they were used early on apart from Java which is now mostly used on the server and used to also be used in GUI applications more.
Java always had excellent tooling. You are mixing something up.
In General programming languages are not pushed by CEOs but come up in grass root movements by developers. -
And Java is very much considered legacy in the vast majority of projects that use it.
Then it would not be constantly evolving with more than a new release per year.
Do you know anything about gigantic Java ecosystem?
Guessed so ... -
There's always Kotlin. Of course I never understood the desirability of a VM language in the first place, why not just compile for different architecture?
JIT compiling and byte code morphing and instrumentation.
For instance data base persistence is usually done by instrumentation tools, that add instructions to keep track about transactions and modified objects, or new objects that need persisting.
And endless more things. -
Then it would not be constantly evolving with more than a new release per year.
Do you know anything about gigantic Java ecosystem?
Guessed so ...Yeah, I know that the vast majority of Java applications out there are stuck on ancient versions of the JVM and spew back traces in their logs as if they bought them in bulk.