Java EE Next - BeJUG JavaOne Afterglow 2016

26
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

Transcript of Java EE Next - BeJUG JavaOne Afterglow 2016

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

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

hvp://glassfish.org/survey

25