Java 9: Tips on Migraon and Upgradability - QConSF...• If you use any of the components that are...
Transcript of Java 9: Tips on Migraon and Upgradability - QConSF...• If you use any of the components that are...
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Java9:TipsonMigraDonandUpgradability
BernardTraversatVicePresidentofDevelopmentJavaSEPlaJormOracleNovember,2017
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 1
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecDon.ItisintendedforinformaDonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncDonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andDmingofanyfeaturesorfuncDonalitydescribedforOracle’sproductsremainsatthesolediscreDonofOracle.
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 2
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Agenda
Upgradability
JDK9migraDonDps
WhyJava9NewModulereallymaZersforupgradability?
WhyalltheabovemaZerevenmoreforthecloudandmicroservices!
1
2
3
4
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 3
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 4
Upgradability
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 5
So`wareUpgradability
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
ManagingandSecuringtheCloudatScale
• Massivecloudbuildupoverthepastfewyearsmeanscompoundingrisksifapatchorupdateisnotapplied– Equifaxfailedtopatchaknownsecurityvulnerability
• Through2020,99%ofvulnerabili8esexploitedwillconDnuetobetheonesknownbysecurityandITprofessionalsforatleastoneyear(Gartner)• The2016Microso`SecurityIntelligenceReportstatesthat5,000to6,000newvulnerabiliDessurfaceeachyear.Thatworksouttoanaverageof15perday.• ExponenDalcomplexitytomanagendifferentversionsofthesameso`ware(nm)• TheCloudisdemandingconDnuousupgradability!
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 6
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
WhyUpgrading?
• Securityfixes• Regressionsfixes• Newreleaseoranewfeature• Moreperformance• Morerobustness• Becausethelayerunderneathoraboveyoujustupgraded(OS’s,Hardware)• ReducecostofoperaDonviauniformity
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 7
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
WhyNotUpgrading?
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 8
Itisgoingtocostmealotofmoneyifsomethinggoeswrong!
Somethingisgoingtogowrong!
Itiswork.Ineedtomodifymyapp!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| OracleConfidenDal–Internal/Restricted/HighlyRestricted 9
JavaScriptUpgradability
h4ps://trends.builtwith.com/javascript/compa=bility
30%
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| OracleConfidenDal–Internal/Restricted/HighlyRestricted 10
JavaScriptUpgradability
h4ps://trends.builtwith.com/javascript/compa=bility
64%
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
GolangUpgradability
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 11
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
PythonUpgradability
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 12
Surgeryisgood,butpainful!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
C#and.NetUpgradability
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 13
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaUpgradability
TherearethreekindsofcompaDbilityexplicitlymanagedintheJavaPlaJorm:• Binary:willexisDnglibrariesandapplicaDonssDlllink?• Source:willexisDngsourcebasessDllcompile?IfthesourcebasessDllcompile,willtheresulDngclassfilehaveequivalentsemanDcs?• Behavioral:atrunDme,willexisDnglibrariesandapplicaDonsbehaveinasufficientlysimilarway?
OracleConfidenDal–Internal/Restricted/HighlyRestricted 14
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
CategoriesofAPIsintheJavaPlaJorm
• MostoftheAPIsshippedintheJDK(java.*,javax.*)havespecificaDonsmanagedundertheJCP(JavaCommunityProcess)– MillionandmillionsofteststoensurecompaDbilityandupgradeability– VastecosystemofexisDngOSSlibrarieswecanusetotestcompaDbility
• ToupdatethespecificaDonofsuchanAPI,aJCPprocessisrequired– RigorousJSR&OpenJDKtechnicalreviewandassessmentprocess
OracleConfidenDal 15
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
AJavacompaDbilityreviewincludes,butisnotlimitedto…• OverallsuitabilityfortheplaJorm– Recommendeduseoflanguagefeaturesandotherlibraries– FollowingJDKAPIconvenDons– Compliancewithstandingtechnicalpolicies,includinggeneralevoluDonpolicy– “Haveyouconsideredyesterday,todayandtomorrowimpacts”
• Verifypropertechnicalreviewerispresent• HelpmakeconnecDonstootherareas• ForsomesecurityfixeswithbehavioralchangesweareworkinghardtofindafixthatmeetssecurityandcompaDbilityrequirements
OracleConfidenDal 16
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaPlaJormCompaDbilityCommitment
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 17
AbigreasonforJavabeingthe#1DevelopmentPlaJormoverthepast10years!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9MigraDon:FirstImpression
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 18
Youguysarebreakingeverything!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9MigraDon:Acknowledgment
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 19
No,Idon’twanttohearthatIneedtomodifymyapp!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9MigraDon:Reality
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 20
Imigratedmyapp,itwasnotthatbad!
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9Thegoodnews• Theclasspathhasnotchanged• Classloadinghasnotchanged• Youarenotforcedtomigrateyourcodetomodules• sun.misc.Unsafeworksasbefore• MostexisDngcodeshouldworkasbefore• TheIDEs,Maven,…allhavesupportforJDK9already
21
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Thenotsogoodnews• Youwillhavetoupgradethelibrariesandtoolsthatyouuse• IfyouuseanyofthecomponentsthataresharedbetweenJavaSEandJavaEEthenyoumayneedtoadjustyourbuildordeployment• AsmallnumberofsupportedAPIshavebeenremoved• Anumberofnon-APIfeaturesandtoolshavebeenremoved• Youmayseesomewarningsfromthelibrariesthatyouuse
22
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 23
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 24
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 25
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 26
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 27
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 28
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 29
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 30
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 31
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 32
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 33
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 34
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 35
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDKFasterCadence:6-monthReleaseCycle• Javahasdeveloped9Majorreleasesoverthepast21years(every~2.5
Years)• TheCloudischangingthepaceofinnovaDon.Developerswantquicker
accesstonewfeatures.• UnderourcurrentmodelJDK10wouldGAaround2020– ThisisforeverinCloudYears!
• FromfeatureboundtoDme-bound–Every6months!• Uptakeofnewreleasesislessofanissue,becauselesscontentandcloudoperatorswilldothisatscaleforyouJ
OracleConfidenDal–Internal 36
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
SimplifytheJDKDistribuDon:OpenJDKvsOracleJDK
• LargeecosystemwithmanydifferentconsDtuentprofiles– Developers--focusedonthebleedingedge,wanttoseefaster
innovaDon– Installedbase--maintaininglegacysystems,wantstabilityandsecurity
• NeedtosimplifyourdistribuDon– Opensourcingcommercialfeatures(onecodebase)– TwodistribuDontrains:• OpenJDK–FocusedondeliveringinnovaDonsatafastercadence• OracleJDK–StabilityandcriDcalbugfixes
OracleConfidenDal–Internal 37
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 38
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
WhyIsItHardtoUptakeaNewJavaRelease• 20%-RemoveddeprecatedAPIs– ObsoleteAPIsthathavebeentaggedfordeprecaDonforsomeDme– Trade-offofcompaDbilityvsinnovaDon
• 30%ChangedinapublicAPIbehavior– EithertheimplementaDonofthespecwaswrong,orthespecwaswrongandweneededtochangetheimplementaDon– Asecurityfixrequiredtochangeanunspecifiedbehavior
• 50%Useofinternal/non-publicAPIs– WetoldyouthattheseAPIsmaychangeandtheyindeedchanged
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 39
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenDal–OracleInternal/Restricted/HighlyRestricted 40
EdsgerDijkstrawrotein1988,
“Wehavetobeabletothinkintermsofconceptualhierarchiesthataremuchdeeperthanasinglemindeverneededtofacebefore.”
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
CanWeLearnfromtheHardwareGuys
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 41
10-15YearsAgoL DataCenterArchitectureTodayJ
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
AfewGoldenRules
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 42
Uniformity Modularity
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
So`wareModularity&UniformityFortheCloud
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 43
• Dockerprovidesanuniformwrapperaroundaso`warepackage“Build,ShipandRunAnyApp,Anywhere”• Thecontainerisalwaysthesame,regardlessofthecontentsandthusfitsonalltrucks,cranes,ships,…
• But,DockerandKubernetesdonotaddressappmodularityinsidethecontainer.ThisiswhytheJava9newmodulesystemissoimportant!
• KubernetesprovidesanelasDcdeploymentandmanagement
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9Module
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 44
CodeRe-UsabilityandInforma8onHiding
ClasstoreusebehaviorsInterfacetore-useabstracDons
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9Module
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 45
CodeRe-Usability
JDK217Packages
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK9Module
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 46
Java9Module
ModuleisanewfundamentalabstracDondesignedexplicitlyforencapsulaDonandreuse
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Java9Module–AbeZerFoundaDonforCompaDbility
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 47
AccessControlEnforcedbytheJVM
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Java9Module–AbeZerFoundaDonforCompaDbility
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 48
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
JDK7Internaldependencies
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 49
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Java9Module–AbeZerFoundaDonforCompaDbility
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 50
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Summary• Thecloudispuxngincreasingdemandsonupgradeability(minute/weekvsmonth/year)– Toreducecomplexityandcost(uDlitycompuDng)– Toaddressvulnerabilityandsustainingupgradesaso`enasneeded
• UpgradeabilityissignificantissuestomanageCloudservicesatscale• JDK9ModuleandstrongencapsulaDonattheJVMlevelismovingthebarbeyondwhatanyotherdeveloperrunDmeisprovidingtoimproveupgradabilityandguaranteecompaDbility• Uptaking9maybesomeisnotthatscary!• Pleaseuptake9andassembleyourservicesasmoduleforthesakeofourindustryJ
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 51
Copyright©2017,Oracleand/oritsaffiliates.Allrightsreserved.|
Q&A
ConfidenDal–OracleInternal/Restricted/HighlyRestricted 52