Date post: | 14-Apr-2017 |
Category: |
Software |
Upload: | david-delabassee |
View: | 1,276 times |
Download: | 1 times |
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEENextNovember92016
DavidDelabassee@delabasseeJavaEEandCloudApplicaGonFoundaGon-Oracle
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 2
The reportsofmydeath
aregreatlyexaggeratedJavaEE
“
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecGon.ItisintendedforinformaGonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncGonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andGmingofanyfeaturesorfuncGonalitydescribedforOracle’sproductsremainsatthesolediscreGonofOracle.
3
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 4
JavaEE7HTML5-Ready • JSON • WebSockets • JAX-RS
Industry Standard • Lowers risk • Vendor choice • Implementation choice • Operating system choice • Portable applications
Scalable • Multi-threaded • Asynchronous APIs
(Servlet, EJB, JAX-RS) • Concurrency utilities
for Java EE
Productivity • Annotated POJOs • Less boilerplate code • Integrated • Excellent tool ecosystem
Meets Enterprise Demands • Java Message Service • Batch processing • Distributed transactions
Community Driven • Java Community Process • Adopt-a-JSR • Open Source RI
(GlassFish)
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE-AvailableOnPremiseandintheCloud
09/11/16 5
Cloud
OnPremise
WebSphere WebLogicRedHatJBoss
5
ChoiceofImplementa9ons
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEEAPIs-BackboneofLeadingOpenSourceProjects
6
JavaEEContainers
Microservices WebContainers
WebFrameworks
PaaSREST
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE–What’sNext?
7
NewAppDevStyleforCloudandMicroservices
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 8
DevelopersFacingNewChallenges
• AcceleraGontowardstheCloud• Shibfromphysicalinfrastructuretovirtual• Microservicesvs.monolithicapplicaGons• RunGmepackagedwithapplicaGons...
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposedEnhancementsforJavaEE
• NewAppDevstyleforCloudandMicroservices• Comprehensive
– ProgrammingModel,Packaging,Portability,Security,Monitoring…
• Buildonproventechnologies• Standards-basedandtransparent
– JCPprocesses– OpenSourceRIs
9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEENextTechnicalAreasofFocus
10
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
DesignedforAgilityandScalabilitywithSecurity• Programmingmodel• State• Security• Eventualconsistency• Keyvalue/documentstore
11
Reliability,Monitoring
ContainerManagement
Scheduling&ElasGcScaling
KeyValue
Database
Logging
Config
State
Security
NoGficaGon
Userprofileservice
Orderservice
Catalogservice
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
PackagingforSimplicity• ConfiguraGon• Resiliency• Packaging–Dockermodel
• MulGtenancy
• Serverless
12
App
Server
Orderservice
App
Server
Catalogservice
App
Server
Userprofileservice
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
RecentJavaEE7compa9bilityupdates:Congratula9ons!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
Mul9tenancy
§ ExternalizeconfiguraGon
§ UnifiedAPIforaccessingconfiguraGon
Configura9on§ PersistenceandqueryinterfaceforkeyvalueanddocumentDB
KeyValue/DocStore
13
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 14
EngageJavaEECommunity• FeedbackthroughSurvey• LaunchJavaEENextJSRs
2016JavaEE8• Specs,RI,TCKcomplete• IniGalmicroservicessupport• DefineJavaEE9• EarlyaccessimplementaGonofJavaEE9
JavaEE9• Specs,RI,TCKcomplete• ModularJavaEErunGme• Enhancedmicroservicessupport
JavaEERoadmap
2017
2018
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE8
15
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JAX-RS2.1
• Server-sentevents• Non-blockingI/Oinproviders(filters,interceptors…)• HypermediaAPIenhancements• ReacGveprogrammingparadigmtoimproveJAX-RSasynchronousclients• IntegraGonwithotherJSRsandframeworks
16
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JAX-RS2.1
17
//JerseyAPI!CompletionStage<List<String>>cs=client.target("forecast/{destination}").resolveTemplate("destination","mars").request().header("Rx-User","Java8").rx()//CompletionStageRxInvoker.get(newGenericType<List<String>>(){});
cs.thenAccept(l->System.out.println(l));
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforReacGveProgrammingModel
18
§ ImproveJAX-RStosupportreacGveprogrammingforclientside(e.g.,async"orchestraGon"asinRXJavaorinJersey)
§ MigraGonpathtofullerreacGveprogrammingmodelinJavaEE9
§ NeedtoincorporateevolvingreacGve/async-styleprogrammingmodel
§ MorecommoninCloudbecauseappsaredistributedandthereisincreasedlatency§ Manyremotecalls§ Synchronousrequest-handling
blocksthreadswithremotecalls
ProblemStatements Proposal
JavaEE9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Servlet4.0
• SupportforHTTP/2– Request/responsemulGplexing– Serverpush– UpgradefromHTTP1.1
• CompaGbilitywithlatestHTTP1.1RFCs• Smallercommunity-requestedimprovements(JIRAissues)
19
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Servlet4.0
20
PushBuilderbuilder=baseRequest.getPushBuilder();
builder.addHeader("X-Pusher",…);
builder.path(aResource).etag(associated._etag).lastModified(associated._lastModified).push();
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CDI2.0
• DefinebehaviorofCDIoutsideofaJavaEEcontainer• APItobootstrapaCDIcontainerinJavaSE• Specsplitinto3parts:
– CDICore– CDIforJavaSE– CDIforJavaEE
• Observersordering• Asynchronousevents
21
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CDI2.0
22
@InjectEvent<PaymentEvent>debitEvent;//producerdebitEvent.fire(somePayload);
//consumerpublicvoidanObesrver(@ObservesPayloadp){…}
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CDI2.0
23
//consumerApublicvoidanObesrver(@ObservesPayloadp){…}//consumerBpublicvoidanotherObesrver(@ObservesPayloadp){…}
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CDI2.0
24
//consumerApublicvoidanObesrver(@Observes@Priority(10)Payloadp){…}//consumerBpublicvoidanotherObesrver(@Observes@Priority(20)Payloadp){…}
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
CDI2.0
25
@InjectEvent<PaymentEvent>debitEvent;//asyncproducerdebitEvent.fireAsync(somePayload);
//asyncconsumerpublicvoidanObesrver(@ObservsAsyncPayloadp){…}
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
BeanValidaGon2.0
• ConstraintsappliedtocollecGonelements• SupportfornewDate/TimeAPI• IntegraGonwithOpGonalwrappers• RepeatableannotaGons• Introducenewconstraints
– E.g.@NotEmpty,@NotBlank
• AddiGonalfeaturesrequestedfromcommunity
26
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3
• BeqerCDIintegraGon• WebSocketintegraGon• AjaxmethodinvocaGon• Class-levelBeanValidaGon• JavaDate/Timesupport
27
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSON-B1.0
• JAXB-likeAPItomarshal/unmarshalJavaobjectsto/fromJSONdocuments• DefaultmappingbetweenclassesandJSON• CustomizaGonAPIs
– AnnotaGon(@JsonbProperty,@JsonbNillable)– RunGmeconfiguraGonbuilder
• Allowstoswapproviders• NaturalfollowontoJSON-P–closestheJSONsupportgap
28
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSON-B1.0
29
Phonephone1=newPhone();phone1.setBrand("Apple");phone1.setModel("iPhone7");phone1.setStock(1);...List<Phone>inventory=newArrayList<>();inventory.add(phone1);inventory.add(phone2);Jsonbjsonb=JsonBuilder.create();jsonb.toJson(inventory);
JavaEE8
[{"brand":"Apple","model":"iPhone7","stock":1},{"brand":"Samsung","model":"GalaxyNote7","stock":666}]
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSON-P1.1
• UpdateJSON-Pspectostaycurrentwithemergingstandards• SupportforIETFstandardsonJSONPointerandJSONPatch• AddediGngoperaGonstoJsonObjectandJsonArray• HelperclassesandmethodstobeqeruGlizeJavaSE8StreamoperaGons
30
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforSecurity
31
§ OpenIDsupportforauthenGcaGon§ ImprovedOAuthsupport
§ RegistraGonandDiscoveryofResourcestoRequestScopes
§ AuthorizaGonModel§ StandardwayofconnecGnganapplicaGontoakey
service§ EncrypGonserviceforstoreddata
§ OAuth&OpenIDhardtouse§ NostandardwayofconnecGngan
applicaGontoakeyservice§ NeedtokeepsensiGvestoreddata
secret
ProblemStatements Proposal
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforConfiguraGon
32
§ SeparaterunGmeconfiguraGonfromrunGmeplarorm§ K/V
§ DefineconfiguraGonpersistencemechanisms,formatsandbindings§ E.g.JSON,XML§ SupportofmulGpleconfiguraGonsources§ Layeringandoverrides
§ NostandardwayofworkingwithconfiguraGoninapplicaGons§ ManyconfiguraGonschemes
don’tsupportlayering,overrides,conceptofenvironments,mulGplelevelsofvisibility,etc
§ Manyjustuseenvironmentvariables,whichisnotscalable
§ MakeitpossibletodeployapplicaGonconfiguraGonwithoutredeployingapp
§ ExternalizedconfiguraGonisthestandardforcloud
ProblemStatements Proposal
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE8ProposalforConfiguraGon
33
Configconfig=ConfigProvider.getConfig();
Stringfoo=config.getProperty("foo");
StringfooBar=config.getProperty("foo.bar");
//returnnullStringnotExists=config.getProperty("foo.bar.buzz");
//return"default"StringnotExistsDefault=config.getProperty("for.bar.buzz","default");
LongfooBarBaz=config.getProperty("foo.bar.baz",Long.class);
foo=JavaOne!foo.bar=9 !foo.bar.baz=2016 !
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforConfiguraGon
34
java–jarmy.jar–Dconfig.source=/conf/dev.propertiesjava–jarmy.jar–Dconfig.source=/conf/main.json,http://shared/global.xml
Configconfig=ConfigProvider.builder().addSource(newEnvSource(),300).addSource(newFileSource("/cfg/config.properties"),200).addSource(newWebSource("http://shared/config.json"),100).build();<config-sources>
<source>http://shared/config.xml</source></config-sources>
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforResiliency-HealthChecking
35
§ Definestandardforhowindividualinstancesshouldreporthealth
§ Defineconfigurablecontextpath§ e.g./<service>/management/health
§ DefinesemanGcsforreporGnghealth§ JSONresponsewhen/healthiscalled§ Returnstandardizedstatuses,bubbleuperrors,from
dependencies,etc§ Circuitbreakercouldpoll/healthratherthanwaiGngfor
HTTPrequeststofailfirst§ Requesttracing?
§ Nostandardforhealthisbeingreported
§ ApplicaGons,resources,servers,services,micro-services,etc.willreporthealthdifferently
§ TradiGonalhealthcheckjustreturnsopaqueup/downmessages
ProblemStatements Proposal
JavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 36
@HealthProvider public class MyHealthContributor implements HealthContributor { public Health contributeHealthSummary(HealthContext context) { Health health = new Health(); ... return health; } }
JavaEE8ProposalforResiliency-HealthChecking
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforResiliency-CircuitBreaker
37
§ 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
JavaEE8&9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ProposalforResiliency-CircuitBreaker
38
@Cache(timeToLive=15,timeToLiveUnit=TimeUnit.SECONDS)@Bulkhead(numConcurrentRequests=10)@Retry(onException=IOException.class,maxRetries=4)@CircuitBreaker(timeout=5,timeoutUnit=TimeUnit.SECONDS)public<K,V>VaBusinessMethod(Kk)throwsIOException{//invokeremotebusinessservice...}@Fallback(applyTo={"aBusinessMethod"})public<K,V>VsomeFallback(){//performfallbacklogic...}
JavaEE8&9
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEE7
39
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
40
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.|
RecentJavaEE7compa9bilityupdates:Congratula9ons!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
Mul9tenancy
§ ExternalizeconfiguraGon
§ UnifiedAPIforaccessingconfiguraGon
Configura9on§ PersistenceandqueryinterfaceforkeyvalueanddocumentDB
KeyValue/DocStore
41
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JavaEENext-Summary• NewAppDevStyleforCloudandMicroservices
• Planninginprocess• Contribute• OpenSourceRIs
42
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
RaGonaleforProposedChanges
44
NewFunc9onality• CloudappsmakemanyremoteREST
calls.Needaclient-sidecircuitbreakeraddedtoJAX-RS
• Needasecretvaultbecausethere’snowaytodothistodayusingstandards
• NeedOAuthandOpenIDsupportbecausethosetechnologieshaverapidlyemergedasstandards
• Needexternalizedconfigura9onstoretomakeapplicaGonsretargetableacrossenvironments
• Needbasicmul9-tenancysupporttoaccommodateneedsofmorecomplexappsandofferhigherdensity
• NeedstandardwayofhealthcheckingJava-basedapps
DroppedFunc9onality• JMSisnolongerveryrelevantincloud.ProposedtostayatJMS2.0standard(vs.upgradingtoJMS2.1).
• Cloudappsobenshipheadless,makingMVClargelyirrelevant
• CurrentManagementJSRnotwidelyused