inspired by Java Champion Martjin Verburg
From "The Diabolical Developer's Guide to Picking Your Java"
Video => https://youtu.be/doaw2J3AwgM
Summary
- Terminology
- What happened to Oracle's Java?
- Your options
- OpenJDK providers
- 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)
- Ansible for infrastructure as code
- Modular/functional Bash scripts for builds
- 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
๐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
๐ 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
https://adoptopenjdk.net/Help drive the future