AdoptOpenJDK Making Java free again
George Adams & Hendrik Ebbers Hendrik Ebbers
▸ Karakun Co-Founder
▸ Founder of JUG Dortmund
▸ JSR EG member
▸ JavaOne Rockstar, Java Champion
▸ AdoptOpenJDK TSC member
@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
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams We’ll Cover…
▸ Terminology
▸ OpenJDK Workflow
▸ Vendor distribution / differences of vendors
▸ AdoptOpenJDK
▸ History
▸ Build/Test
▸ Roadmap
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Terminology 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.
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Service ProviderOracle JDK Release Interface Train Java 15
Java 14
• Based on Interfaces it's quite easy to deJavafine 13 a general service and several implementations in Java Java 12 Java 11
Java 10
Java 9
Java 8 Free Commercial 2018 2019 2020 Not Free in Prod
@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
New feature
Security fix
8 OpenJDK
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams OpenJDK Workflows
Vendor A
Vendor B
Oracle
New feature
Security fix
8 OpenJDK
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams OpenJDK Workflows
Vendor A
Vendor B
Oracle
New feature
Security fix
8 9 OpenJDK
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams OpenJDK Workflows
Vendor A
Vendor B
Oracle
New feature
Security fix
8 OpenJDK
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Service ProviderOpenJDK Release Interface Train Java 15
Java 14
• Based on Interfaces it's quite easy to deJavafine 13 a general service and several implementations in Java Java 12 Java 11
Java 10
Java 9
Java 8 Open-Source
2018 2019 2020
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Composition of OpenJDK 8
eg. Flight recorder WebStart Exclusive Oracle Mission Control stuff
JVM, tools, etc. JVM, tools, etc.
OpenJDK 8 Oracle JDK 8
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Composition of OpenJDK 11+
Exclusive Oracle stuff
Includes Flight recorder Mission Control
JVM, tools, etc. JVM, tools, etc.
OpenJDK 11+ Oracle JDK 11+
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
History of AdoptOpenJDK
• Todo
~2003 2016 2017 2018 2019 2020
23 SPONSORS ADOPTION GROUP
1 MILLION DOWNLOADS 30 MILLION DOWNLOADS, IBM CREATES GETOPENJDK PROJECT GROWS RAPIDLY, 160+ MILLIONADOPT TO DOWLOADS JOIN ECLIPSE IBM DONATES GETOPENJDK TO
JAVA ADOPTION GROUP FOUNDED
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams AdoptOpenJDK => Eclipse Adoptium
▸ Project Management Committee (PMC)
▸ Working Group + Steering Committee
@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
@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
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Running an Open-Source project at Scale
160170 millionMillion downloadsDownloads 200+200+ Dedicated dedicated Machines 106106 GitHub GitHub repositories Repositories machines
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Build & Binaries Example Build/Test Pipeline
Get the OpenJDK Choose the Build, Test, variant source branches to Deploy Pipeline repo build from
Clone / update from dev if we have OpenJDK mercurial AdoptOpenJDK forest changes or or Pull directly from master or Build Test Deploy other variant e.g.
Build via Tests run via Deploy Nightly and / www.adoptopenjdk.net ci.adoptopenjdk.net ci.adoptopenjdk.net or Release builds to api.adoptopenjdk.net GitHub
Approved third-party OpenJDK Binaries
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Jenkins - CI
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Supported VMs 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.
@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 Supported Platforms
@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
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Test 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
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Nighty & Release Tests
x 58 platforms x Win x64 Win x86 AIX ppc64 Linux x64 OpenJ9 HotSpot
6 versions x Java 8 Java 11 Java 13 Java 14 Branch h.x +
250.000 tests
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams 87,000,000+ Tests run per release Tests Time
Build Test Deploy
functional
system Groups of tests that are executed in external parallel
perf
jck
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Tests Time
Build Test Deploy
~ 6600 tests openjdk
functional ~ 20,000 tests
~ 25,000 tests system
external ~ 125,000 test cases 12+ apps 80+ benchmarks perf 5 Microprofile TCKs
jck Will come for Eclipse Adoptium
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Tests
Copy JDK Build Install build tool Docker Container Check out Derby repo (latest tag) Test Job Build Derby
Run all Derby tests Collect test result
@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)
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Technical Roadmap API V3
https://api.adoptopenjdk.net/swagger-ui
https://api.adoptopenjdk.net/graphql
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Dynamic Infrastructure
Job triggered Static server Build/Test
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Dynamic Infrastructure
Job triggered A Cloud Provider Docker Build/Test
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Consistent Build Environments
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Parallelisation
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Other Roadmap Items
DYNAMIC DYNAMICWEBSITE WEBSITEAPI V3 JLINK.ONLINEAPI V3 GITHUBJLINK.ONLINE ACTIONS GITHUB ACTIONS INFRASTRUCTURE INFRASTRUCTUREREDESIGN REDESIGN
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Sponsors
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Community
YOU?
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Any Questions?
@adoptopenjdk
https://adoptopenjdk.net
github.com/adoptopenjdk
adoptopenjdk.net/slack
@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams