39
- AdoptOpenJDK Ensuring Free Java™ for the Community Presented By: Shelley Lambert (AdoptOpenJDK Committer, Eclipse OpenJ9 Committer, IBM Runtimes Test Leader)

- AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

- AdoptOpenJDK – Ensuring Free Java™ for the Community

PresentedBy:

ShelleyLambert(AdoptOpenJDKCommitter,EclipseOpenJ9Committer,IBMRuntimesTestLeader)

Page 2: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Agenda

•  TheBasics•  BriefHistory•  Rationale•  RoadmapAnd•  BuildFarmTech

Page 3: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

The Basics

Page 4: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

What is Java?

•  JavaDevelopmentKit(JDK)consistsof•  JavaRuntimeEnvironment(JRE)•  ToolstocompileanddebugJavacodefordevelopingJavaapplications.

•  JREconsistsof:•  Libraries•  JavaVirtualMachine(JVM)•  JavaPlugin(Applets!)andJavaWebStart

Page 5: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

What is OpenJDK?

•  Thereferenceimplementation(RI)fromJava7SEonwards

•  Freeandopensource•  GNUGeneralPublicLicense,version2,withtheClasspathException

•  SourcetobuildyourownJava;boththelanguageandplatform

•  UserslikeTwitter,AlibabaandAmazonhaveaugmentedtheJDKwithcustombuildsfortheirplatforms

•  Manycommercialandcommunitybuildsavailable

Page 6: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

OpenJDK is widely available via multiple distros and builders

•  Oracle’scommercialJDKbuildsfromOpenJDKandisevolvingthetwotobeessentiallyidentical.

•  IBM’sJDKisbasedonEclipseOpenJ9,forJava8andonwards,asingleVMwhichrunsacrossmanyversions.OpenJ9canbebuiltasacomponentofOpenJDK

•  Zulu®isAzul’sbuildofOpenJDK•  IcedTeaisoneoftheearliestOpenJDKdistrosandblendsOpenJDKandGNUClasspath.

•  IcedTeaiscurrentlybundleddefaultwithGNU/LinuxdistributionssuchasFedora,GentooandDebian.

Page 7: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

goo.gl/PakfKi

Page 8: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

What is AdoptOpenJDK?

•  AdoptOpenJDKisabuildfarmforOpenJDKbinaries

•  Freshbuildsacrossmanyplatforms,nightly.

•  Fullyopen-source;fulltransparencyontheentirepipeline,fromhostpreptotestinganddistribution.

•  Consistentqualityacrossallplatforms.

Page 9: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

History

Page 10: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

https://www.slideshare.net/neomatrix369/adopt-openjdk-the-past-the-present-the-future

+

Page 11: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Current OpenJDK Difficulties

Thorough testing is challenging...

Visibility of contributions Discussions on incorrect mailing lists Lots of work for reviewers

Page 12: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Evolution

AdoptOpenJDK build farm born from the desire to standardize build/test of JDK binaries.

Page 13: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Enter Stage Left – IBM and Eclipse & Distribution

IBMopen-sourcestheirJavastack:●  OpenLiberty●  EclipseOpenJ9(IBM’sJVMbuilt

uponEclipseOMR)

●  AdoptOpenJDK,anaturalplaceforEclipseOpenJ9communitytobuildanddistributeOpenJDKwithOpenJ9binaries

Page 14: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

IBM donates testing infrastructure

IBMdonatesitsinternalJavatestinginfrastructuretoAdoptOpenJDK

●  Inthespaceofweeks,AdoptOpenJDKisabletopushouthighqualitybinaries

Page 15: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Extreme Growth

AdoptOpenJDKgrowsto60+reposand600+volunteersin6-9months.

•  ATechnicalSteeringCommitteeisbeingformedtoensurequalityandsecurity

•  Lotsofcommunityparticipation

Page 16: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

The Flow

●  BuildTestDeploy

●  Nightly&ReleasePipelines●  NightlyandReleasebinariesdistributed

ontheAdoptOpenJDKwebsite(+viaapi.adoptopenjdk.net)

Page 17: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

AdoptOpenJDK Example (Build, Test, Deploy)

OpenJDKmercurialrepoismirroredintoGitHub

RepoisclonedintoJenkins

Buildjobiskickedoff

Ifbuildpassesthenthetestsuitesarekickedoff

Iftestpassesthenbinaryisshipped

Page 18: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

AdoptOpenJDK Example (Build, Test, Deploy)

OpenJDKmercurialrepoismirroredintoGitHub

RepoisclonedintoJenkins

Buildjobiskickedoff

Ifbuildpassesthenthetestsuitesarekickedoff

Iftestpassesthenbinaryisshipped

Page 19: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

AdoptOpenJDK Example (Build, Test, Deploy)

OpenJDKmercurialrepoismirroredintoGitHub

RepoisclonedintoJenkins

Buildjobiskickedoff

Ifbuildpassesthenthetestsuitesarekickedoff

Iftestpassesthenbinaryisshipped

Page 20: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

AdoptOpenJDK Example (Build, Test, Deploy)

OpenJDKmercurialrepoismirroredintoGitHub

RepoisclonedintoJenkins

Buildjobiskickedoff

Ifbuildpassesthenthetestsuitesarekickedoff

Iftestpassesthenbinaryisshipped

Page 21: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

AdoptOpenJDK Example (Build, Test, Deploy)

OpenJDKmercurialrepoismirroredintoGitHub

RepoisclonedintoJenkins

Buildjobiskickedoff

Ifbuildpassesthenthetestsuitesarekickedoff

Iftestpassesthenbinaryisshipped

Page 22: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

GitHub Releases

•  Freetouse!•  ReleasescanbemadeandbinariesuploadedusingtheAPI.

•  Canhaveunlimitedreleasesbutthemaxfilesizeis2GB.

Page 23: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Standardized, open, transparent at all layers

LabMachines(Ansible/Docker)

Build(Bash/Jenkinspipelines)

Test(testkitgen/Jenkinspipelines)

Deploy(Jenkinspipelines/Githubreleases)

Page 24: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Infrastructurehttps://github.com/AdoptOpenJDK/openjdk-infrastructure

•  PlaybooksinGit•  Exampleuse:•  AdoptOpenJDK_Unix_Playbook

dir:

main.yml /roles

/Common/Debug/autoconf/freemarker/Ant-Contrib/ccache…

Page 25: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

The Farm & The Sponsors

TheAdoptBuildFarmcontainsmanymachines,donatedandfundedbythesegenerousgroups:

Page 26: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Buildhttps://github.com/AdoptOpenJDK/openjdk-build

./sbin/common/ config_init.sh

./configureBuild.sh

(Coordinates configuration)

Page 27: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

functional openjdk perfjckexternalsystem

testkitgen

testNG,cmdlinetester

STF junit&others

javatest Assortedbenchmarks

jtreg

“ConsolidateandCurate”

Testhttps://github.com/AdoptOpenJDK/openjdk-tests

Page 28: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Binaryiscompressedintotarball

Sha256sumisgeneratedfromtarball

GitHubreleasetagiscreated

BinaryandSha256sumisuploadedtoGitHub

GitHubAPIcanbeusedtolookupdownloadlinks

Deployhttps://github.com/AdoptOpenJDK/openjdk-build

https://github.com/AdoptOpenJDK/openjdk-website-backendhttps://github.com/AdoptOpenJDK/openjdk-api

Page 29: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD
Page 30: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Source-controlledbuildpipelines.

-  Githubrepository:https://github.com/AdoptOpenJDK/openjdk-build

Page 31: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD
Page 32: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD
Page 33: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD
Page 34: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

This all sounds great! How do I get it?

•  TheAdoptOpenJDKprojectcanbefoundhttps://adoptopenjdk.net/

• Whatisthecommunityaskingfor?• Websitedownload•  “APIgateway”allowingprogrammaticdownload(https://api.adoptopenjdk.net/README)

•  macOSbrewpackageinstall•  Dockerimages(includingdistro-less)

Page 35: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Roadmap (near-term plans)

LabMachines(sanitizeplaybooks,automatedansibleruns,on-demandhosting)

Build(exploitDockerforbuilds,fasterbuildtimes,simplify)

Test(test&triagesmarter,analytics,fuzztesting,openperf)

Deploy(installers,morewaysofgettingbinariestothecommunity)

Page 36: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

How to participate?

Page 37: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Where can you help? •  Infrastructure(github.com/AdoptOpenJDK/openjdk-infrastructure)• Build(github.com/AdoptOpenJDK/openjdk-build)•  Test(github.com/AdoptOpenJDK/openjdk-tests)• Deploy(openjdk-website/api/docker/installers)

• Overallguidetotherepositories:github.com/AdoptOpenJDK/TSC

Page 38: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

Summary

Todaywelearned:•  TheBasics•  BriefHistory•  Rationale•  RoadmapAnd•  BuildFarmTech

Page 39: - AdoptOpenJDK · • Why Kotlin is My Favorite Example of Functional Programming – Sem. 1-3 10:00 • Shaking Sticks and Testing OpenJDK Implementations – Sem. 5 14:00 AdoptOpenJD

More at EclipseCon Europe Tuesday•  MigrateEarly,MigrateOften!JDKreleasecadencestrategies–Theater17:00

Wednesday•  PerformanceTestingforEveryone–Theatre11:55•  AdoptOpenJ9forSpringBootPerformance– Silchersaal14:00•  AreYouReadyforCloudNativeJava–Sem.516:30

Thursday•  WhyKotlinisMyFavoriteExampleofFunctionalProgramming–Sem.1-310:00•  ShakingSticksandTestingOpenJDKImplementations–Sem.514:00

AdoptOpenJDK

adoptopenjdk.netAdoptOpenJDK/TSC @adoptopenjdk