Post

Get away from paying for Java

Some stuff down to help people get away from paying for Java

Java is a standard, not a software product.

  • The OpenJDK release is the ‘reference release’ and should run any software that ‘runs on Java’. Oracle’s JRE/JDK are paid commercial versions, but OpenJDK is free and has compliant builds by Oracle’s own OpenJDK team, Amazon Coretto, RedHat, Eclipse Temurin, and others. Some are supported by their vendor (you might be ‘on your own’ with Eclipse, but able to get support from RedHat if you use their JRE on their systems).

Understand that people think “Oracle Java must be better or more compatible than OpenJDK”

  • But the truth is that OpenJDK is the full-featured product, and Oracle’s JDK is just a branded and supported build of it that Oracle can attach service contracts to.
  • Commercial JREs exist that are more ‘divergent’ than those listed above, like GraalVM or Azul. I would consider these ‘specialty’ products that we can ignore, though they might be faster, cheaper, or offer better support than Oracle’s.

Know that Java is generally forwards compatible.

  • A program written for Java 7 should work on Java 8, 11, or 22. In reality, they might need some tweaking or not work in reality, but it should not be assumed that a program that shipped on Java 7 needs to stay on 7 forever. In particular, only newer JREs can handle things like HiDPI/Retina displays correctly.
  • Old programs can take advantage of new features if you can get them to run on new JREs. In particular, AES-NI, ZGC, SIMD intrinsics, and better multithreading. OpenWebStart will likely let you get rid of old browsers and plugins, and allow Macs and Linux desktops to run your enterprise apps again.

Recent Problems

  • The main problem keeping orgs on older JREs on endpoints is that the programs use ‘JNLP’ files to trigger either an NPAPI browser plugin or a JVM launch through the Java WebStart desktop app.
  • The plugin and WebStart are both deprecated and no longer available in ANY supported release.
  • To replace that functionality, you can use OpenWebStart https://openwebstart.com to run JNLP-based programs on systems with up-to-date JREs. OpenWebStart can ‘map’ java programs to JREs that it self-downloads, or already installed ones.
  • Also likely that your servers are distributing JNLP files that force old specific builds of the JRE. This can be fixed by editing the JNLP files on the server to be more flexible (e.g., change the JNLP to specify Java 8.* instead of 7u63).
  • Consider that a program for Java x.y.z will ALWAYS work with newer ‘.z’ (bugfix) builds, though some might need very simple changes like changes to SSL ciphers or more memory allocated. You should always strive to use a JRE that’s still getting bugfixes.
  • Long Term Supported releases of Java are currently 8, 11, and 21. EoL dates vary by vendor and product (see: https://endoflife.date/eclipse-temurin et al).

Refer here https://whichjdk.com

This post is licensed under CC BY 4.0 by the author.