$30 off During Our Annual Pro Sale. View Details »

AdoptOpenJDK - Making Java free again

AdoptOpenJDK - Making Java free again

AdoptOpenJDK is the leading provider of OpenJDK™ binaries. With over 170 million downloads in the last year, it is successfully used by many enterprises and ready for your production usage of Java™. AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. This talk will cover how we build on over 15 different platforms, execute over 87 million tests and distribute OpenJDK binaries to millions of users. We will also cover how AdoptOpenJDK binaries compare against the Java binaries that you use today. If you’re curious to understand the difference between OpenJDK, Oracle Java, AdoptOpenJDK and all the other distributions, then this is the talk for you!

Hendrik Ebbers

August 12, 2020
Tweet

More Decks by Hendrik Ebbers

Other Decks in Programming

Transcript

  1. George Adams & Hendrik Ebbers
    AdoptOpenJDK
    Making Java free again

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. Terminology

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    OpenJDK Workflows
    8
    Oracle
    Vendor B
    Vendor A
    OpenJDK
    New feature
    Security fix

    View Slide

  11. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    OpenJDK Workflows
    8
    9
    Oracle
    Vendor B
    Vendor A
    OpenJDK
    New feature
    Security fix

    View Slide

  12. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    OpenJDK Workflows
    8
    Oracle
    Vendor B
    Vendor A
    OpenJDK
    New feature
    Security fix

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. View Slide

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

    View Slide

  18. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    AdoptOpenJDK => Eclipse Adoptium
    ▸ Project Management Committee (PMC)
    ▸ Working Group + Steering Committee

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. Build & Binaries

    View Slide

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

    View Slide

  24. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    Jenkins - CI

    View Slide

  25. Supported VMs

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. Test

    View Slide

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

    View Slide

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

    View Slide

  33. 87,000,000+
    Tests run per release

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. Technical Roadmap

    View Slide

  39. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams
    API V3
    https://api.adoptopenjdk.net/swagger-ui
    https://api.adoptopenjdk.net/graphql

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide