Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Java EE Next BeJUG JavaOne A,erglow Oct. 2016 David Delabassee @delabassee Java EE and Cloud ApplicaGon FoundaGon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEENextBeJUGJavaOneA,erglowOct.2016
DavidDelabassee@delabasseeJavaEEandCloudApplicaGonFoundaGon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecGon.ItisintendedforinformaGonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncGonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andGmingofanyfeaturesorfuncGonalitydescribedforOracle’sproductsremainsatthesolediscreGonofOracle.
2
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenGal–OracleInternal/Restricted/HighlyRestricted 3
The reportsofmydeath
aregreatlyexaggeratedJavaEE
“
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE-AvailableOnPremiseandintheCloud
13/10/16 4
Cloud
OnPremise
WebSphere WebLogicRedHatJBoss
4
ChoiceofImplementa@ons
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEEAPIs-BackboneofLeadingOpenSourceProjects
5
JavaEEContainers
Microservices WebContainers
WebFrameworks
PaaSREST
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE–What’sNext?
6
NewAppDevStyleforCloudandMicroservices
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 7
DevelopersFacingNewChallenges
• Moredemandingbusinessrequirements
• MovetotheCloudforagility&flexibility
• Shiefromphysicalinfrastructuretovirtual
• Microservicesvs.monolithicapplicaGons
• RunGmepackagedwithapplicaGons
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposedEnhancementsforJavaEE
• NewAppDevstyleforCloudandMicroservices
• Comprehensive– ProgrammingModel,Packaging,Portability,Monitoring…
• Buildonproventechnologies• Standards-based– JCP– Onlyaproposal!
8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
TechnicalAreasofFocus
ConfidenGal–OracleInternal/Restricted/HighlyRestricted 9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DesignedforAgilityandScalabilitywithSecurity• Programmingmodel– ExtendforreacGveprogramming– Unifiedeventmodel– JAX-RS,HTTP/2,Lambda,JSON-B,…
• Eventualconsistency– AutomaGcallyeventoutchangestoobserveddatastructures
• Keyvalue/documentstore– PersistenceandqueryinterfaceforKeyValueandDocumentDB
• Security– Secretmanagement– OAuth/OpenIDsupport
10
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
LocaGonTransparencyandResiliency• ConfiguraGon– SeparateservicepackagingandconfiguraGon– APIforexternalconfiguraGon
• State– APIforexternalstate
• Resiliency– Circuitbreakers– StandardizedhealthreporGng
11
Reliability,Monitoring
ContainerManagement
Scheduling&ElasGcScaling
KeyValue
Database
Logging
Config
State
Security
NoGficaGon
Userprofileservice
Orderservice
Catalogservice
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
PackagingforSimplicity• Packaging–Dockermodel– PackageapplicaGons,runGmesintocontainers– Standaloneimmutableexecutablebinary– MulG-arGfactarchives,leveragingJava9
• Serverless– EphemeralinstanGaGon
• MulGtenancy– Increaseddensity– Tenant-awarerouGnganddeployment
12
App
Server
Orderservice
App
Server
Catalogservice
App
Server
Userprofileservice
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforCircuitBreaker–Resiliency
13
§ ExtensiontoJSR339-JAX-RSClient§ Severalpossibleapproaches:
§ ProgrammaGc–changeinJAX-RSClientAPI§ DeclaraGve–registering@ProviderclassestotheClient§ Other…
§ Configurable--potenGalparametersmightinclude:§ Samplingfrequency§ SamplingGmeperiod§ Performancethreshold(milliseconds)§ %errorthreshold§ …
§ Preventrequest-handlingthreadsfrombeingconsumedwhilemakingrequeststoremotesystems
§ Easeuponrequeststoremotesystemasit'shavingproblems
§ AllowsystemGmetorecover§ Preventcascadingfailures.Isolates
failuresinthesourcesystem§ UsecircuitbreakerwithoutwriGng
extensiveboiler-platecode
ProblemStatements Proposal
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforCircuitBreaker–Resiliency
14
@Cache(timeToLive=15,timeToLiveUnit=TimeUnit.SECONDS)@CircuitBreaker(timeout=5,timeoutUnit=TimeUnit.SECONDS)@Bulkhead(numConcurrentRequests=10,queueSize=5)@Retry(onException=IOException.class,maxRetries=1)public<K,V>VaBusinessMethod(Kk)throwsIOException{//invokeremotebusinessservice...}@Fallback(applyTo={"aBusinessMethod"})public<K,V>VsomeFallback(){//performfallbacklogic...}
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforHealthChecking–Resiliency
15
§ Definestandardforhowindividualinstancesshouldreporthealth
§ Defineconfigurablecontextpath–e.g./healthcheck§ DefinesemanGcsforreporGnghealth
§ JSONresponsewhen/healthcheckiscalled§ Returnstandardizedstatuses,bubbleuperrors,from
dependencies,etc§ Circuitbreakercouldpoll/healthcheckratherthanwaiGng
forHTTPrequeststofailfirst
§ Nostandardforhealthisbeingreported
§ ApplicaGons,resources,servers,services,micro-services,etc.willreporthealthdifferently
§ TradiGonalhealthcheckjustreturnsopaqueup/downmessages
ProblemStatements Proposal
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforSecurity
16
§ OpenIDsupportforauthenGcaGon§ ImprovedOAuthsupport
§ RegistraGonandDiscoveryofResourcestoRequestScopes
§ AuthorizaGonModel§ StandardwayofconnecGnganapplicaGontoakey
service§ EncrypGonserviceforstoreddata
§ Oauth&OpenIDhardtouseOAuth
§ NostandardwayofconnecGnganapplicaGontoakeyservice
§ NeedtokeepsensiGvestoreddatasecret
ProblemStatements Proposal
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforConfiguraGon
17
§ SeparaterunGmeconfiguraGonfromrunGmeplauorm§ K/V
§ DefineconfiguraGonpersistencemechanisms,formatsandbindings§ E.g.JSON,XML§ SupportofmulGpleconfiguraGonsources§ Layeringandoverrides
§ NostandardwayofworkingwithconfiguraGoninapplicaGons§ ManyconfiguraGonschemes
don’tsupportlayering,overrides,conceptofenvironments,mulGplelevelsofvisibility,etc
§ Manyjustuseenvironmentvariables,whichisnotscalable
§ MakeitpossibletodeployapplicaGonconfiguraGonwithoutredeployingapp
§ ExternalizedconfiguraGonisthestandardforcloud
ProblemStatements Proposal
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforConfiguraGon
18
Configconfig=CongifProvider.getConfig();
Stringfoo=config.getProperty("foo");
StringfooBar=config.getProperty("foo.bar");
//returnnullStringnotExists=config.getProperty("not.exists");
//return"default"StringnotExistsDefault=config.getProperty("not.exists","default");
LongfooBarBaz=config.getProperty("foo.bar.baz",Long.class);
foo=JavaOne!foo.bar=9 !foo.bar.baz=2016 !
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforConfiguraGon
19
//Singlefilesourcewithdefaultordinal(200)java–jarmy.jar–Dconfig.source=/conf/myconfig.properties//Twosources.Ordinalsare200and199java–jarmy.jar–Dconfig.source=http://shared/global.xml,/conf/my.jsonConfigconfig=ConfigProvider.builder().addSource(newEnvSource(),300).addSource(newFileSource("/cfg/config.properties"),200).addSource(newWebSource("http://shared/config.json"),100).addSource(newMyCustomSource()).build();
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
RecentJavaEE7compa@bilityupdates:Congratula@ons!TechnicalFocusAreasSummary
§ ExtendforreacGveprogramming
§ Unifiedeventmodel§ EventmessagingAPI§ JAX-RS,HTTP/2,Lambda,JSON-B,...
ProgrammingModel
§ APItostoreexternalizedstate
State
§ AutomaGcallyeventoutchangestoobserveddatastructures
EventualConsistency
§ Extensiontosupportclient-sidecircuitbreakers
§ Resilientcommands§ Standardizeonclient-sideformatforreporGnghealth
Resiliency
§ Newspec–interfaces,packagingformat,manifest
§ EphemeralinstanGaGon
Serverless§ Secretmanagement§ OAuth§ OpenID
Security§ PackageapplicaGons,runGmesintoservices
§ Standaloneimmutableexecutablebinary
§ MulG-arGfactarchives
Packaging§ Increaseddensity§ Tenant-awarerouGnganddeployment
Mul@tenancy
§ ExternalizeconfiguraGon
§ UnifiedAPIforaccessingconfiguraGon
Configura@on§ PersistenceandqueryinterfaceforkeyvalueanddocumentDB
KeyValue/DocStore
20
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 21
EngageJavaEECommunity• FeedbackthroughSurvey• LaunchJavaEENextJSRs
2016JavaEE8• Specs,RI,TCKcomplete• IniGalmicroservicessupport• DefineJavaEE9• EarlyaccessimplementaGonofJavaEE9
JavaEE9• Specs,RI,TCKcomplete• ModularJavaEErunGme• Enhancedmicroservicessupport
JavaEERoadmap
2017
2018
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE7
22
Connector JAXBJSPDebugging
ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket
BeanValidaGon JASPIC ServletJMS JTADeployment
Batch JACCDependencyInjecGon JAXR JSTL Management
CDI EJB JAX-RPC WebServicesJSF JPA
JSON-PCommonAnnotaGons EL JAX-RS WebServices
MetadataJavaMail
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE8
23
Connector JAXBJSPDebugging
ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket
BeanValidaGon JASPIC ServletJMS JTADeployment
Batch JACCDependencyInjecGon JAXR JSTL Management
CDI EJB JAX-RPC WebServicesJSF JPA
CommonAnnotaGons EL JAX-RS WebServices
MetadataJavaMail
CDI
JSON-B Security
BeanValidaGon
JSF
JAX-RS JSON-P
Servlet
HealthCheckConfiguraGon
JSP
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEENext-Summary• NewAppDevStyleforCloudandMicroservices
• Planninginprocess• Onlyaproposal!– hvp://glassfish.org/survey
• Contribute
24