AdoptOpenJDK Making 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 .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

Distros

▸ 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 AdoptOpenJDK forest changes or or Pull directly from master or Build Test Deploy other variant e.g. if no Available Eclipse OpenJ9 changes

Build via Tests run via Deploy Nightly and / www.adoptopenjdk.net ci.adoptopenjdk.net ci.adoptopenjdk.net or Release builds to .adoptopenjdk.net GitHub

Approved third-party OpenJDK Binaries

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams - 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