ajax and jsf: natural synergy · jsf 1.2 makes ajax integration easier for component developers jsf...

54
Ajax and JSF: Natural Synergy Kito D. Mann, Principal Consultant TS-6482

Upload: vubao

Post on 10-Nov-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

Ajax and JSF:Natural Synergy

Kito D. Mann, Principal Consultant

TS-6482

Page 2: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 2

Learn how JSF transparently supports Ajax development.

Page 3: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 3

Virtua, Inc• Training, consulting, architecture, mentoring, JSF product

development

Author, JavaServer Faces in ActionFounder, JSF Central• http://www.jsfcentral.com

Internationally recognized speaker• JavaOne, JavaZone, Javapolis, NFJS, etc.

JCP Member• JSF 2.0, WebBeans, Design-Time API for JavaBeans, Design-Time

Metadata for JavaServer Faces Components, Portlets 2.0

Kito D. Mann

Page 4: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 4

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummaryQ&A

4

Agenda

Page 5: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 5

JavaServer Faces from 1,000 feet

Ajaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 6: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 6

Standard web user interface (UI) framework for Java• JSF 1.0/1.1: Standardized through Java Community Process (JCP) in

2004 (JSR 127)• JSF 1.2: Standardized through JCP in 2006 (JSR 252)

• Part of Java EE 5.0

What is JavaServer Faces?

Page 7: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 7

Specification consists of:• Server side UI component and event model• Set of basic UI components• Basic application infrastructure

• Can automatically synchronize UI components with application objects

• Includes basic Dependency Injection container

What is JavaServer Faces?

Page 8: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 8

Extensive tool support • Sun, Oracle, IBM, BEA, Exadel, Borland, JetBrains, Genuitec, others

Enables RAD-style approach to Java web developmentFacilitates third-party UI component marketBuilt on top of Servlet APIWorks with JSP, but does not require it

What is JavaServer Faces?

Page 9: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 9

JSF and Struts

Page 10: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 10

JSF Application Architecture

What is Java Server Faces?

Page 11: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 11

Designed to facilitate easy-to-use IDE integration• Since JSF is a standard, vendors more likely to create tools

All major IDE vendors support JSFLevel and style variesCaveat:• Generated artifacts

Does not require tools

The IDE Effect

Page 12: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 12

JSF Programming Model

Page 13: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 13

The Request Processing Lifecycle

Page 14: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 14

ELResolverViewHandlerNavigationHandlerActionListenerStateManagerRenderKits

Pluggable Extension Points

Page 15: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 15

JavaServer Faces from 1,000 feetAjaxian Faces

Sprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 16: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 16

JSF’s architecture makes it easy to add Ajax support• Components and renderers can be separate• PhaseListeners can modify request processing

• Can also use either a Filter or a separate Servlet

• Pluggable classes can be used to change behavior• Enables transparent Ajax support

• Same programming model with or without Ajax

Ajaxian Faces

Page 17: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 17

JavaScript Bridge sends requestPhaseListener sends changesJavaScript Bridge updates page

Ajaxian Faces

Page 18: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 18

Ajax-enabled UI components may not be compatible with each otherNo standard for:• JavaScript Bridge• Determining which components to update• Resource resolution

Ajaxian Faces

Page 19: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 19

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some Ajax

Ajax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 20: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 20

Add Ajax to ordinary JSF componentsSpecify specific zones or components that need to be refreshedJSF event listeners executed asynchronouslyExamples:• JBoss RichFaces (formerly Ajax4jsf)• AjaxAnywhere• DynaFaces• Ajax support in MyFaces Sandbox

Sprinkling on some Ajax

Page 21: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 21

Adds Ajax support to any JSF viewFeatures:• Can add Ajax support to any JSF component with JavaScript events• Can define regions of the page (or entire page) that can be updated via

Ajax• ActionListeners and ValueChangeListeners invoked via Ajax• Also features AjaxListeners

Also has a suite of components

JBoss RichFaces (Ajax4Jsf)

Page 22: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 22

RichFaces

Page 23: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 23

DemoAjax4Jsf

Page 24: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 24

Most JSF UI component libraries integrate Ajax supportHave their own JavaScript and server layersExamples:• Simplica ECruiser Ajax Suite for JSF• Infragistics NetAdvantage for JSF• JBoss RichFaces• ICEsoft ICEfaces• TeamDev QuipuKit• Backbase Java Edition• Sun Project Woodstock• Apache MyFaces Trinidad

Ajax Inside

Page 25: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 25

Suite of basic JSF components• DataTable, GridTable, Tree, Tab, Menu, etc.

Integrated Ajax support• Lazy loading of data sets• Full set of Ajax-aware basic input components• Ability to execute any backing bean method for JavaScript events

ECruiser Ajax Suite for JSF

Page 26: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 26

DemoECruiser Ajax Suite for JSF

Page 27: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 27

Innovative take on Ajax browser/server integration• Direct-to-DOM: maintains copy of DOM on server which is synchronized

with DOM on the client• Sends only changes when the page changes• Requires a persistent connection between client and server• Supports Ajax Push/Comet

ICEsoft ICEfaces

Page 28: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 28

Three elements:• Framework

• Custom ViewHandler, ResponseWriter, and RenderKit• Custom Servlet for blocking requests

• Client-side JavaScript Ajax bridge• Component suite

• Chart, Data Table, DynamicImage, Collapsable Panel, Modal Popups, Tabs, TreeTable, Input controls

ICEsoft ICEfaces

Page 29: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 29

ICEsoft ICEfaces

Page 30: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 30

DemoICEsoft ICEfaces

Page 31: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 31

Suite of bread-and-butter components:• Tree, Table, Menu, Tabs, MenuBar, Input controls

Full Ajax support• Dynamic loading of data sets• Updating part of the page with a selection• All components can send Ajax requests and update other components

dynamically

Infragistics NetAdvantage for JSF

Page 32: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 32

DemoNetAdvantage for JSF

Page 33: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 33

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outside

Which one?Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 34: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 34

What about all of those great pure Ajax widgets?• Wrap them with JSF components

Examples:• jMaki• YUI4JSF• DojoFaces• Mojarra Scales

Ajax on the outside

Page 35: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 35

Provides wrappers for popular Ajax widgets• Common interface and data model for different libraries

Supports widgets from:• Dojo, Yahoo!, Flickr, Google

Not as tightly integrated with JSF as other solutions

jMaki

Page 36: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 36

Easy to create new widgets

jMaki

Page 37: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 37

jMaki

37© Virtua, Inc 2005-2007. Unauthorized use is prohibited.

Page 38: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 38

DemojMaki

Page 39: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 39

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?

Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 40: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 40

Pick a component suite • Tight integration with JSF

• No incompatibility problems within the same suite

• Well documented and supported• Choose as few as possible (preferably just one)• How much Ajax do you need?

• Other suites (such as WebGalileo Faces and Apache MyFaces Tomahawk have some Ajax support as well)

Which one?

Page 41: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 41

To add support to existing JSF components• Use RichFaces/Ajax4Jsf

• Works well with Apache MyFaces Tomahawk

If you need Ajax push, choose ICEfaces• Well documented• Open Source• Enterprise addition provides support and enhanced scalability

Use jMaki for eye candy or Web 2.0 components Don’t forget tools support!

Which one?

Page 42: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 42

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your own

Future directionsSummaryQ&A

Agenda

Page 43: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 43

Loose integration with client-side JavaScript• Apache Shale Remoting• Seam Remoting• Apache MyFaces Trinidad

Custom Ajax components• Use existing toolkit:

• JBoss RichFaces CDK• Apache Trinidad Maven Plugins• JSF Toolkit

Rolling Your Own

Page 44: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 44

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directions

SummaryQ&A

Agenda

Page 45: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 45

One problem with JSF 1.1 Ajax support:• The request processing lifecycle

JSF 1.2 improves Ajax support• Support for additional Lifecycle instance• invokeOnComponent method

JSF 1.2

Page 46: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 46

Targeted for late 2008Part of Java EE 6Will incorporate features from:• DynaFaces

• Single, integrated API for Ajax component developers• Will include JavaScript bindings

• Apache Shale• JBoss Seam• Facelets

JSF 2.0

Page 47: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 47

Key features• Standardized support for Ajax• Resource resolution and versioning• Simplified component development• Bookmarkable pages• Page description language (PDL) a la Facelets• Better UI component interoperability• New scopes• Less configuration (annotations)

JSF 2.0

Page 48: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 48

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummary

Q&A

Agenda

Page 49: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 49

JavaServer Faces is the standard Java EE web framework• Component-based framework• Simple, cohesive programming model

JSF’s architecture lends itself to Ajax developmentAjax development with JSF doesn’t require JavaScript!• Same programming model with or without Ajax

Summary

Page 50: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 50

Ajaxian Faces• JavaScript layer• JSF integration• Partial rendering

Three approaches:• Adding Ajax to existing components• Integrating Ajax into components• Wrapping JavaScript widgets

Summary

Page 51: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 51

Many different component suites and solutions exist currentlyJSF 1.2 makes Ajax integration easier for component developersJSF 2.0 will provide an Ajax integration platform for component vendors

Summary

Page 52: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 52

JavaServer Faces from 1,000 feetAjaxian FacesSprinkling on some AjaxAjax insideAjax on the outsideWhich one?Rolling your ownFuture directionsSummaryQ&A

Agenda

Page 53: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 53

Official JSF site• http://java.sun.com/javaee/javaserverfaces/

JSF Central product directory• http://www.jsfcentral.com/products

Ajax component suite comparison• http://www.theserverside.com/tt/articles/article.tss?l=JSFComparison

Ajax-JSF Comparison Matrix• http://www.ajaxjsf.net/

For More Information

Page 54: Ajax and JSF: Natural Synergy · JSF 1.2 makes Ajax integration easier for component developers JSF 2.0 will provide an Ajax integration platform for component vendors Summary

2008 JavaOneSM Conference | java.sun.com/javaone | 54

Speaker Name, Speaker Title, 24 pt.

ID#, Misc., 16 pt.

Speaker’s logo here (optional)