Upload
truongtuyen
View
232
Download
2
Embed Size (px)
Citation preview
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3:TheCommunityTakesOverCON7981
EdBurnsServletSpecificaKonCo-leadsJavaEEPlaNormGroupKitoMannJSFExpertGroupMemberandIndependentConsultantSeptember2016
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirecKon.ItisintendedforinformaKonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncKonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andKmingofanyfeaturesorfuncKonalitydescribedforOracle’sproductsremainsatthesolediscreKonofOracle.
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
• EdBurns
– ServletandJSFco-specleadsince1.0– FrequentinternaKonalconferencespeaker
– AuthoroffourEnterpriseJavarelatedbooksfromMcGraw-Hill,includingJSF2.0theCompleteReference
• KitoMann
– JSFEGmembersince1.2– FounderofJSFCentral.com– HostofEnterpriseJavaNewscast– AuthorofJSFinAcKon– Independenttrainerandconsultant
5
SpeakerBios
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
OurPlanforYourTimeInvestment
BigPicture
JSFHistoricalPerspecKve
BigTicketNewFeatures
JavaEEPlaNormIntegraKon
Summary
1
2
3
4
5
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
• Category:EnterpriseJava
PrimeFacesWinsDuke’sChoiceAward2016h.ps://www.oracle.com/javaone/dukes-choice-award.html
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenKal–OracleInternal/Restricted/HighlyRestricted 8
JavaEE7
Connector JAXBJSPDebugging
ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket
BeanValidaKon JASPIC ServletJMS JTADeployment
Batch JACCDependencyInjecKon JAXR JSTL Management
CDI EJB JAX-RPC WebServicesJSF JavaPersistence
JSON-PCommonAnnotaKons EL JAX-RS WebServices
MetadataJavaMail
CDI
JSON-B
Security
BeanValidaKon
JSF
JAX-RS
JSON-P
Servlet
HealthCheckConfiguraKon
JavaEE8(RevisedProposal,2016)
JSP
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.| ConfidenKal–OracleInternal/Restricted/HighlyRestricted 9
JavaEE7
Connector JAXBJSPDebugging
ManagedBeansJSPConcurrencyEE Interceptors JAX-WS WebSocket
BeanValidaKon JASPIC ServletJMS JTADeployment
Batch JACCDependencyInjecKon JAXR JSTL Management
CDI EJB JAX-RPC WebServicesJSF JavaPersistence
JSON-PCommonAnnotaKons EL JAX-RS WebServices
MetadataJavaMail
CDI
JSON-B
Security
BeanValidaKon
JSF
JAX-RS
JSON-P
Servlet
HealthCheckConfiguraKon
JavaEE8(RevisedProposal,2016)
JSP
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
• JavaEE6isalreadyinOracle’spubliccloud
• Itisojenapartofanearlystageof“breakingupthemonolith”efforts– Startbyreplacingdirectin-processinvocaKonofCDIbeanswithRESTcallstoremoteservices
– CheckoutJoinFacesforawaytoquicklyrunJSFinSpringBoot
JSFandtheCloud
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
200495%
5%
CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
200880%
20%CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
200960%
40% CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
201040%
60%
CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
201325%
75%
CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
2014hpp://bit.ly/JsfFtw2015Poll:JSFandSpringMVCKe
20%
80%
CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve
20166%
94%
CoreJSF
Community
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSFHistoricalPerspecKve• JSR127
– JSF1.011March2004– JSF1.127May2004
• JSR252– JSF1.211May2006– JSF1.2MaintenanceRelease119December2006
– JSF1.2MaintenanceRelease213June2008
– JSF1.2MaintenanceRelease325August2008
• JSR314- JSF2.01July2009- JSF2.116July2010- JSF2.1MaintenanceRelease2
22November2010• JSR344
• JSF2.2Started14April2011• FinalJune2013hpp://bit.ly/JavaEE7WrapsUp
• JSR372• JSF2.3Started22September2014
• EarlyDrajReviewOctober2015• ProposedFinalDrajJuly2017
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
• BeperCDIIntegraKon– Waymorethingsareinjectable– Finallymarkinglegacymanagedbeansasdeprecated
• WebsocketIntegraKon• AjaxMethodInvocaKon• ClassLevelBeanValidaKon• JavaTimesupport• UIDataandUIRepeatimprovements
h.p://arjan-Ejms.omnifaces.org/p/jsf-23.html
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeaturesh.p://arjan-Ejms.omnifaces.org/p/jsf-23.html
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeaturesh.p://arjan-Ejms.omnifaces.org/p/jsf-23.html
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeaturesWebSocketIntegraEon
<!DOCTYPEhtml>
<htmllang="en"xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://xmlns.jcp.org/jsf/core"xmlns:h="http://xmlns.jcp.org/jsf/html"><h:body><h:formid="form"><h:commandButtonid="button"value="push"action="#{pushBean.send}"><f:ajax/></h:commandButton></h:form>
<f:websocketchannel="push"onmessage="function(message{document.getElementById('form:button').value=message;}"/><divid="user"/><f:websocketchannel="user"user="user"onmessage="function(message){document.getElementById('user').innerHTML=message;}"/><divid="view"/><f:websocketchannel="view"scope="view"onmessage="function(message){document.getElementById('view').innerHTML=message;}"/</h:body></html>
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeaturesWebSocketIntegraEon
@ModelpublicclassPushBean{@Inject@PushprivatePushContextpush;@Inject@PushprivatePushContextuser;@Inject@PushprivatePushContextview;publicvoidsend(){push.send("pushed!");user.send("pushed!","user");view.send("pushed!");}}
importjavax.websocket.Endpoint;importjavax.websocket.EndpointConfig;importjavax.websocket.Session;publicclassFakeEndpointextendsEndpoint{@OverridepublicvoidonOpen(Sessionsession,EndpointConfigconfig){//https://java.net/jira/browse/WEBSOCKET_SPEC-240}}
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
<!DOCTYPEhtml>
<htmllang="en"xmlns="http://www.w3.org/1999/xhtml"xmlns:f="http://xmlns.jcp.org/jsf/core"xmlns:h="http://xmlns.jcp.org/jsf/html"><h:body>
<h:form>
<h:commandScriptname="foo"autorun="true"action="#{spec613.setResult('foo')}"render=":result"/>
<h:commandScriptname="bar"action="#{spec613.setResult('bar')}"render=":result"/>
</h:form>
<h:outputTextid="result"value="#{spec613.result}"/>
</h:body>
</html>
AjaxMethodInvocaEon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
@Named
@RequestScoped
public class SomeBean {
@Inject
private FacesContext context;
public void eval() {
context.getPartialViewContext()
.getEvalScripts()
.add("alert('After response')");
}
}
GetEvalScripts
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
<h:formprependId="false"id="form"><h:panelGridcolumns="2"><h:outputTextvalue="Password"/><h:inputSecretid="password1"value="#{backingBean.password1}"/><h:outputTextvalue="Passwordagain"/><h:inputSecretid="password2"value="#{backingBean.password2}"/><h:commandButtonid="submit"value="Submit"/></h:panelGrid><h:messagesid="err"/><f:validateWholeBeanvalue="#{backingBean}"copierType="SerializationCopier"validationGroups="com.sun.faces.test.javaee8.validateWholeBean.PasswordValidationGroup"/></h:form>
ClassLevelBeanValidaEon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
@Named@RequestScoped@Password(groups=PasswordValidationGroup.class)publicclassBackingBeanimplementsSerializable{privateStringpassword1;privateStringpassword2;
//...}}
@Constraint(validatedBy={PasswordValidator.class})@Documented@Target(TYPE)@Retention(RUNTIME)public@interfacePassword{Stringmessage()default"Passwordfieldsmustmatch";Class<?>[]groups()default{};Class<?extendsPayload>[]payload()default{};
}
ClassLevelBeanValidaEon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
publicclassPasswordValidatorimplementsConstraintValidator<Password,BackingBean>{
@Overridepublicvoidinitialize(PasswordconstraintAnnotation){}@OverridepublicbooleanisValid(BackingBeanvalue,ConstraintValidatorContextcontext){booleanresult;result=value.getPassword1().equals(value.getPassword2());returnresult;}
}
ClassLevelBeanValidaEon
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeaturesJavaDateTimeSupport
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
JSF2.3BigTicketNewFeatures
• SupportsIterable
UIDataandUIRepeatImprovements
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
Resource Library Contracts Faces Flows
• AllowcomposingaJSFappasacollecKonofmodules– FacesFlowsmodularizebehavior– ResourceLibraryContractsmodularizeappearance
• Welldefinedcontractforeach
Modularity and Multi-tenant capability
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
ResourceLibraryContractsandFacesFlows
• TwonewconceptsinJSF2.2– ResourceLibraryContract– FacesFlows
What’sgoingonhere?
BuildsonfaceletsconceptsBuildsonnavigaKonconcepts
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
AddiKonalPotenKalAreasforInvesKgaKonForJavaEE8
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
AddiKonalPotenKalJavaEE8FocusAreas• Config
– Externalizedconfig• faces-config.xml• web.xml
• HealthCheck– Ensureserverisupandcancontactdownstreamservices
• Security– DoingOAuthandTime-BasedOne-TimePasswordarecurrentlytoohard.Itwouldbenicetomakethiseasier
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
AddiKonalPotenKalJavaEE8FocusAreasCircuitBreaker
Closed Open
HalfOpen
failcountreached
ResetKmeout
failsuccess
successorfail
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
SummaryandCurrentStatus• JSR-372formedon22September2014• EarlyDrajReviewJavaOne2015• WorkingtowardPublicReview
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
OtherSessionsofInterest• JavaEEApplicaKonsonOracleJavaCloudService[CON3069]Thursday22September,1:00,Parc55PowellI/II
• BreakingAparttheMonolithwithMicroservices[CON3127]Thursday22September,2:30,Parc55CyrilMagninI
• ConfigureOnce,RunEverywherewithApacheTamaya[CON1141]Thursday22September,16:00Parc55Mission
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
NextSteps
• Takethesurvey– hpp://glassfish.org/survey
• Sendtechnicalcommentsto– [email protected]
• JointheJCP–cometoHackergardeninJavaHub– hpps://jcp.org/en/parKcipaKon/membership_drive
• JoinortracktheJSRsastheyprogress– hpps://java.net/projects/javaee-spec/pages/SpecificaKons
• Adopt-a-JSR– hpps://community.oracle.com/community/java/jcp/adopt-a-jsr
Giveusyourfeedback
39
Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.|
WheretoLearnMoreatJavaOne
40
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 PortableCloudApplicaKonswithJavaEE Tuesday2:30p.m.
CON7980 Servlet4.0:StatusUpdateandHTTP/2 Tuesday4:00p.m.
CON7978 SecurityforJavaEE8andtheCloud Tuesday5:30p.m.
CON7979 ConfiguraKonforJavaEE8andtheCloud 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.|
SafeHarborStatementTheprecedingisintendedtooutlineourgeneralproductdirecKon.ItisintendedforinformaKonpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfuncKonality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andKmingofanyfeaturesorfuncKonalitydescribedforOracle’sproductsremainsatthesolediscreKonofOracle.