Adoptopenjdk Making Java Free Again
Total Page:16
File Type:pdf, Size:1020Kb
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 ▸ Eclipse Adoptium ▸ 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. <branch name> 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 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 openjdk 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.