22 comments

[ 2.5 ms ] story [ 54.7 ms ] thread
Question for HN: which Java runtime are people here using for prod environments?
Most of us just use whatever the cloud provider we're using provides. For local builds and desktop apps I like to use Azul Zulu though.
OpenJDK as packaged by Alpine or OpenJDK as packaged by Debian, but sometimes Corretto if that happens to be preset in an AMI or OCI source.
Just whatever is provided with the distro.
The one shipped with Debian
When the distro I'm running the app on provides packages for the major Java version I need, I use them. The rest of the time, I tend to go with Adoptium Eclipse Temurin.
This is probably a really dumb question, but what "support" do corporations running Java need? What are they getting for these massive fees they're paying?

Follow up question, what sources are the open runtimes based on? Is it similar to CentOS where the source code is compiled and the artifacts are distributed? Or is it more like Amazon, Microsoft and others have to reimplement the same features.

They need support in not attracting the inquiry of oracle auditors.

They’re basically all based on openjdk source with different VMs and GC tech added in or supported to different levels.

In reality, they need support in order to point liability towards Oracle when something goes wrong. Enterprises like having the ability to shift blame. "Yes we know its down, we have a support ticket in with Oracle."
The support most organisations need is security updates for older versions. The free OpenJDK forks provide longer term security updates for their releases.

Oracle uses a more tricky setup. Every LTS release and its updates, but only until 1 year after the next LTS release, is covered by their "no-fee license". After that 1 year the updates are under a different license that only allows personal/development use or use on Oracle cloud. So any commercial user needs to buy a license from Oracle for these versions.

Likely it's just meeting the compliance requirement that all pieces of software are to be supported. Whatever that means.
> but what "support" do corporations running Java need?

I’m guessing it all comes scale and bloat.

A hack from 5 years ago to store critical metadata in some schemaless blobs needs to be migrated from an unsupported system to a newer one. The new system uses an updated Java version, and it turns out this gets inexplicably slow when parsing parts of the metadata blobs. Also, maybe JNI is involved, or nobody knows how to build the project, etc.

If this was a startup then two devs would pull an all nighter and come up with an even worse hack. Or would offload that to a random cloud platform, burning vc money. Or would not use Java in the first place. Or the startup would not survive / pivot.

In a large corporation I guess there’s support.

From my experience in corporate, "support" basically means consultation, because the corporation only employs "developers" who know zero things about garbage collection, or how threading works, or how to read reference documentation, and need a programmer that actually knows what they're doing when things go awry.

I've lost count of how many times we had a problem, I went and read the proper documentation and said what had to be done, only to be ignored because upper mgmt didn't like the solution, so they called "support" only to be told the exact same thing.

In similar fashion we have some large legacy systems on Coldfusion. Last time we needed to upgrade Adobe had gone crazy with their pricing based on CPU core count. Migrated everything to Lucee and OpenJDK and it's been running beautifully since.
(comment deleted)
Isn't Oracles Java also OpenJDK? I was under the impression that these days pretty much nobody has their own independent jdk anymore, all are more or less repackaging openjdk. In the same vein, nobody is using just plain openjdk, they are almost always using some build/distro of openjdk (of which Oracles is one of)
Most of them are all builds of OpenJdk source code. IBM's OpenJ9 is the only independent jdk that I know of, it is a whole different virtual machine implementation + OpenJdk's Java standard library code.