I've been a working JavaScript developer for many years now, but I've been wanting to learn another programming language all along.
Oracle has a stink about it, a stink I was previously unaware of the source of. Was it just that Larry Ellison was a notorious asshole? Or the clunky bad-UX products? Or the institutional corporate taste from working there?
Turns out that part of the stink was directly related to Java the programming language.
Java was created before JavaScript, but came on the scene right in the same 1995-ish time period. Java's creator, James Gosling, worked at Sun Microsystems. He worked there right up until 2010, when Oracle treated him poorly after they took over Sun.
Oracle, champing at the bit to monetize Java, sued Google within the first half year after conquering Sun. Google had made their own implementation of Java to be the language of Android. Now, was Google at the time doing the Microsoft/Internet Explorer thing, of adding their own bits to the language without a care for interoperability? Maybe/probably. But that's not the case that ultimately came to the Supreme Court. The Supreme Court heard the case of, "can Oracle's lawyers convince a bunch of boomers who can't send their own email that the basic specs of a language can be copyrighted".
Like, in JavaScript, there are three living engines that read a js file and convert it into machine code that actually runs: v8, in use by node and Chrome and almost everyone; SpiderMonkey, the original engine (much rebuilt) from Mozilla; and whatever Apple is doing. In any of them, when the code Math.max(3,5) is analyzed, it returns 5, because the Math library is part of the definition of JavaScript.
But Oracle was arguing that using the words Math.max was crushing their poor innocent copyright, and anyone who made their own engine would have to pay heartily.
I know we all breathed a sigh of relief when Google's lawyers won, but DAMN that was a slimy attempt from Oracle.
In 2018, before they'd lost Google v Oracle, but AFTER they'd released JDK 11, Oracle tried to charge every company who used it on some computer, as if it was Photoshop. I haven't traced how many people were using the Oracle-created flavor of Java vs the open-source flavor, but can you imagine a huge vicious company trying to charge you for the previously-free tools you used to do your job?
They backed away from this at the end of 2021 (perhaps after losing at the Supreme Court?). Now they make Java money just from selling expert help with upgrades and security and such.
OpenJDK is only connected to Oracle in that a lot of people who work at Oracle spend time working on it, as far as I can tell.
OpenJDK is licensed under a mutated GPL-ish license that, unlike the GPL, doesn't require anything made with it be GPL also. Still, OpenJDK Java is open-source.
New Java comes into being from OpenJDK committees, where seats are tagged by various companies; seems pretty similar to tc39, the group that makes new JavaScript; perhaps a bit more corporate.
Brief investigation, from people who use Java a lot, suggests that there may be incompatible JSON & date-time libraries between different strains/versions of Java; and maybe Java when used in the wild brings in too many libraries that are hard to update. People who don't use Java a lot probably have other opinions, of course.
Why multilingual
- It's generally assumed that any software engineer knows more than one language. HTML and CSS are sometimes argued to be languages, but another programming language is inarguable.
- I'd like to see how the languages do things differently, and get a better sense for what I think is good and what I like and why.
- A majority of job ads for what I do are for "full stack" engineers, and thus having an inarguably "backend" language makes me more marketable
- My impression is that most/all other programming languages out there can DO MATH, which JavaScript notoriously is not really the right language for.
Why Java
- Honestly, I was headed for Python, but my boss at $COMPANY steered me towards something more prevalent in our backend. It is a good thing to have more codebases I can stare at to see how people solve bugs with Java.
- Python and Java are in the 2/3 position for most commonly used languages, after JavaScript. Python is more in use in the sciences, and among people who pick a language for love... But Java is the language for creating native apps for Android, and that's cool.
- Java is definitely multi-threaded, so that will be new and interesting.
- Java, like Javascript, manages memory for you, and doesn't require you to know what hardware you're running on.
- I think Java is the most common language for random things like fridges and picture frames? Sounds interesting.
But wait... Is Java connected to Oracle?
Oracle has a stink about it, a stink I was previously unaware of the source of. Was it just that Larry Ellison was a notorious asshole? Or the clunky bad-UX products? Or the institutional corporate taste from working there?
Turns out that part of the stink was directly related to Java the programming language.
History of Java
Java was created before JavaScript, but came on the scene right in the same 1995-ish time period. Java's creator, James Gosling, worked at Sun Microsystems. He worked there right up until 2010, when Oracle treated him poorly after they took over Sun.
Huge stink #1: Oracle vs. Google
Oracle, champing at the bit to monetize Java, sued Google within the first half year after conquering Sun. Google had made their own implementation of Java to be the language of Android. Now, was Google at the time doing the Microsoft/Internet Explorer thing, of adding their own bits to the language without a care for interoperability? Maybe/probably. But that's not the case that ultimately came to the Supreme Court. The Supreme Court heard the case of, "can Oracle's lawyers convince a bunch of boomers who can't send their own email that the basic specs of a language can be copyrighted".
Like, in JavaScript, there are three living engines that read a js file and convert it into machine code that actually runs: v8, in use by node and Chrome and almost everyone; SpiderMonkey, the original engine (much rebuilt) from Mozilla; and whatever Apple is doing. In any of them, when the code Math.max(3,5) is analyzed, it returns 5, because the Math library is part of the definition of JavaScript.
But Oracle was arguing that using the words Math.max was crushing their poor innocent copyright, and anyone who made their own engine would have to pay heartily.
I know we all breathed a sigh of relief when Google's lawyers won, but DAMN that was a slimy attempt from Oracle.
Huge stink #2: trying to charge for JDK 11
In 2018, before they'd lost Google v Oracle, but AFTER they'd released JDK 11, Oracle tried to charge every company who used it on some computer, as if it was Photoshop. I haven't traced how many people were using the Oracle-created flavor of Java vs the open-source flavor, but can you imagine a huge vicious company trying to charge you for the previously-free tools you used to do your job?
They backed away from this at the end of 2021 (perhaps after losing at the Supreme Court?). Now they make Java money just from selling expert help with upgrades and security and such.
OpenJDK is the Java of Record
OpenJDK is only connected to Oracle in that a lot of people who work at Oracle spend time working on it, as far as I can tell.
OpenJDK is licensed under a mutated GPL-ish license that, unlike the GPL, doesn't require anything made with it be GPL also. Still, OpenJDK Java is open-source.
New Java comes into being from OpenJDK committees, where seats are tagged by various companies; seems pretty similar to tc39, the group that makes new JavaScript; perhaps a bit more corporate.
What is bad about Java?
Brief investigation, from people who use Java a lot, suggests that there may be incompatible JSON & date-time libraries between different strains/versions of Java; and maybe Java when used in the wild brings in too many libraries that are hard to update. People who don't use Java a lot probably have other opinions, of course.