George Adams & Hendrik Ebbers
AdoptOpenJDK
Making Java free again
Slide 2
Slide 2 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Hendrik Ebbers
▸ Karakun Co-Founder
▸ Founder of JUG Dortmund
▸ JSR EG member
▸ JavaOne Rockstar, Java Champion
▸ AdoptOpenJDK TSC member
Slide 3
Slide 3 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
George Adams
▸ Java Program Manager @ Microsoft
▸ AdoptOpenJDK Co-Founder
▸ Chairman of TSC @ AdoptOpenJDK
▸ Core Collaborator @ Node.js
▸ Foundation Bootstrap Team Member @ OpenJSF
Slide 4
Slide 4 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
We’ll Cover…
▸ Terminology
▸ OpenJDK Workflow
▸ Vendor distribution / differences of vendors
▸ AdoptOpenJDK
▸ History
▸ Eclipse Adoptium
▸ Build/Test
▸ Roadmap
Slide 5
Slide 5 text
Terminology
Slide 6
Slide 6 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Terminology
▸ OpenJDK
▸ The Open source project which is the Reference Implementation (RI) of
Java SE standard.
▸ OpenJDK binary
▸ JDK built directly from OpenJDK source code.
▸ OpenJDK Provider
▸ A (vendor) who provides an OpenJDK binary.
Slide 7
Slide 7 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Service Provider Interface
• Based on Interfaces it's quite easy to define a general service and several
implementations in Java
Java 9
Java 10
Java 11
Java 12
Java 13
Java 14
Java 15
2018 2019 2020
Java 8
Free
Commercial
Not Free in Prod
Oracle JDK Release Train
Slide 8
Slide 8 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Vendor distribution / differences of vendors
▸ AdoptOpenJDK (IBM, Microsoft et al)
▸ Amazon Corretto
▸ Azul Zulu
▸ BellSoft Liberica
▸ Linux Distros
▸ Red Hat
▸ SapMachine
▸ Alibaba Dragonwell
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
OpenJDK Workflows
8
Oracle
Vendor B
Vendor A
OpenJDK
New feature
Security fix
Slide 11
Slide 11 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
OpenJDK Workflows
8
9
Oracle
Vendor B
Vendor A
OpenJDK
New feature
Security fix
Slide 12
Slide 12 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
OpenJDK Workflows
8
Oracle
Vendor B
Vendor A
OpenJDK
New feature
Security fix
Slide 13
Slide 13 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Service Provider Interface
• Based on Interfaces it's quite easy to define a general service and several
implementations in Java
Java 9
Java 10
Java 11
Java 12
Java 13
Java 14
Java 15
2018 2019 2020
Java 8
Open-Source
OpenJDK Release Train
Slide 14
Slide 14 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Composition of OpenJDK 8
OpenJDK 8
JVM, tools, etc. JVM, tools, etc.
Exclusive Oracle
stuff
eg. Flight recorder
WebStart
Mission Control
Oracle JDK 8
Slide 15
Slide 15 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Composition of OpenJDK 11+
OpenJDK 11+
JVM, tools, etc. JVM, tools, etc.
Exclusive Oracle
stuff
Includes
Flight recorder
Mission Control
Oracle JDK 11+
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
History of AdoptOpenJDK
• Todo
~2003
JAVA ADOPTION GROUP FOUNDED
2016
IBM CREATES GETOPENJDK
2017
IBM DONATES GETOPENJDK TO
ADOPTION GROUP
2018
PROJECT GROWS RAPIDLY,
1 MILLION DOWNLOADS
2019
30 MILLION DOWNLOADS,
23 SPONSORS
2020
160+ MILLION DOWLOADS
ADOPT TO JOIN ECLIPSE
Slide 18
Slide 18 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
AdoptOpenJDK => Eclipse Adoptium
▸ Project Management Committee (PMC)
▸ Working Group + Steering Committee
Slide 19
Slide 19 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Business Ready Binaries
The place to get free binaries by the community
▸ Broad platform Coverage
▸ Professionally tested
▸ Clear Support Policy
▸ Backed by major vendors and the Java community
▸ Already at 170 Million Downloads
Slide 20
Slide 20 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Open and Transparent
‣ Technical Steering Committee in the open
‣ The entire project is OSS
‣ Everything happens on GitHub and Slack
Slide 21
Slide 21 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Running an Open-Source project at Scale
160 million downloads 200+ dedicated
machines
106 GitHub repositories
170 Million Downloads 200+ Dedicated Machines 106 GitHub Repositories
Slide 22
Slide 22 text
Build & Binaries
Slide 23
Slide 23 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Example Build/Test Pipeline
Get the OpenJDK
variant source
repo
Choose the
branches to
build from
Build, Test,
Deploy Pipeline
Build Test Deploy Available
Build via
ci.adoptopenjdk.net
Approved third-party
OpenJDK Binaries
Tests run via
ci.adoptopenjdk.net
Deploy Nightly and /
or Release builds to
GitHub
www.adoptopenjdk.net
api.adoptopenjdk.net
dev if we have
AdoptOpenJDK
changes
master or
if no
changes
or
Clone / update from
OpenJDK mercurial
forest
Pull directly from
other variant e.g.
Eclipse OpenJ9
or
Slide 24
Slide 24 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Jenkins - CI
Slide 25
Slide 25 text
Supported VMs
Slide 26
Slide 26 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
HotSpot
HotSpot is the VM from the OpenJDK community.
▸ It is the most widely used VM today. e.g Oracle’s JDK.
▸ HotSpot is shipped as part of the OpenJDK source code.
▸ It is suitable for all workloads.
Slide 27
Slide 27 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Eclipse OpenJ9
Eclipse OpenJ9 is an alternative VM to Hotspot
▸ As a separate download, AdoptOpenJDK bundles this VM with OpenJDK class
libraries.
▸ For some cloud/container workloads, it’s faster/more efficient.
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Sources
▸ All builds are based on OpenJDK
▸ OpenJDK Mercurial repositories are mirrored into AdoptOpenJDK GitHub
▸ No additional functionality (GC, etc.)
▸ Additional build steps like notarisation for macOS
Slide 30
Slide 30 text
Test
Slide 31
Slide 31 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Test Suite
▸ AdoptOpenJDK provides the test suite AQA
▸ Open source test suite comprising of tests from the Java Ecosystem
▸ Includes tests contributed by IBM and other large application/framework
tests
▸ Can be used to test any OpenJDK build
Slide 32
Slide 32 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Nighty & Release Tests
Java 8 Java 11 Java 13 Java 14 Branch h.x +
Win x64 Win x86 AIX ppc64 Linux x64 OpenJ9 HotSpot
x
58 platforms
6 versions
250.000 tests
x
x
Slide 33
Slide 33 text
87,000,000+
Tests run per release
Slide 34
Slide 34 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Tests
Time
Build Deploy
Test
openjdk
functional
system
external
perf
jck
Groups of tests that
are executed in
parallel
Slide 35
Slide 35 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Tests
Time
Build Deploy
Test
openjdk
functional
system
external
perf
jck
~ 20,000 tests
~ 125,000 test cases
12+ apps
5 Microprofile TCKs
80+ benchmarks
~ 25,000 tests
Will come for Eclipse Adoptium
~ 6600 tests
Slide 36
Slide 36 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
Tests
Docker Container
Copy JDK Build
Install build tool
Check out Derby repo (latest tag)
Build Derby
Run all Derby tests
Collect test result
Test Job
Slide 37
Slide 37 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
AdoptOpenJDK Projects
▸ Iced-Tea Web
▸ JITWatch
▸ jlink.online
▸ JDK Mission Control (binaries)
▸ AQA
▸ Red Hat upstream builds (binaries)
Slide 38
Slide 38 text
Technical Roadmap
Slide 39
Slide 39 text
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
API V3
https://api.adoptopenjdk.net/swagger-ui
https://api.adoptopenjdk.net/graphql