132 comments

[ 3.2 ms ] story [ 170 ms ] thread
Why would a company pay for "commercial support" of OpenJDK from IBM? I have used Java for 15 years and I don't know what "support" for a JDK would mean.
If you are stretching limits of java, then you would need support because that knowledge base isn't available easily. I worked for a company that had performance engineers from sun on site helping us with performance issues.
Or because your company has a policy of not putting anything in production without a signed license and/or current support contract. (See e.g. SQLite which is public-domain but if you want a commercial license anyway they'll sell you one. They offer non-FOSS extensions now but they sold commercial licenses before that.)
They are now using openJDK and modifying the source code themselves, so no, that's not the policy.
Yup. My company has a license/support contract for Spring Boot (among many many other things).
Some orgs insist on having someone to sue (or at least to blame) when things go wrong.

Government and government-funded orgs practically insist on it.

Security updates after EoL. Oracle does/did this with Java 6. Support in diagnosing problems and getting fixes escalated. As others have said, a corporate requirement to have a throat to throttle
Some companies fire all their workers in hopes offshoring is a magical bullet or let their top knowledge owners leave the organization. As such, they hurl money at the problem to try and cover their incompetence. In these cases Oracle had elected to receive.
The decision makers are not programmers. The people making the choices on software in an enterprise are MBAs who know next to nothing about software and so they need some "insurance".

Look at the tech founded enterprises, they do not go the tradition enterprise software route. Why? Their leadership came from a developer background and not an MBA one.

I don’t think it’s that simple. As a dev or sysadmin, all it takes is to have resources invested in a legacy system that no one gave money to replace but are ok with maintenance contracts. This easily happens when people leave/get hired.

I have a legacy storage system only accessible through exactly Java 6u31 32-bit on Windows 7, of course I want to replace that but instead it’s cheaper to keep and maintain than to replace.

edit and I think this must be a conscious strategy on the part of any vendor: make maintenance just slightly cheaper than replacement

That's the theory. In practice, it is near-impossible to get any enterprise vendor to actually fix something. Either you're lucky and another customer had the problem. Then, after annoying them for about a week, you'll get a patch.

If however you've found something new like a feature that's so buggy it is actually completely defect, you're in for an ordeal of a few months. Simply getting a dev to look at your bug takes a month. In that month, you'll answer every day questions like what OS you're on ('As I told your past 10 colleagues, We see it under red hat linux version X1 X2 X3, and under windows Y1 and Y2, and under HPUX Z. Yes, this is a pristine OS install with a pristine JVM. Yes, our support contract covers this. There is a test case in the bug report, run it on your computer and see yourself'). They'll call you in the middle of the night. Then call you again 12 hours later because you're not allowed to respond to their questions outside business hours so please tell us again and next time read your contract.

If you survive this, and you provide a perfect example source code fragment of 100 lines, and you decompile their own code, point at the bug, and suggest a less insane way to write that code, you'll get a fix. This fix seems to work for up to a day, when you notice your performance is less than a sixt from what it was. Then you notice how they ignored your suggestion, did something even less sane than the original code, and managed to break something else you hadn't even noticed before.

Call again, insist they do not start a new ticket unless you want to redo that original month. A few minutes later they call back and try to sell you six times the hardware you have as a workaround, and promise a 10% price reduction for the first year. Do not swear at any point, this will immediately end the phone call and you'll have to navigate their insane phone menu again and get a new lesson in Indian English from a guy who swears he is speaking your language perfectly right now (which is neither English or anything spoken in India, afaik).

After a few rounds of this, they produce a working patch. You confirm it works and are promptly forbidden to use it ever again. They will provide you 'soon' with an official version of the patch, which has been vetted against their secure development lifecycle, legal team, and god knows what else. Actually applying the current patch so your users stop screaming will end your support contract.

It takes in total a bit more than 3 months before the final patch is delivered. At that point:

1) management congratulates themselves for having bought support.

2) Your colleagues however are in awe about you've got actually managed to get an enterprise vendor th actually fix a bug. Turns out they have tons and tons of bugs and spend their days inventing horrible workarounds as they gave up getting them fixed long ago.

3) Contractors from the enterprise vendor, working on another project in your company will turn the feature off, as they know for sure it can't work. If you claim to have a patch and it is already running on their servers, they refuse to use it and turn the feature off once more. Not using the feature costs a small fortune in network overhead, BTW. If you enable it, the next coontractor entering the building will disable it instantly, even if your config file has this story documented.

Anyway, thats my experience. YMMV.

Hey guys, i was a bit frustrated and venting. It scares me to see this post reach 4 points in such a short time. We all feel lik this once in a while, but this particular piece of drivel isnt worth much points. Please spend your points on a more worthwile post ;-)
The first time I used Java, in the 1.0 days, we wrote an application and deployed it to Solaris, HP/UX and AIX. We found a bug on AIX which would crash the VM, and reported it. IBM said it would be months before the next release, so we rewrote the application in Perl.
Fixing a segfault in a JVM running in production.
What really jumped out at me in the article is that the "free" builds from Oracle are only going to be available for 6 months, and production use of the Oracle JDK requires a paid license. So if you don't want to commit to upgrading your JVM every 6 months, it's time to look at the alternatives...
Every once in a while you hit a JDK bug that you cannot work around. You post a bug to Oracle (Sun in the past) and find out it's a duplicate that has been sitting around for years unfixed.

If you have paid support, a small team of engineers will dedicate their time to fix the bug for you and provide you with a patch, so you can move on. The patch can sometimes be specific for your platform and situation.

This is particularly true if you are stuck with older JDK version and cannot move forward for various reasons.

Will be interesting once Graal is released. I've found it be at least 30% faster than the existing JDKs around for Scala development. Others have found similar results:

https://medium.com/graalvm/compiling-scala-faster-with-graal...

Surely it's no coincidence that, as Oracle removes differences between its JDK and OpenJDK, that they are throwing their weight behind this non-community project, with an enterprise version. Between sunsetting community owned Nashorn in favor of Graal solution to giving tools to OpenJDK presumably with fewer of their own maintainers, the resource shift is clear. Not that it's wrong or even nefarious, but devs need to realize who they're getting in to bed with when building a reliance on the tech.
Graal is open-source and most projects under its umbrella are [GPL2-with-classpath-exception licensed](https://github.com/oracle/graal/#license). The fact that they also have an Enterprise Edition does not make this a non-community project.
Sorry, I meant non-community owned. Mentioned in sibling comment, I use plenty of non-community-owned software, but I avoid wholly Oracle owned software.
It's all GPL licensed. How is it not 'community owned'? What is your definition of 'community', exactly?
Who makes the decisions and who can change the license and who can sue you for misuse of the software? I don't want to support any Oracle product if I can help it, regardless of license.
But the software was already released under GPL2. Even if Oracle changes the license, the community can always fork it from the last open version.
> this non-community project

What do you mean by non-community?

Graal is developed by a large community of people at Oracle, other companies and universities.

> What do you mean by non-community?

Who owns it. Sure, we all use stuff owned by large companies, we just have to pick and choose, and I avoid Oracle. As a dev community I wish we could avoid wholly owned Oracle software to make a statement about their business practices, but I understand that stance is unreasonable for many.

That's a reasonable stance, but I thought you were comparing it to OpenJDK. I don't think Graal is any less community than OpenJDK. Similar people (RedHat, AMD, Intel, many universities) contribute to Graal in the same way they contribute to OpenJDK. I suppose there isn't a formal community process for Graal?
I'm sorry but I don't think they're just as open at all.

And I say this as a huge fan of all of your work on Graal and JRuby and a proponent of the Java platform.

Contributing to Graal isn't just getting a commit into a GPLd project. It requires you to allow Oracle to ship it in GraalVM EE.

I have no problem with dual lisenced code nor begrudge the business model, but this is distictly against the spirit of the GPL.

(comment deleted)
(comment deleted)
(comment deleted)
But what about supporr for the JRE? Please help a sad IT admin understand what's gonna happen.
Oh, just the usual near-monthly (if not daily) death march of ever-increasing version numbers, just like Chrome and Firefox. And Windows Update. And OS X, And iOS. And Ubuntu. And so on, and so on, and so on...
In general I'm glad we have rapidly increasing version numbers for Chrome, Firefox and even Edge. If you had lived through the IE6 days, this would be something to appreciate.

I'm how sure how I feel about it with the JRE. I have old open source apps on Scala 2.11/SBT 0.13 that are already experience dependency rot. :-/ It's going to be more difficult too since deprecated stuff is finally getting removed from Java.

I'm curious to see where we'll be a few years from now.

JRE is on its way out.

Thanks to Java modules, jlinker and packager tool, the idea is that you just distribute everything together.

Happen to have a good link to read about it?
"jlink"

https://docs.oracle.com/javase/10/tools/jlink.htm#JSWOR- GUID-CECAC52B-CFEE-46CB-8166-F17A8E9280E9

"Self-Contained Application Packaging"

https://docs.oracle.com/javase/10/deploy/self-contained-appl...

"JLINK in Java-9"

https://blog.knoldus.com/jlink-in-java-9/

"Using Java 9 Modularization to Ship Zero-Dependency Native Apps"

https://steveperkins.com/using-java-9-modularization-to-ship...

Unfortunately it will take several years until you will be able to modularize server Java application. Right now the ecosystem just isn’t ready.
Nothing prevents you to deploy everything together.

We have done it multiple times.

Actually, time to look beyond the whole Java ecosystem.

After the claims Oracle made during the Google trial (such as APIs and method signatures being patent-able), it is clear that one can't work on the Java platform without infringing Oracle's IP. If Oracle doesn't sue you now, it can sue you when it makes financial sense to do so.

.Net looks like a much better alternative, with a patent pledge and ECMA standardization. Although to be fair, Microsoft is still a supporter of patent lobbies.

TypeScript (https://www.typescriptlang.org/) is a good starting point. If you use nestjs (http://nestjs.com/), it has dependency injection as well. Pairs with Angular nicely.
(comment deleted)
I've worked some in Typescript and I like it. In fact, it looks like it's going to be the next great enterprise language that's not Java or .Net. Am I delusional?
I like it compared to javascript, but I think it would be crazy to use it for backend work. I think making typescript happy probably saved me more time than it cost, but it's pretty janky, even compared to similar type systems like mypy. The ability to lie about types caused me quite a bit of confusion, with some libraries, especially immutable.js.

Next time I want to develop a frontend system, I think I'll try reasonml.

It's pretty cool actually. I used node because I can do client side prediction and server side validation with the same code. Note having client and server side in TS, means that I get completion for API calls from client to server side.
The next great language for enterprise web-frontends, maybe.
How can you compare nodejs runtime and java runtime? When you take into account traditional Java uses
(comment deleted)
Because I agree with the parent's post: "Actually, time to look beyond the whole Java ecosystem."

If you're thinking about life without Java, Typescript is interesting. Is it perfect? No, but it's evolving quickly, has traction, and the ecosystem is pretty good.

it is clear that one can't work on the Java platform without infringing Oracle's IP.

That's a pretty extreme interpretation. Most people aren't trying to ship Java-compatible runtimes, as Google did,

I think it's a reasonable interpretation and I agree with GP. APIs used to be seen as fair use and a way to compete, in the similar way to how IBM-compatibles are seen. However, when it became clear to Oracle that there is money to be had, they changed the very definition of copyright to get their fill. What's to say they wont mutate some other aspect of IP law in the future just to make you liable like they did with google?

If you're big enough, they will come after you. I think it's perfectly rational - and i'd argue smart - to cut them off early before it's too late.

Google had the opportunity to buy Sun after screwing it up and preferred not to.

"Triangulation 245: James Gosling"

https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...

If IBM had not given up to buy Sun, I am pretty sure they would have done likewise.

Plenty of JVM vendors are selling their versions without getting into trouble by playing by the rules.

https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...

I'm not sure this is relevant; regardless of Google's actions, trying to make APIs copyrightable is a dangerous abuse of the system.
So, if I want to ship with OpenJDK, I will need to buy Sun? And if I want to ship with Wine, I will need to buy M$?
If you ship 100% of OpenJDK no, which Google is yet to do.
Plenty of JVM vendors are happily selling their own versions, playing by the rules.

https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...

Google had the option to buy Sun after helping to their downfall, they have chosen not to spend the money to own Java. Now they get to spend on lawyers instead.

I guess what I'm saying is that we should dump a non-free platform ("non-free", as you seem to agree) for an alternative that offers freedom.

People have certainly learnt their lessons that the stewards cannot be trusted - they could get bought out as with Sun or their management could change any time. How users rejected Facebook's React License speaks of better awareness on these issues and is welcome.

Looking at the tools and libraries I get to use with Java, .NET, OS X/iOS, Android, Qt and the ones I get with the free alternatives, I rather stay with the former.
They're all open source licensed. Android even uses OpenJDK code these days.

What you're looking for goes beyond any traditional notion of free software, in the Stallmanist sense.

Can you elaborate on Google helping in Sun's downfall.

I seem to be missing a historical bit there.

To be confirmed but I recall that Sun offered to license Java to Google, for usage on Android. Google didn't want to pay a dime or acknowledge that a license a needed.

Long story short, Oracle bought java and it's back to square one, with layers and court this time.

>Plenty of JVM vendors are happily selling their own versions, playing by the rules.

Good for them. The parent suggests we should not stick to a platform that imposes such rules.

> After the claims Oracle made during the Google trial (such as APIs and method signatures being patent-able),

Copyrightable.

> it is clear that one can't work on the Java platform without infringing Oracle's IP.

That's not at all clear. After the third time Oracle v. Google gets ruled on by the trial court, it will undoubtedly be appealed to the Federal Circuit again. Whatever happens there, it is likely at least Google (given how the Federal Circuit has constrained what must happen at the District Court in the prior Appeal) and possibly Oracle will attempt an appeal to the Supreme Court. After that (whether the Supreme Court hears the case or not, but especially if they do), then what the law is in this area may be clear. Until then, all that is clear is what the Federal Circuit’s view of Ninth Circuit case law is, which as precedent is binding on no other court (any court bound by Ninth Circuit case law is bound by the actual case law of the Circuit, not the Federal Circuit’s interpretation of it) and, for litigants, has predictive power only for cases with patent claims that also raise similar copyright issues, and which arise out of districts in the Ninth Circuit.

Pick Clojure, Scala or JRuby instead of Java if you need to start off on the JVM, to hedge against this risk.
How does this hedge the risks? Those are still built on top of the JDK.
Currently primarily on the JDK . But enough abstraction to migrate. Scala, for example, has a mature scala.js VM and an emerging Scala Native VM.

[1] http://www.scala-js.org

[2] http://www.scala-native.org

I do a lot of development in ScalaJS.

And what you are talking about is just ridiculous. There are very few real world (if any) Scala projects that don't rely on least some Java based libraries. Either directly or through transitive dependencies.

If it's anything like Clojure/ClojureScript, the port would require work but be straightforward in most cases. Many people already use ClojureScript on Node instead of JVM Clojure. If you rely on JVM-only libraries for your core domain functionality, things become harder of course.
Had Microsoft owned Java it probably would have acted in the same way towards Google.

The versions mentioned here are strict Java compatible in that they follow a well-defined standard and an elaborate test suite. Quite different from Java Android.

Your suggesting .net as an alternative but ironically the licensing of Java is largely shaped due to the Sun vs Microsoft lawsuit. Microsoft tried to do their famous Embrace, Extend, extinguish on Java (and failed: https://www.cnet.com/news/sun-microsoft-settle-java-suit/ ).

Its only been a couple of years that Microsoft has been behaving "better". I suggest you read up on the history of Java, Android, Google and Microsoft because you also seem to be unaware what Android Oracle vs Google was really about; Its wasn't about patents, it was about copyright.

You know what they say about history: Those who don't know it are doomed to repeat it.

>Its only been a couple of years that Microsoft has been behaving "better"

So? Oracle has never behaved good, so there's that. Do you expect a MS regression?

Besides MS has made some concrete efforts to clear things, like a pledge to not sue over patents, an ECMA standard, etc.

>I suggest you read up on the history of Java, Android, Google and Microsoft because you also seem to be unaware what Android Oracle vs Google was really about; Its wasn't about patents, it was about copyright.

Same difference if Oracle ends up suing you for recreating Java APIs.

> Same difference if Oracle ends up suing you for recreating Java APIs.

Not at all. In a copyright case, you can argue fair use, as Google did.

Yeah, but how about not there being a case, and not having to argue (and pay laywers and such) at all?
If you're arguing fair user, you've already lost. That's a matter of opinion so it has to go all the way to a jury verdict. That means there's no guarantee and even if you win, you have to pay a couple million for the billable hours. You want a defense that's so obvious, the judge will throw out any case against you on the first day.
It should be so obvious that no one would even attempt to file the case
Microsoft's pledge not to sue [1] covers only compliant implementations of specific versions of some of the components. Since Android, for example, could be considered non-compliant (with the Java specification), they wouldn't necessarily have been covered if they had based it in the same way on .NET instead. Even if they were, there would likely still have been issues with the parts that aren't listed as covered by the pledge.

On top of that, while the promise mentions "Microsoft-owned or Microsoft-controlled patents" it is very specific about who is promising not to sue - Microsoft only, not its partners, subsidiaries or other affiliated entities. So they still have plenty of room to arrange for opponents to be sued.

[1] https://msdn.microsoft.com/en-us/openspecifications/dn646765

What is your suggestion, then, if Java and .net are off the table?
I agree Java is dying, but so is .Net. Microsoft is trying it's best, but .Net Core is no where near as popular as .Net 3.5. (google trends). Embrace the Beam. :)
My feeling is that .NET core is just starting to gather steam. I think it took some time before developers understood what was happening (and probably still quite many .NET developers could not describe the differences).

This Google Trends search shows .NET Core as leading since February 2017 [1]

[1] https://trends.google.fi/trends/explore?date=today%205-y&q=....

In your opinion what software platform will replace java and .net?
Only on SV coffee shops.

My world is pretty much divided between Java and .NET, with a sprinkle of C++.

Enterprise is slow but sure to follow. Look at NodeJS adoption for example today compared to 2 years ago.
Adoption is still zero on the projects I am involved with, to the point that one of the new features in Visual Studio is to access JavaScript libraries without any dependency on nodejs.

https://blogs.msdn.microsoft.com/webdev/2018/04/17/library-m...

So you work on enterprise projects which have zero NodeJs adoption. Got it. And what's with the reference to the plugin ?

It explicitly states itself as being a way to "simply [want to] acquire a couple of files" I don't get the connection you're trying to make.

Apparently you haven't read everything.

" - If your project does not require additional tools (like Node, npm, Gulp, Grunt, WebPack, etc) and you simply want to acquire a couple of files, then LibMan might be for you.

- LibMan lets you specify exactly where the files should be placed inside your project. (No additional build tasks or manual file copying required!)

- LibMan provides the benefit of a much smaller footprint in your web project as it only downloads the files you need. "

Basically the way to avoid touching node or anything related to it.

Did read, still don't get it. My point is SV/ Open Source is first to adopt newer tech. Enterprise follows by using these open source projects or acquiring companies that use this newer tech or just copying/building over them. I see wide adoption of JS on the server side in enterprise today compared to just a couple of years ago and NodeJS/NPM are the dominant forces in that direction. Some may be vary of NodeJS/server side js, sure but not most.
IIRC, if Oracle declines to protect its IP because you’re not worthy of suing yet, then they actually weaken their legal ownership of the IP.
> Actually, time to look beyond the whole Java ecosystem.

So why not Unix instead of *VM? It's been stable for quite some time, and offers massively better tools than these two alternatives.

The .NET ecosystem is minuscule compared to Java, especially when it comes to alternative languages running on the virtual machine. So no, for a lot of people it's not a real alternative.
Lol, after reading the headline, I knew somebody was going to make a "time to look beyond Java" comment. It's a classic: it doesn't matter when or where, or if it makes sense or not... somebody has to say it.

However I wasn't expecting the same guy to actually promote .net, which is exactly a Java clone (created soon after the justice told Microsoft to stop trying to harm Java with this J++ thing) which only ran on Windows. It still does, because .net core is just a subset of the entire platform. But it's got a big corporation behind dictating its future development which poses the same threats as Oracle.

So given nobody can predict the future right now, I think I'd better keep using the long time open source, community focused and cross-platform alternative, which happens to be Java.

(comment deleted)
Hope Go could take it
First they need to add support for generics, enumerations, dynamic loading, OSes supported by Java....
So would the Docker OpenJDK containers be equivalent to your distros OpenJDK build?

https://hub.docker.com/_/openjdk/

I assume so since they're maintained by the Docker community in the same way Debain or Ubuntu may maintain their package trees.

These Docker images use the Debian or Alpine OpenJDK packages.
can we fork OpenJDK?
Yes.
Without getting sued by Oracle?
To my knowledge that'd be the first [complete] test of GPL by the legal system, which is also a great outcome.
That's something nobody can be sure it won't happen.

OpenJDK is open source (GPL2 + classpath exception).

"Java" otoh is a trademark.

Google didn't fork OpenJDK. They now use it though, after the lawsuit!
This is great! Competition breeds excellence; I'm glad we're going to have a lot of new distributions.
There's really only one, possibly two saviors of Java. Redhat with JBoss/Icedtea, and OpenJDK, which has IBM, Redhat, Oracle and Doug Lea at the top level. I don't see any great examples of building successful open source communities from IBM, but open sourcing OpenJ9 earns them some good will. Short of OpenJDK being adopted by Apache/Mozilla/etc.. (Oracle will let this happen after hell freezes over..) Java really has only one savior.

Redhat is skipping the minor Java versions, so it's Icedtea/OpenJDK build has Java 8, and the next version will have Java 11. This is what I'll be using on Linux.

"I don't see any great examples of building successful open source communities from IBM, [...]"

What about Eclipse?

Love it or loathe it, it's certainly been successful.

Sure, apart from their attempt to control the Java ecosystem being that old, it doesn't leave me with confidence that they are as committed to open source as Redhat.

This sounds harsh, and I don't mean to be, but only time will tell how OpenJDK/Open J9 fares.

How much of the entire Java api is under the GPL?

I get mixed messages on OpenJFX on how much of JavaFX has been open sourced.

All of it. I'm not familiar with OpenJFX but JavaFX has always been in the GPLd OpenJDK.
Interesting read.

I think the whole idea of "We need to replace Java with [Insert Language]" is much more complicated topic than just saying "X is free , Java is owned by Oracle".

Even is this is true , Java is by far one of the most performant programming language that exist on earth.

People just don't realize the hundreds of millions of dollars that went into the JVM and the JDK.

Even if they are great alternatives like Go or .NET , they either come with huge limitations in performance or their ecosystem.

Per say , finding JVM developers isn't that hard, regardless of the geography. However , finding Go developers outside of the Bay Area ? Good luck with that.

The issue with Patent on the JVM is well know and there is very little to nothing that we can do about it.

Java is better than it used to be but you’re significantly overselling performance as a competitive advantage. Many other languages have no trouble producing code which is as fast or faster, and Java is still shaking the culture of excessive complexity which has squandered much of the hard work in the JIT.

The ecosystem is a much better argument since it’s certainly massive, as is finding developers, although quality varies wildly in both cases.

More than that, speed is vastly overrated in a lot of cases.
True, although that has a way of becoming important after awhile. That’s why I prefer to focus on complexity and clarity as it’s much harder to make convoluted code when it becomes important.
It’s nit picking, but I think a more correct statement would be “lots of small performance mistakes add up over time”. It’s very rare that I see a project needing a new language for performance reasons, but I see projects that need refactoring for performance all the time.
The Google / Oracle case didn't end up being about patents because they were all invalidated or deemed not to apply, iirc.

It ended up being about copyrights and whether or not you can copyright APIs.

It's unfortunate that Oracle chose to break the long-standing convention on this topic, however, it's not entirely surprising that eventually someone did. It's not at all clear why APIs should not be copyrightable, given the intent and wording of copyright laws and treaties - it's merely a convenient collective belief the software industry has had. It's now being tested in court and apparently splitting judges both ways.

I would also note that you always take such risks when building on platforms. The web is basically driven by Google these days, with other browser vendors either struggling to keep up or just giving up entirely (see, Safari) creating a new "works best in IE" era. And Google's stewardship of the web is hardly uncontroversial. Lots of obvious, major technical problems go unresolved for years or decades. AMP seems to be upsetting a lot of people. And of course there's not much stability: the web guys don't seem able to pick a direction and stick with it (e.g. web components/shadow dom stuff).

> Note also that certification is currently on a trust-basis - the results are not submitted to the JCP/Oracle for checking and cannot be made public.

Not public? Why on earth not?

So apart from Java and .NET what other high level languages are there that have gained traction to near the extent of these two?

I must say that Oracle makes me hesitant to want to use Java in anything I'd make in my free time.

Google is pushing Swift with a Tensorflow port, and if they were even remotely interested in doing a Java port for training, it would've happened already. I will say, no Apple or MS for me thanks.

I hope Scala with Scala native continues to thrive, and for any additional pet projects not in Scala, frankly Python sounds pretty appealing to me as someone who eschews dynamic typing. 3.6 seems to have added some type inference, and it's popularity is up there with Java/C++/JS... Rust might be an option too.

You don't have to use Oracle JDK, Azul offer their implementation plus OpenJDK 11 has all the goodies from Oracle JDK.
I was mentioning just bundling JRE with the application.

As for Spring, I never used it in anger.

Our Java Web projects usually are built on top of JEE stacks or Jersey.