Slide 1

Slide 1 text

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

Slide 9

Slide 9 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams OpenJDK Workflows 8 OpenJDK New feature Security fix

Slide 10

Slide 10 text

@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.

Slide 28

Slide 28 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Supported Platforms

Slide 29

Slide 29 text

@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

Slide 40

Slide 40 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Dynamic Infrastructure Job triggered Static server Build/Test

Slide 41

Slide 41 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Dynamic Infrastructure Job triggered Build/Test A Cloud Provider Docker

Slide 42

Slide 42 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Consistent Build Environments

Slide 43

Slide 43 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Parallelisation

Slide 44

Slide 44 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Other Roadmap Items DYNAMIC INFRASTRUCTURE WEBSITE REDESIGN API V3 JLINK.ONLINE GITHUB ACTIONS DYNAMIC RASTRUCTURE WEBSITE REDESIGN API V3 JLINK.ONLINE GITHUB ACTIONS

Slide 45

Slide 45 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Sponsors

Slide 46

Slide 46 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Community YOU?

Slide 47

Slide 47 text

@hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Any Questions? @adoptopenjdk https://adoptopenjdk.net github.com/adoptopenjdk adoptopenjdk.net/slack