inspired by Java Champion Martjin Verburg

From "The Diabolical Developer's Guide to Picking Your Java"

Summary

  1. Terminology
  2. What happened to Oracle's Java?
  3. Your options
  4. OpenJDK providers
  5. AdoptOpenJDK (Business ready binaries, Community, Build farm)

Terminology

👉 Java Standard Edition (Java SE)

  • Specification of Java language syntax, JVM and core librairies.
  • Defined by Java Community Process (JCP) under an umbrella of Java Specification Requests (JSR).

👉 Java Development Kit (JDK)

  • Contains the binary implementation of Java SE and can include extras.
  • Often tested using the Technical Compatibility Kit (TCK) to ensure conformance to the Java SE specification.

👉 OpenJDK - The Project / Code / Community

  • The Open Source code which is the Reference Implementation (RI) of the Java SE Standard
  • The project where this work occurs
  • The community which works on the source code

👉 The Binary

  • A JDK built directly from OpenJDK source code
  • Providers / Vendors produce OpenJDK binaries, OpenJDK (the project) does not

So think of OpenJDK has a place, not a thing (the thing is delivered by vendors: Oracle, IBM, RedHat, Azul, Alibaba, Bell soft)

What happened to Oracle's Java?

We use to download it on Oracle's website.

The licensing has changed.

Why?

For profit. Oracle wants to capitalize on Java.

👉 End of Java public updates

  • Oracle is providing free updates for six months (After six months you will not get critical fixes for free). That forces you to update your Java version, or to buy a subscription. If none of that makes it for you, you have other providers.
  • There is some devil in the detail: https://bit.ly/javaisstillfree

Your options

👉 Option 1: Get an Oracle Subscription

  • You'll get a great JDK with all the fixes, from the largest contributors to OpenJDK
  • You'll (in)directly be helping pay for R&D
  • Pricing at the lower number of JVMs is not prohibitive (It is reasonable even for small/meidum companies)
  • https://www.oracle.com/java/java-se-subscription

👉Option 2: Stay on the last update, don't get patches 💥

  • This is not recommended whatsoever

👉Option 3: Choose an OpenJDK providers

  • Red Hat/ SAP are leading the OpenJDK 8 and 11 update projects respectively

--Alibaba, Amazon, Azul, Google, IBM, Microsoft, Twitter are all supporting these projects--

  • You'll get a great JDK/JRE with all the fixes
  • --Including most 'Oracle only' fixes (for now)--
  • ->you can get binaries that are free

--Commercial support is limited in some cases--

Open JDK providers

👉 Alibaba Dragonwell

Java 8 and 11 on Linux only, with safe Unsafe!

  • Java 8 and 11 only
  • Aliyun Linux, CentOS or RHEL Linux x86 only
  • Has some added protection for sun.misc.Unsafe calls

👉Amazon Corretto

Java 8 and 11 - with James Gosling good vibes!

  • Java 8 and 11 only
  • Well tested, TCK compliant
  • Mac OS X, Windows, Linuxx x86 and aarch64
  • James works there 🙂
  • Supported on AWS!
  • Not supported anywhere else
  • Some performance and stability patches over and above the OpenJDK, but not many

👉Azul Zulu

Java 6, 7, 8, 11, 13; a trusted name

  • Azul have been providing Java for a long time
  • Well tested, TCK compliant
  • Mac OS X, Windows, Linuxx x86 and aarch64 others
  • Commercial support if you want it (MTS)
  • Some performance and stability patches over and above the OpenJDK RI, but not many
  • Sadly, not really in the OpenSource ☹
  • Midsize vendor

👉Distro based OpenJDK

Java 8 and 11 and more! Take some care.

  • Distro builds are easy to get!
  • Variable testing, some TCK, some not.
  • Works well with your distro / package manager
  • Only for your distro
  • No commercial support
  • Some issues in the past about chain of custody of source
  • yum or apt-get

👉Bellsoft Liberica

Java 8 and 11 and more! Former Oracle Engineers.

  • Bellsoft are new
  • Well tested, TCK compliant
  • Mac OS X, Windows, Linuxx x86 and aarch64 others
  • Commercial support if you want it 
  • Some performance and stability patches over and above the OpenJDK RI, but not many
  • Also Java consulting services
  • Relatively small vendor

👉 Oracle OpenJDK

Reference implementations, it is NOT the COMMERCIAL JDK

  • Built by the stewards of Java
  • Well tested, passes the TCK
  • Windows, Mac, Linux x86
  • 6 months of free updates only
  • No real documentation, community support or anything really

👉Red Hat OpenJDK (with RHEL)

If you're on RHEL (Red Hat Enterprise Linux), this is a bo brainer.

  • Built by the project leads of Java 8 and 11
  • Well tested, passes the TCK
  • RHEL only
  • Amazing support
  • Large vendor

👉SAP Machine by SAP

Java 11 and 14, on s390 or PPC? Go for it!

  • Built by the stewards of Java 11
  • Well tested, passes the TCK
  • Windows, Mac, Linux, s390, PPC
  • Lead engineer went to Amazon recently
  • Small OpenJDK vendor

👉Extra choice: Eclipse OpenJ9

Eclipse OpneJ9 is an alternative VM to hotspot

  • ->As a separate download, AdoptOpenJDK bundles this VM with OpenJDK class librairies
  • For some cloud/container workloads, it's faster and/or more efficient

AdoptOpenJDK (aka Eclipse Adoptium)

AdoptOpenJDK originates from a reaction of the community, Java champions, vendors against a missing strong alternative to the Oracle subscription.

👉 Business ready binaries

  • The place to get free binaries by the community
  • --Windows x32/x64, Linux x86, Mac OS X, ARM x32/x64, AIX, zOS, PPC, Solaris Sparc/Intel and more!--
  • Professionally tested and passes the AdoptOpenJDK Quality Assurance
  • Community or Commercial support
  • Backed by Major Vendors and the Java Community!
  • Every distribution and installer mechanism under the sun
  • --Docker, Homebrew, Windows MSI, Mac OS X PJKG, Linux Yum/Apt--
  • The new home for IcedTea Web source and Java Mission Control binaries

👉 Open and transparent

  • The entire project is OSS
  • Technical Steering Committtee (TSC) is in the open
  • Build and Infra Tech Stacks (cool stuff you coulda tryout if you get involved)
  1. Ansible for infrastructure as code
  2. Modular/functional Bash scripts for builds
  3. Jenkins (Groovy) based pipelines
  • MaaS, IaaS, Docker, Microsoft AzDO, AWS Codebuild supported
  • Github (https://github.com/adoptopenjdk) & Slack (https://adoptopenjdk.net/slack)

👉Lots of supporters:

  • digicert, Ocado Technology, jClarity, Delphix, LJC, GoDaddy, Microsoft Azure, OpenLab, IBM, Joyent, Linaro, Github, Cloudflare, Inspira, Azul Systems, Macincloud, DigitalOcean, snyk, Scaleway, Localize
  • Even some building their own JDK

👉 Users (production environment):

  • Aipsafe, alamon, bol.com, Delphix, etnetera, fream, GoDaddy, IBM, Ideati, Inspira, JClarity, Karakun, Lucee, Microfocus, mongoDB, MyView, Ocado Technology, ortus solutions, betfair, Pivotal

👉 Strong community:

  • 170 millions downloads

👉 TSC architecture

  • tons of repos
  • at the top: the steering committee composed of 3 folk from IBM, 3 folks from Microsoft, 1 from Red Hat, 1 from Karakun, 1 from University of Zurich and one more.
  • Below, there are the infrastructure group, build group, testing group, website group, security group
broken image

👉AdoptOpenJDK flow:

  • We got the OpenJDK source code, we choose the batch to build from, we apply any of our own changes
  • We have a build/test/deploy pipelines
  • That pipeline goes from a humongous battery of tests
broken image

👉 AdoptOpenJDK Tests, at least:

  • Functional: 20 000 tests
  • openjdk: 6600 tests
  • system: 25 000 tests
  • external: 8+ apps, 4 microprofile TCKs, 50 000 container tests
  • performance: 6+ benchmarks (micro & full suites)

Even other JDK vendors use these tests on their JDK, which is fantastic

👉 AdoptOpenJDK becomes Eclipse Adoptium

Conclusion: Java is STILL FREE