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!

C79a3191aa67cae35282fb129587696b?s=128

Hendrik Ebbers

August 12, 2020
Tweet

Transcript

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

  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
  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
  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
  5. Terminology

  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.
  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
  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
  9. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams OpenJDK Workflows 8 OpenJDK New feature

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

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

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

    Vendor A OpenJDK New feature Security fix
  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
  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
  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+
  16. None
  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
  18. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams AdoptOpenJDK => Eclipse Adoptium ▸ Project

    Management Committee (PMC) ▸ Working Group + Steering Committee
  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
  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
  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
  22. Build & Binaries

  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 <branch name> if no changes or Clone / update from OpenJDK mercurial forest Pull directly from other variant e.g. Eclipse OpenJ9 or
  24. @hendrikEbbers github.com/hendrikebbers @gdams_ github.com/gdams Jenkins - CI

  25. Supported VMs

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

  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
  30. Test

  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
  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
  33. 87,000,000+ Tests run per release

  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
  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
  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
  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)
  38. Technical Roadmap

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

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

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

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

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

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

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

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