+ All Categories
Home > Documents > Servlet 4.0: Status Update, HTTP/2 Comes to Java · Bean Validaon Deployment JASPIC JMS JTA Servlet...

Servlet 4.0: Status Update, HTTP/2 Comes to Java · Bean Validaon Deployment JASPIC JMS JTA Servlet...

Date post: 23-Sep-2018
Category:
Upload: dinhnguyet
View: 221 times
Download: 0 times
Share this document with a friend
87
Transcript

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Servlet4.0:StatusUpdate,HTTP/2ComestoJavaCON7980

EdBurnsServletSpecificaLonCo-leadJavaEEPlaNormGroupSeptember2016

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecLon.ItisintendedforinformaLonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncLonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andLmingofanyfeaturesorfuncLonalitydescribedforOracle’sproductsremainsatthesolediscreLonofOracle.

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

•  EuigeunChung(TmaxSoX,Inc)• GregWilkins(WebLdeLLC)•  JusLnLee(MongoDB,Inc)• MarkThomas(Individual,Tomcat)• MarLnMulholland(IBM)• MinehikoIIDA(FujitsuLimited)• NeilGriffin(LiferayInc)•  StuartDouglas(RedHat)• WenboZhu(GoogleInc.)

ServletHasAlwaysBeenaTrueCommunityEffort

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

3

4

5

6

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

3

4

5

6

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenLal–OracleInternal/Restricted/HighlyRestricted 8

JavaEE7

Connector JAXBJSPDebugging

ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket

BeanValidaLon JASPIC ServletJMS JTADeployment

Batch JACCDependencyInjecLon JAXR JSTL Management

CDI EJB JAX-RPC WebServicesJSF JavaPersistence

JSON-PCommonAnnotaLons EL JAX-RS WebServices

MetadataJavaMail

CDI

JSON-B

Security

BeanValidaLon

JSF

JAX-RS

JSON-P

Servlet

HealthCheckConfiguraLon

JavaEE8(RevisedProposal,2016)

JSP

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenLal–OracleInternal/Restricted/HighlyRestricted 9

JavaEE7

Connector JAXBJSPDebugging

ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket

BeanValidaLon JASPIC ServletJMS JTADeployment

Batch JACCDependencyInjecLon JAXR JSTL Management

CDI EJB JAX-RPC WebServicesJSF JavaPersistence

JSON-PCommonAnnotaLons EL JAX-RS WebServices

MetadataJavaMail

CDI

JSON-B

Security

BeanValidaLon

JSF

JAX-RS

JSON-P

Servlet

HealthCheckConfiguraLon

JavaEE8(RevisedProposal,2016)

JSP

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

3

4

5

6

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2Percep4onisReality(especiallywithWebBrowsers)

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2Percep4onisReality(especiallywithWebBrowsers)

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2Percep4onisReality(especiallywithWebBrowsers)

ReducedpercepLonoflatency

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2Percep4onisReality(especiallywithWebBrowsers)

ReducedpercepLonoflatency

Headerfieldcompression

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2Percep4onisReality(especiallywithWebBrowsers)

ReducedpercepLonoflatency

Headerfieldcompression

MulLpleconcurrentexchanges

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2isreallyjustanewtransportlayerunderneathHTTP/1.1– samerequest/responsemodel– nonewmethods– nonewheaders– nonewusagepalernsfromapplicaLonlayer– nonewusageofURLspecandotherlowerlevelspecs

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

StandingontheShoulders

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

• HTTP/1.0– Socketsareathrowawayresource– SpecificaLonsaysverylilleabouthowsocketsaretobeused– Browsersfreetoopenmanysocketstothesameserver

NetworkProgrammingReview

Credit:chrisjstanleyflickr

TheSocketAngle

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReviewTheSocketAngle

• HTTP/2– Socketsseenasascarceresource– SpecificaLonsaysmuchabouthowtheyaretobeused– Onlyoneopenperserver

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReviewTheSocketAngle

Client ServerClient Server

Client Server

Client Server

Client Server

Client Server

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReviewSolu4oninHTTP/2

Client Server

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

• HTTP/1.0wasdesignedtobeeasytoimplementwithcontemporarydevelopmentpracLcesof1991– textbasedprotocol– leavesflowcontroltotheTCPlayer– easytowriteaparser– simplesocketlifecycle

TheAdop4onAngle

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NetworkProgrammingReview

• HTTP/2ismuchmorecomplicatedtoimplement– statemachine– flowcontrol– headercompression– binaryframing(arguablyeasierthantextbasedforparsing)

TheAdop4onAngle

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2BigTicketFeatureReview•  Request/ResponsemulLplexing•  BinaryFraming•  StreamPrioriLzaLon•  ServerPush•  HeaderCompression•  UpgradefromHTTP/1.1

•  ALPN•  101SwitchingProtocols

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2RequestResponseMulLplexing

•  Fullybi-direcLonal•  Enabledbydefiningsometerms– Connec&onATCPsocket– StreamA“channel”withinaconnecLon– MessageAlogicalmessage,suchasarequestoraresponse– FrameThesmallestunitofcommunicaLoninHTTP/2.

LetstheprotocoldomorethingswithasingleTCPconnec4on

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2RequestResponseMulLplexing

•  Fullybi-direcLonal•  Enabledbydefiningsometerms– Connec&onATCPsocket– StreamA“channel”withinaconnecLon– MessageAlogicalmessage,suchasarequestoraresponse– FrameThesmallestunitofcommunicaLoninHTTP/2.

LetstheprotocoldomorethingswithasingleTCPconnec4on

Backpressure?}

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2RequestResponseMulLplexing

•  Fullybi-direcLonal•  Enabledbydefiningsometerms– Connec&onATCPsocket– StreamA“channel”withinaconnecLon– MessageAlogicalmessage,suchasarequestoraresponse– FrameThesmallestunitofcommunicaLoninHTTP/2.

LetstheprotocoldomorethingswithasingleTCPconnec4on

Flowcontrol}

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2RequestResponseMulLplexingConnec4ons,Streams,Messages,Frames

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2RequestResponseMulLplexing

• OnceyoubreakthecommunicaLondownintoframes,youcaninterweavethelogicalstreamsoverasingleTCPconnecLon.•  Yetanotherideafromthe1960sisnewagain.

Connec4ons,Streams,Messages,Frames

BrowserServerSingle TCP connection for HTTP 2

STREAM'4'HEADERS'

STREAM'9'HEADERS'

STREAM'7'DATA'

STREAM'7'HEADERS'

STREAM'2'HEADERS'

STREAM'2'DATA'

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2BinaryFraming

•  SolvesHead-Of-Line(HOL)blockingproblem

•  TypefieldcanbeDATA,HEADERS,PRIORITY,RST_STREAM,SETTINGS,PUSH_PROMISE,PING,GOAWAY,WINDOW_UPDATE,CONTINUATION

EnabledbydumpingnewlinedelimitedASCII

Length(24)

Type(8) Flags(8)

R StreamIden4fier(31)

FramePayload(0…)

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2BinaryFraming

GET/index.htmlHTTP/1.1Host:example.comAccept:text/html

Example1

HEADERS+END_STREAM+END_HEADERS:method:GET:scheme:hlp:path:/index.html:authority:example.orgaccept:text/html

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2BinaryFraming

HTTP/1.1200OKContent-Length:11Content-Type:text/htmlHelloWorld

Example2

HEADERS-END_STREAM+END_HEADERS:status:200content-length:11content-type:text/htmlDATA+END_STREAMHelloWorld

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2HeaderCompression

• ObservaLon:mostoftheheadersarethesameinagivenconnecLon– Host:Accept:user-agent:etc.

• WhysendthemeveryLme?• Havetheserverandtheclientkeeptablesofheaders,thenjustsendreferencesandupdatestothetables.

KnownasHPACK

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2StreamPrioriLzaLon

•  StreamDependencyinHEADERSFrame• PRIORITYframetype• AnaddiLonal40bytes– Streamid(31)– Weight(8):[1,256]– Exclusivebit(1)

• OnlyasuggesLon

A

B C

4 12

A

B CD

4 16 12

exclusive=0

A

B C

D

4 12

16

exclusive=1

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2ServerPush

•  Eliminatestheneedforresourceinlining.•  Letstheserverpopulatethebrowser’scacheinadvanceofthebrowseraskingfortheresourcetoputinthecache.• NocorrespondingJavaScriptAPI,butcanbecombinedwithSSE– Serverpushesstuffintothebrowser’scache.– ServerusesSSEtotellthebrowsertogofetchit(butweknowit’salreadyinthebrowser’scache).

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

HTTP/2UpgradefromHTTP/1.1

• Notsecure(h2c)– Wehavetouseport80– UseexisLng101SwitchingProtocolsfromHTTP/1.1

•  Secure(h2)– ApplicaLonLayerProtocolNegoLaLon(ALPN)

Secureornot-secure?

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

• AllowframeworkstoeffecLvelyleverageserverpush– flexiblestrategiesforleveragingpush

•  LeverageALPN

AbstracLonsEndureServletAPIisWellPosiLonedtoEnableHTTP/2OpLmizaLons

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

•  ExisLngAPIisdesignedforOneRequest==OneResponse.• HTTP/2destroysthisassumpLon.•  ItwillbechallengingtodojusLcetothenewrealityofOneRequest==OneorMoreResponses.• Wemustnotsimplyboltthe“OneorMoreResponses”conceptontosomeconvenientpartoftheexisLngAPI.

ChallengesinExposingHTTP/2FeaturesinServletAPI

Servlet4.0BigTicketNewFeatures

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

• Request/ResponsemulLplexing• BinaryFraming/FlowControl•  StreamPrioriLzaLon•  ServerPush• HeaderCompression• UpgradefromHTTP/1.1– ALPN– 101SwitchingProtocols

HTTP/2FeaturesServlet4.0BigTicketNewFeatures

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

• Request/ResponsemulLplexing• BinaryFraming/FlowControl•  StreamPrioriLzaLon•  ServerPush• HeaderCompression• UpgradefromHTTP/1.1– ALPN– 101SwitchingProtocols

HTTP/2FeaturesPoten4allyExposedinServletAPI

Servlet4.0BigTicketNewFeatures

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Servlet4.0BigTicketNewFeatures• HTTP/2Required,includingALPNandHPACK• HTTP/2ServerPush– Pushresourcetoclientforagivenurlandheaders– NotatallareplacementforWebSocket– ReallyusefulforframeworksthatbuildonServlet,suchasJSF– BuilderAPI

•  EaseofUse

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

javax.servlet.hlp.PushBuilder

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerPushviaBuilderAPI

Servlet4.0BigTicketNewFeatures

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerPush

publicclassFacesServletimplementsServlet{publicvoidservice(ServletRequestreq,ServletResponseresp)throwsIOException,ServletException{//..HttpServletRequestrequest=(HttpServletRequest)req;try{ResourceHandlerhandler=context.getApplication().getResourceHandler();if(handler.isResourceRequest(context)){handler.handleResourceRequest(context);}else{lifecycle.attachWindow(context);lifecycle.execute(context);lifecycle.render(context);}}}

ExampleofPoten4alUsefromJSF

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ServerPush

publicclassExternalContextImplextendsExternalContext{//…publicStringencodeResourceURL(Stringurl){if(null==url){Stringmessage=MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID,"url");thrownewNullPointerException(message);}((HttpServletRequest)request).getPushBuilder().path(url).push();return((HttpServletResponse)response).encodeURL(url);}//…}

ExampleofPoten4alUsefromJSF

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

4

5

6

3

2

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

ReacLveProgramming

Responsive

MessageDriven

ResilientElasLc

imagecredit:reacLvemanifesto.org

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaSE9SupportforReacLveProgramming(JEP266)

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Example

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SubmissionPublisher<R>• ReacLve-streampublishers– Ondrophandlingand/orblockingforflowcontrol

• Constructorparameters– Executor– intmaxBufferCapacityforeachsubscriber’sbuffer– BiConsumer<?superFlow.Subscriber<?SuperR>,?superThrowable>handler

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SubmissionPublisher<R>• Methods– intsubmit(Ritem)•  result:theesLmatedmaximumlag(numberofitemssubmiledbutnotyetconsumed)amongallcurrentsubscribers

– intoffer(Ritem,BiPredicate<Flow.Subscriber<?SuperR>,?superR>onDrop)•  result:ifnegaLve,the(negaLve)numberofdrops;otherwiseanesLmateofmaximumlag

– ...

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

AsynchronousinServlet3.0

• ServletRequest#startAsync• AsyncContext– #addListener,#dispatch,#complete

• AsyncListener– #onComplete,#onError,#onStartAsync,#onTimeout

•  Event-driven– Server-SentEvents

AsyncinJavaEE6!

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingIOinServlet3.1

• ServletInputStream– #setReadListener,#isReady

• ServletOutputStream– #setWriteListener,#isReady

• ReadListener– #onDataAvailable,#onAllDataRead,#onError

• WriteListener– #onWritePossible,#onError

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingIOinServlet3.1

• ServletInputStream– #setReadListener,#isReady

• ServletOutputStream– #setWriteListener,#isReady

• ReadListener– #onDataAvailable,#onAllDataRead,#onError

• WriteListener– #onWritePossible,#onError

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingIOinServlet3.1

• ServletInputStream– #setReadListener,#isReady

• ServletOutputStream– #setWriteListener,#isReady

• ReadListener– #onDataAvailable,#onAllDataRead,#onError

• WriteListener– #onWritePossible,#onError

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Non-blockingIOinServlet3.1

• ServletInputStream– #setReadListener,#isReady

• ServletOutputStream– #setWriteListener,#isReady

• ReadListener– #onDataAvailable,#onAllDataRead,#onError

• WriteListener– #onWritePossible,#onError

Flowcontrol}

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

4

5

3

6

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

• AddJavaSE8defaultmethods– ServletContextAttributeListener,ServletContextListener,ServletRequestAttributeListener,ServletRequestListener,HttpSessionActivationListener,HttpSessionAttributeListener,HttpSessionBindingListener,HttpSessionListener

• AdddefaulttoFilter#init,#destroy• AddGenericFilterandHttpFilter• <default-context-path>elementinweb.xml• AddCookie[]getCookie(Stringname)toHttpServletRequest

Servlet4.0SmallChange

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Servlet4.0SmallChange

• Mappingjavax.servlet.http.HttpServletRequest.getMapping()• javax.servlet.http.Mapping– MappingMatchgetMatchType()– StringgetMatchValue()– StringgetPattern()

• javax.servlet.http.MappingMatchenum– CONTEXT_ROOT,DEFAULT,EXACT,EXTENSION,IMPLICIT,PATH,UNKNOWN

DiscovercurrentAc4veMapping

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

@Deprecatesomemethodsandclasses– ServletContext:getServlet(),getServlets(),getServletNames(),log()– ServletRequestWrapper:getRealPath()– SingleThreadModel– UnavailableExcepLon– HlpServletResponse:encodeUrl(),encodeRedirectUrl(),setStatus()– HlpServletResponseWrapper:encodeUrl(),encodeRedirectUrl(),setStatus()– HlpSession:getSessionContext(),getValue(),getValueNames(),putValue(),removeValue()– HlpSessionContext

Servlet4.0SmallChange

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

•  HlpConstraint•  HlpMethodConstraint

•  MulLpartConfig

•  ServletSecurity• WebFilter

• WebInitParam

• WebListener

• WebServlet

•  …

•  PostConstruct•  PreDestroy•  Resource•  Resources•  DeclareRoles•  RunAs•  DataSourceDefiniLon•  DataSourceDefiniLons•  …

• 

•  AroundConstruct•  AroundInvoke•  AroundTimeout

•  ExcludeClassInterceptors•  ExcludeDefaultInterceptors•  Interceptors•  …

Servlet4.0SmallChangeClarifyexactlywhichannota4onsarenotscannedwhenmetadata-complete="true"

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Poten4alFutureAreasforInvesLgaLon

•  “ForwardedHTTPExtension”Standardizes– X-Forwarded-{Host,Server,Proto,For}– X-Proxied-Hlps

•  Intoasinglestandard“Forwarded”header•  ServletcouldprovideAPIsupporttomakeiteasierforprogramstoaccesstheinformaLonwithouthavingtomanuallyparsetheheader.

RFC7239APISupport

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Poten4alFutureAreasforInvesLgaLon

•  JSON-Bsupport– AllowincomingoroutgoingapplicaLon/jsontobemarshaledorunmarshaledautomaLcally

•  SecurityandJSR-375integraLon– OAuthand/orOpenIDConnect

• Packaging– ExecutableJARsupport– IntegraLonwithnewConfigJSR

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Poten4alFutureAreasforInvesLgaLon

• MulL-tenancy– ApplicaLon-scopeddataisnowtenant-specific– APIfordiscoveringtenantID

• HealthChecking– healthPalernalributeon@WebServletand@WebFilter?

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

3

5

4

6

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaSE9SupportforHTTP/2•  JEP110hlp://openjdk.java.net/jeps/110•  EasytouseAPI• Coversonlythemostcommonusecases•  SupportsbothHTTP/1.1and2• BuildsonJavaAPIclassesgoingbacktoJava1.2!

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaSE9SupportforHTTP/2

HlpClientHlpClient.Builder

HlpRequest.Builder

HlpRequestHlpRequest

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaSE9SupportforHTTP/2

• Ahandfulofclasses– HlpClient,builtbyHlpClient.Builder•  HoldsinformaLonforcreaLngoneormoreHlpRequests

– HlpRequest,builtbyHlpRequest.Builder•  onerequest/responseinteracLon

– HlpResponse– BodyProcessors•  HlpRequestBodyProcessor•  HlpResponseBodyProcessor

Smallfootprint

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

JavaSE9SupportforHTTP/2

• Blockingmode:onethreadperrequest/response– sendrequest– getresponse

• Non-blockingmode– UsingExecutorServiceandCompletableFuture

•  FullsupportforHTTP/2ServerPush

Smallfootprint

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

MyPlanforYourTimeInvestment

JavaEEBigPicture

HTTP/2andServlet4.0

ServletandReacLveProgramming

NewandPlannedImprovementsinServlet4.0

JavaSE9SupportforHTTP/2

SummaryandCurrentStatus

1

2

3

4

6

5

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SummaryandCurrentStatus•  JSR-369formedon22September2014•  EarlyDraXReviewpostedonJCP.orgJavaOne2015

Sep2016

Oct2016

Nov2016

Dec2016

Jan2017

Feb2017

Mar2017

Apr2017

May2017

June2017

July2017

Aug2017

Sep2017

PublicDraX

ProposedFinalDraX

FinalRelease

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

NextSteps

•  Takethesurvey– hlp://glassfish.org/survey

•  Sendtechnicalcommentsto– [email protected]– hlp://java.net/projects/servlet-spec/

•  JointheJCP–cometoHackergardeninJavaHub– hlps://jcp.org/en/parLcipaLon/membership_drive

•  JoinortracktheJSRsastheyprogress– hlps://java.net/projects/javaee-spec/pages/SpecificaLons

•  Adopt-a-JSR– hlps://community.oracle.com/community/java/jcp/adopt-a-jsr

Giveusyourfeedback

79

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

WheretoLearnMoreatJavaOne

80

SessionNumber SessionTitle Day/Time

CON1558 What'sNewintheJavaAPIforJSONBinding Monday5:30p.m.

BOF7984 JavaEEfortheCloud Monday7:00p.m.

CON4022 CDI2.0IsComing Tuesday11:00a.m.

CON7983 JAX-RS2.1forJavaEE8 Tuesday12:30p.m.

CON8292 PortableCloudApplicaLonswithJavaEE Tuesday2:30p.m.

CON7980 Servlet4.0:StatusUpdateandHTTP/2 Tuesday4:00p.m.

CON7978 SecurityforJavaEE8andtheCloud Tuesday5:30p.m.

CON7979 ConfiguraLonforJavaEE8andtheCloud Wednesday11:30a.m.

CON7977 JavaEENext–HTTP/2andREST Wednesday1:00p.m.

CON6077 TheIllusionofStatelessness Wednesday4:30p.m.

CON7981 JSF2.3 Thursday11:30a.m.

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

OtherSessionsofInterest• ConfiguraLonforJavaEE8andtheCloud[CON7979]Wednesday21September,11:30,Parc55CyrilMagninII/III•  JavaEENext:HTTP/2andRESTOpportuniLes[CON7977]Wednesday21September,13:00Parc55CyrilMagninII/III•  End-to-EndReacLveStreams,fromSockettoBusiness[CON1852]Thursday22September,11:30,HiltonConLnentalBallroom1/2/3

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementTheprecedingisintendedtooutlineourgeneralproductdirecLon.ItisintendedforinformaLonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncLonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andLmingofanyfeaturesorfuncLonalitydescribedforOracle’sproductsremainsatthesolediscreLonofOracle.

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

SessionSurveys

Helpushelpyou!!• Oraclewouldliketoinviteyoutotakeamomenttogiveusyoursessionfeedback.Yourfeedbackwillhelpustoimproveyourconference.• PleasebesuretoaddyourfeedbackforyouralendedsessionsbyusingtheMobileSurveyorinScheduleBuilder.

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

BackUpSlides

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|

Servlet4.0•  SupportforHTTP/2– ServerPush– ImplementaLonsrequiredtosupportHTTP/2(impliesHPACK,ALPN)

• CommunityDrivenImprovements– DiscovercurrentlyinvokedServlet/Filtermapping– RFC7239/X-Forwarded-Forsupport

•  JavaEE8IntegraLon– JSON-B– Security– Config


Recommended