Java at 30: How a language designed for a failed gadget became a global powerhouse
-
OOP makes so much sense. What happened?
Many people increasingly find that using functional patterns enables them to build more reliable software.
-
I liked Java a lot more before Oracle acquired Sun. I've used Oracle databases enough to hate Oracle with the passion of a supernova.
I think I need to clear a common misconception people seem to have here: Oracle has very little to do with Java.
At most, Oracle has the following connection to Java:
- Own the trademark
- Have a build of the JDK/JRE with commercial support.
However, Java as a language's baseline comes from OpenJDK, an open source (GPL 2.0) community project which is upstream to several builds including Oracle's JVM. It follows a "bazaar" like development model similar to the Linux kernel where you can see their mailing lists and track what's being worked on. Anyone can contribute and the code is on Github: https://github.com/openjdk/jdk.
That being said, you don't even need to use Oracle's JDK (it sucks IMO) and use one of the community provided builds of OpenJDK. OpenJDK builds are provided by Eclipse, Amazon, Azul, Bellsoft and even Microsoft provides JDK/JRE builds. These are free of cost and have longer term support than Oracle's offering.
-
I learned C++ as my first language and it was a great way to understand the core issues of a programming language — like memory allocation, memory freeing, the difference between memory addresses and the memory contents themselves, threads, system calls, etc. Java obscures these nuances to a degree, but Python is too friendly and makes it hard to understand them at all.
I believe if you learn C++ you can easily learn any other language. After C++, I learned Python, JavaScript, and Java in a few days each without formal instruction. If you learn Python first, you’re probably going to struggle learning those other languages because you haven’t grasped the lower level concepts yet and may never if you’re not in a formal setting that forced you to learn them.
No one disagrees that Python is easier, but if your goal is to get a foundation in programming that allows you to easily pick up other languages, you should start with C++.
C++ is a monster. I'd suggest C instead to learn about these basic ideas.
-
Python is interpreted where Java is compiled. They aren’t going to be able to be used in the same cases all the time.
Not true. They use the same model, executing compiled bytecode. It just feels like directly running a script because Python compiles it to bytecode on the fly, and because it is embarrassingly slow.
-
First learn C, then learn C++, then learn Java. In that order, each will make you appreciate what the previous one lacks. From there, you should pretty much be able to learn anything.
You can't learn C++. Some parts of it maybe.
-
it succeeded in holding back the entire field of programming for a decade via that mindset by having people blindly apply stupid Java design patterns to everything.
No, it didn't.
-
They did, but it makes me sad. Python is becoming the next JavaScript because of its ease of use.
The Java guys simply don't understand how to code without the gang of 4 crutch to lean on.
Some of the GoF patterns over-emphasise inheritance, but by-and-large, you don't build large systems without either using or rediscovering software patterns, whether they're OO, FP, or what-have-you.
-
Ironic considering C# was supposed to be very similar to Java
Its called Microsoft Java for a reason
-
It's a cycle all popular languages go through. First only experimental applications and super opinionated programmers use it. Then everyone wants to use it for everything. Then it finds a niche where it excels and settles.
I remember Java, C++, Python, and JavaScript going through those phases as well. Currently, everything is Rust.
What is the "everything" that Rust is being used in? From what I've heard its being used in the same place you'd use C or C++, not in any other niches.
-
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.