+ All Categories
Home > Software > Java EE Next

Java EE Next

Date post: 14-Apr-2017
Category:
Upload: david-delabassee
View: 1,276 times
Download: 1 times
Share this document with a friend
44
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Java EE Next November 9 2016 David Delabassee @delabassee Java EE and Cloud ApplicaGon FoundaGon - Oracle
Transcript
Page 1: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEENextNovember92016

DavidDelabassee@delabasseeJavaEEandCloudApplicaGonFoundaGon-Oracle

Page 2: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 2

The reportsofmydeath

aregreatlyexaggeratedJavaEE

Page 3: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecGon.ItisintendedforinformaGonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncGonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andGmingofanyfeaturesorfuncGonalitydescribedforOracle’sproductsremainsatthesolediscreGonofOracle.

3

Page 4: Java EE Next

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)

Page 5: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEE-AvailableOnPremiseandintheCloud

09/11/16 5

Cloud

OnPremise

WebSphere WebLogicRedHatJBoss

5

ChoiceofImplementa9ons

Page 6: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEEAPIs-BackboneofLeadingOpenSourceProjects

6

JavaEEContainers

Microservices WebContainers

WebFrameworks

PaaSREST

Page 7: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEE–What’sNext?

7

NewAppDevStyleforCloudandMicroservices

Page 8: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| 8

DevelopersFacingNewChallenges

•  AcceleraGontowardstheCloud•  Shibfromphysicalinfrastructuretovirtual• Microservicesvs.monolithicapplicaGons•  RunGmepackagedwithapplicaGons...

Page 9: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ProposedEnhancementsforJavaEE

• NewAppDevstyleforCloudandMicroservices• Comprehensive

– ProgrammingModel,Packaging,Portability,Security,Monitoring…

• Buildonproventechnologies•  Standards-basedandtransparent

– JCPprocesses– OpenSourceRIs

9

Page 10: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEENextTechnicalAreasofFocus

10

Page 11: Java EE Next

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

Page 12: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

PackagingforSimplicity• ConfiguraGon• Resiliency• Packaging–Dockermodel

• MulGtenancy

•  Serverless

12

App

Server

Orderservice

App

Server

Catalogservice

App

Server

Userprofileservice

Page 13: Java EE Next

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

Page 14: Java EE Next

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

Page 15: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEE8

15

Page 16: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JAX-RS2.1

•  Server-sentevents• Non-blockingI/Oinproviders(filters,interceptors…)• HypermediaAPIenhancements• ReacGveprogrammingparadigmtoimproveJAX-RSasynchronousclients•  IntegraGonwithotherJSRsandframeworks

16

JavaEE8

Page 17: Java EE Next

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

Page 18: Java EE Next

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

Page 19: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Servlet4.0

•  SupportforHTTP/2– Request/responsemulGplexing– Serverpush– UpgradefromHTTP1.1

• CompaGbilitywithlatestHTTP1.1RFCs•  Smallercommunity-requestedimprovements(JIRAissues)

19

JavaEE8

Page 20: Java EE Next

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

Page 21: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

CDI2.0

• DefinebehaviorofCDIoutsideofaJavaEEcontainer• APItobootstrapaCDIcontainerinJavaSE•  Specsplitinto3parts:

– CDICore– CDIforJavaSE– CDIforJavaEE

• Observersordering• Asynchronousevents

21

JavaEE8

Page 22: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

CDI2.0

22

@InjectEvent<PaymentEvent>debitEvent;//producerdebitEvent.fire(somePayload);

//consumerpublicvoidanObesrver(@ObservesPayloadp){…}

Page 23: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

CDI2.0

23

//consumerApublicvoidanObesrver(@ObservesPayloadp){…}//consumerBpublicvoidanotherObesrver(@ObservesPayloadp){…}

Page 24: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

CDI2.0

24

//consumerApublicvoidanObesrver(@Observes@Priority(10)Payloadp){…}//consumerBpublicvoidanotherObesrver(@Observes@Priority(20)Payloadp){…}

JavaEE8

Page 25: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

CDI2.0

25

@InjectEvent<PaymentEvent>debitEvent;//asyncproducerdebitEvent.fireAsync(somePayload);

//asyncconsumerpublicvoidanObesrver(@ObservsAsyncPayloadp){…}

JavaEE8

Page 26: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

BeanValidaGon2.0

• ConstraintsappliedtocollecGonelements•  SupportfornewDate/TimeAPI•  IntegraGonwithOpGonalwrappers• RepeatableannotaGons•  Introducenewconstraints

– E.g.@NotEmpty,@NotBlank

• AddiGonalfeaturesrequestedfromcommunity

26

JavaEE8

Page 27: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JSF2.3

• BeqerCDIintegraGon• WebSocketintegraGon• AjaxmethodinvocaGon• Class-levelBeanValidaGon•  JavaDate/Timesupport

27

JavaEE8

Page 28: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JSON-B1.0

•  JAXB-likeAPItomarshal/unmarshalJavaobjectsto/fromJSONdocuments• DefaultmappingbetweenclassesandJSON• CustomizaGonAPIs

– AnnotaGon(@JsonbProperty,@JsonbNillable)– RunGmeconfiguraGonbuilder

• Allowstoswapproviders• NaturalfollowontoJSON-P–closestheJSONsupportgap

28

JavaEE8

Page 29: Java EE Next

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}]

Page 30: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JSON-P1.1

• UpdateJSON-Pspectostaycurrentwithemergingstandards•  SupportforIETFstandardsonJSONPointerandJSONPatch• AddediGngoperaGonstoJsonObjectandJsonArray• HelperclassesandmethodstobeqeruGlizeJavaSE8StreamoperaGons

30

JavaEE8

Page 31: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ProposalforSecurity

31

§  OpenIDsupportforauthenGcaGon§  ImprovedOAuthsupport

§  RegistraGonandDiscoveryofResourcestoRequestScopes

§  AuthorizaGonModel§  StandardwayofconnecGnganapplicaGontoakey

service§  EncrypGonserviceforstoreddata

§  OAuth&OpenIDhardtouse§  NostandardwayofconnecGngan

applicaGontoakeyservice§  NeedtokeepsensiGvestoreddata

secret

ProblemStatements Proposal

JavaEE8

Page 32: Java EE Next

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

Page 33: Java EE Next

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 !

Page 34: Java EE Next

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

Page 35: Java EE Next

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

Page 36: Java EE Next

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

Page 37: Java EE Next

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

Page 38: Java EE Next

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

Page 39: Java EE Next

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

Page 40: Java EE Next

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

Page 41: Java EE Next

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

Page 42: Java EE Next

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaEENext-Summary• NewAppDevStyleforCloudandMicroservices

• Planninginprocess• Contribute• OpenSourceRIs

42

Page 43: Java EE Next
Page 44: Java EE Next

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


Recommended