- AdoptOpenJDK – Ensuring Free Java™ for the Community
PresentedBy:
ShelleyLambert(AdoptOpenJDKCommitter,EclipseOpenJ9Committer,IBMRuntimesTestLeader)
Agenda
• TheBasics• BriefHistory• Rationale• RoadmapAnd• BuildFarmTech
The Basics
What is Java?
• JavaDevelopmentKit(JDK)consistsof• JavaRuntimeEnvironment(JRE)• ToolstocompileanddebugJavacodefordevelopingJavaapplications.
• JREconsistsof:• Libraries• JavaVirtualMachine(JVM)• JavaPlugin(Applets!)andJavaWebStart
What is OpenJDK?
• Thereferenceimplementation(RI)fromJava7SEonwards
• Freeandopensource• GNUGeneralPublicLicense,version2,withtheClasspathException
• SourcetobuildyourownJava;boththelanguageandplatform
• UserslikeTwitter,AlibabaandAmazonhaveaugmentedtheJDKwithcustombuildsfortheirplatforms
• Manycommercialandcommunitybuildsavailable
OpenJDK is widely available via multiple distros and builders
• Oracle’scommercialJDKbuildsfromOpenJDKandisevolvingthetwotobeessentiallyidentical.
• IBM’sJDKisbasedonEclipseOpenJ9,forJava8andonwards,asingleVMwhichrunsacrossmanyversions.OpenJ9canbebuiltasacomponentofOpenJDK
• Zulu®isAzul’sbuildofOpenJDK• IcedTeaisoneoftheearliestOpenJDKdistrosandblendsOpenJDKandGNUClasspath.
• IcedTeaiscurrentlybundleddefaultwithGNU/LinuxdistributionssuchasFedora,GentooandDebian.
goo.gl/PakfKi
What is AdoptOpenJDK?
• AdoptOpenJDKisabuildfarmforOpenJDKbinaries
• Freshbuildsacrossmanyplatforms,nightly.
• Fullyopen-source;fulltransparencyontheentirepipeline,fromhostpreptotestinganddistribution.
• Consistentqualityacrossallplatforms.
History
https://www.slideshare.net/neomatrix369/adopt-openjdk-the-past-the-present-the-future
+
Current OpenJDK Difficulties
Thorough testing is challenging...
Visibility of contributions Discussions on incorrect mailing lists Lots of work for reviewers
Evolution
AdoptOpenJDK build farm born from the desire to standardize build/test of JDK binaries.
Enter Stage Left – IBM and Eclipse & Distribution
IBMopen-sourcestheirJavastack:● OpenLiberty● EclipseOpenJ9(IBM’sJVMbuilt
uponEclipseOMR)
● AdoptOpenJDK,anaturalplaceforEclipseOpenJ9communitytobuildanddistributeOpenJDKwithOpenJ9binaries
IBM donates testing infrastructure
IBMdonatesitsinternalJavatestinginfrastructuretoAdoptOpenJDK
● Inthespaceofweeks,AdoptOpenJDKisabletopushouthighqualitybinaries
Extreme Growth
AdoptOpenJDKgrowsto60+reposand600+volunteersin6-9months.
• ATechnicalSteeringCommitteeisbeingformedtoensurequalityandsecurity
• Lotsofcommunityparticipation
The Flow
● BuildTestDeploy
● Nightly&ReleasePipelines● NightlyandReleasebinariesdistributed
ontheAdoptOpenJDKwebsite(+viaapi.adoptopenjdk.net)
AdoptOpenJDK Example (Build, Test, Deploy)
OpenJDKmercurialrepoismirroredintoGitHub
RepoisclonedintoJenkins
Buildjobiskickedoff
Ifbuildpassesthenthetestsuitesarekickedoff
Iftestpassesthenbinaryisshipped
AdoptOpenJDK Example (Build, Test, Deploy)
OpenJDKmercurialrepoismirroredintoGitHub
RepoisclonedintoJenkins
Buildjobiskickedoff
Ifbuildpassesthenthetestsuitesarekickedoff
Iftestpassesthenbinaryisshipped
AdoptOpenJDK Example (Build, Test, Deploy)
OpenJDKmercurialrepoismirroredintoGitHub
RepoisclonedintoJenkins
Buildjobiskickedoff
Ifbuildpassesthenthetestsuitesarekickedoff
Iftestpassesthenbinaryisshipped
AdoptOpenJDK Example (Build, Test, Deploy)
OpenJDKmercurialrepoismirroredintoGitHub
RepoisclonedintoJenkins
Buildjobiskickedoff
Ifbuildpassesthenthetestsuitesarekickedoff
Iftestpassesthenbinaryisshipped
AdoptOpenJDK Example (Build, Test, Deploy)
OpenJDKmercurialrepoismirroredintoGitHub
RepoisclonedintoJenkins
Buildjobiskickedoff
Ifbuildpassesthenthetestsuitesarekickedoff
Iftestpassesthenbinaryisshipped
GitHub Releases
• Freetouse!• ReleasescanbemadeandbinariesuploadedusingtheAPI.
• Canhaveunlimitedreleasesbutthemaxfilesizeis2GB.
Standardized, open, transparent at all layers
LabMachines(Ansible/Docker)
Build(Bash/Jenkinspipelines)
Test(testkitgen/Jenkinspipelines)
Deploy(Jenkinspipelines/Githubreleases)
Infrastructurehttps://github.com/AdoptOpenJDK/openjdk-infrastructure
• PlaybooksinGit• Exampleuse:• AdoptOpenJDK_Unix_Playbook
dir:
main.yml /roles
/Common/Debug/autoconf/freemarker/Ant-Contrib/ccache…
The Farm & The Sponsors
TheAdoptBuildFarmcontainsmanymachines,donatedandfundedbythesegenerousgroups:
Buildhttps://github.com/AdoptOpenJDK/openjdk-build
./sbin/common/ config_init.sh
./configureBuild.sh
(Coordinates configuration)
functional openjdk perfjckexternalsystem
testkitgen
testNG,cmdlinetester
STF junit&others
javatest Assortedbenchmarks
jtreg
“ConsolidateandCurate”
Testhttps://github.com/AdoptOpenJDK/openjdk-tests
Binaryiscompressedintotarball
Sha256sumisgeneratedfromtarball
GitHubreleasetagiscreated
BinaryandSha256sumisuploadedtoGitHub
GitHubAPIcanbeusedtolookupdownloadlinks
Deployhttps://github.com/AdoptOpenJDK/openjdk-build
https://github.com/AdoptOpenJDK/openjdk-website-backendhttps://github.com/AdoptOpenJDK/openjdk-api
Source-controlledbuildpipelines.
- Githubrepository:https://github.com/AdoptOpenJDK/openjdk-build
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)
Roadmap (near-term plans)
LabMachines(sanitizeplaybooks,automatedansibleruns,on-demandhosting)
Build(exploitDockerforbuilds,fasterbuildtimes,simplify)
Test(test&triagesmarter,analytics,fuzztesting,openperf)
Deploy(installers,morewaysofgettingbinariestothecommunity)
How to participate?
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
Summary
Todaywelearned:• TheBasics• BriefHistory• Rationale• RoadmapAnd• BuildFarmTech
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
Top Related