Ajax Frameworks Ajax Frameworks and Toolkits and Toolkits
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Ajax Frameworks Ajax Frameworks and Toolkits and Toolkits

on

  • 1,725 views

 

Statistics

Views

Total Views
1,725
Views on SlideShare
1,722
Embed Views
3

Actions

Likes
1
Downloads
61
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ajax Frameworks Ajax Frameworks and Toolkits and Toolkits Presentation Transcript

  • 1. Ajax Frameworks and Toolkits Sang Shin, Prashant Dighe javapassion.com Sun Microsystems, Inc. 1
  • 2. Types of AJAX Toolkit and Framework Solutions of Today • Clients-side JavaScript Libraries (ex: Dojo toolkit) • RMI-like remoting via proxy (ex: DWR) • AJAX-enabled JSF components (ex: NetBeans VWP) • Dynamic Faces (DynaFaces) • Wrapper (ex: jMaki) • Java to JavaScript/HTML translator (ex: GWT) • Portlets and Ajax (ex: JSR 168 portlets) • MVC server-side scripting (ex: Phobos) • Web Application Frameworks with AJAX extension (ex: Shale or Echo2 or Wicket) 2
  • 3. Client Side JavaScript Libraries
  • 4. Client Side JavaScript Libraries HTMP, JSP Pages, JavaScript Event Handlers UI Widgets & Components Remoting Abstraction Layer JavaScript, DOM Utilities XMLHttpRequest iFrame 4
  • 5. Characteristics of Client Side JavaScript Libraries • Server side technology agnostic > The server side technology can be Java EE, .Net, PHP, Ruby on Rails, etc. • You can use them in combination in a single app > You might want to use widgets and JavaScript utilities from multiple sources 5
  • 6. Technical Reasons for using Client- side JavaScript Libraries • Handles remote asynch. communication (remoting) > Hides low-level XMLHttpRequest operation • Handles browser incompatibilities > No need to clutter your code with if/else's • Handles graceful degradation > Uses IFrame if the browser does not support XMLHttpRequest • Provides page navigation hooks over Ajax > Back and forward buttons > Bookmarking 6
  • 7. Technical Reasons for using Client- side JavaScript Libraries • Provides ready-to-use widgets > Tree, Calendar, Textfield, Button, Split panes, Fisheye, etc. • Provides easy-to-use DOM utility > Easier to use than original DOM APIs • Provides useful JavaScript utilities > Example: Table management, Timer, etc • Provides error handling hook > Easier to add error handler • Provides more flexible event handling > DOM node based, Function call based, AOP style 7
  • 8. Technical Reasons for using Client- side JavaScript Libraries • Provides advanced UI features > Animation > Drag and drop > Fade out and Fade in • Generally encourages OO programming style > Helps you write better JavaScript code 8
  • 9. Business Reasons for using Client- side JavaScript Libraries • Proven in the market > Generally higher quality than your own • Established developer/user communities > Community keeps improving/adding features > Easy to get help from community forums • Easy to use > It is just a matter of having them in the root directory of your Web application or providing URL location • Tool support > IDE's will support them in time 9
  • 10. Client-side JavaScript Libraries • DOJO Toolkit > Most prominent and comprehensive > Gaining a leadership in this space > Major industry support (Sun, IBM) > http://dojotoolkit.com/ • Prototype > Used by other toolkit libaries > http://prototype.conio.net/ 10
  • 11. Client-side JavaScript Libraries • Script.aculo.us > Built on Prototype > Nice set of visual effects and controls > http://script.aculo.us/ • Rico > Built on Prototype > Rich AJAX components and effects > http://openrico.org/ • DHTML Goodies > Various DHTML and AJAX scripts > http://www.dhtmlgoodies.com/ 11
  • 12. Demo #1: Running Dojo Toolkit http://www.javapassion.com/han dsonlabs/4260_ajaxdojointro.zip 12
  • 13. Dojo Demo Scenario • Build and run “input validation” Ajax application using Dojo toolkit's dojo.io.bind() > Forward, backward capabilities • Build and run “Fisheye application” using dojo.event.connect() > Event model 13
  • 14. RMI-like Remoting via Proxy
  • 15. RMI-like Remoting via Proxy JavaScript RMI like call Java Method Proxy Skeleton Remote Abstraction Layer Framework runtime HTTP Get/Post XMLHttpRequest iFrame 15
  • 16. Characteristics of “RMI-like Remoting via Proxy” Framework • Similar to general RPC communication schemes > Stub and Skeleton based architecture • Allows RMI like syntax in the client side JavaScript code > ex) Chat.addMessage(text, gotMessages); • Framework > Generates client stub (Proxy), which is a JavaScript code > Provides server side runtime as well • Client stub (Proxy) handles marshalling of parameters and return value 16
  • 17. Remoting via Proxy Implementations • Direct Web Remoting (DWR) > Designed specifically for Java application at the backend > http://getahead.ltd.uk/dwr • JSON-RPC > Lightweight remote procedure call protocol similar to XML- RPC > http://json-rpc.org/ > There are language-specific implementations > JSON-RPC-Java > http://oss.metaparadigm.com/jsonrpc/ 17
  • 18. Demo: Building and running DWR Application http://www.javapassion.com/han dsonlabs/4265_ajaxdwrintro.zip 18
  • 19. DWR Demo Scenario • Build and run Chat application > Test with 2 browser clients • Show test feature of DWR > http://localhost:8084/dwr.examples.chat/dwr • Show Java class and its methods that are exposed > Chat has two methods – getMessages() and addMessage() • Show dwr.xml configuration file > Specifies Chat class for remoting • Show client-side JavaScript code > RMI-like syntax (application-level) > Asynchronous callback 19
  • 20. Dynamic Faces (DynaFaces)
  • 21. What is Dynamic Faces? • Expose the JSF Lifecycle to the browser via Ajax > Allow operating on the entire view, or a part of it > Allow controlling the Lifecycle via Ajax > Allow the server to change appearance and behavior of current page
  • 22. The Importance of the Lifecycle
  • 23. Views and Partial Views
  • 24. Views and Partial Views
  • 25. DynaFaces — Usage Patterns • Page Author > Use AJAX enabled components Increasing Complexity Increasing Complexity > Use AjaxZone tag to AJAXify regions of the page > Use provided JavaScript library to AJAXify page elements and components • Component Author > Use provided JavaScript library in custom components > Write your own JavaScript that talks directly to the HTTP protocol and the XML application defined by DynaFaces
  • 26. DynaFaces Usage Patterns: AjaxZones • The easiest way to AJAXify an existing application • Demarcate one or more AJAX zones within a page • Zones will refresh via 2. See update here AJAX, without full page refresh. causes reaction in another zone Action in one zone 1. Click something in here
  • 27. Demo: Building and running jMaki Application http://www.javapassion.com/han dsonlabs/4144_jsfdynafaces.zip 27
  • 28. Wrapper Technology: jMaki
  • 29. Motivations for jMaki • You want to leverage widgets from existing and future AJAX toolkits and frameworks in reusable fashion > Dojo, Scriptaculus, Yahoo UI Widgets and DHTML Goodies • Today, there are multiple AJAX frameworks with their own widgets and with different syntax > There is a need for a common programming model for using widgets from multiple AJAX toolkits and frameworks • JavaScript coding is too alien to many Java EE developers > There is a need for using JavaScript widgets using Java EE syntax and programming model (JSP custom tags) 29
  • 30. What is jMaki? • JavaScript Wrapper framework for the Java platform > The name, jMaki, was derived from "j," for JavaScript, and "Maki," a Japanese word for wrap • Allows developers to take widgets from many popular AJAX toolkits and frameworks, and wrap them into a JSP or JSF tag > Provides a common programming model to developers > Leverages the widgets from popular frameworks > JSP and JSF tags are familiar to Java EE application developers • Publish and subscribe event model 30
  • 31. Wrapper Technology Implementations • jMaki > https://ajax.dev.java.net/ 31
  • 32. Demo: Building and running jMaki Application http://www.javapassion.com/han dsonlabs/4270_ajaxjmakiintro.zip 32
  • 33. jMaki Demo Scenario • Build a simple jMaki application using widgets from various sources > Using a pre-defined layout 33
  • 34. Java Code To JavaScript/HTML Translator: GWT
  • 35. What is GWT? • Java software development framework that makes writing AJAX applications easy • Let you develop and debug AJAX applications in the Java language using the Java development tools of your choice > NetBeans or Eclipse • Provides Java-to-JavaScript compiler and a special web browser that helps you debug your GWT applications > When you deploy your application to production, the compiler translates your Java application to browser-compliant JavaScript and HTML 35
  • 36. Demo: Building and running GWT Application http://www.javapassion.com/han dsonlabs/4275_ajaxgwtintro.zip 36
  • 37. GWT Demo Scenario • Build and run a simple HelloWorld GWT application > Write the code in Java programming language > Run it in both hosted and web mode • Open “KitchenSink” NetBeans GWT project and run > Play around various widgets provided by the GWT > Backward and forward button behavior • Show how to invoke JavaScript code from Java code and vice versa 37
  • 38. Ajax and Portal
  • 39. AJAX – Desktop Functional Overview • Asynchronous loading of portlets • Delegates aggregation to the client • AJAXified container controls such as refresh, maximize, minimize, and remove • Drag and drop positioning of channels • Support for multiple page layouts • Seamlessly support AJAX portlets developed in NetBeans, using the NetBeans plugin 39
  • 40. High Level Architecture 40
  • 41. High Level Architecture Portal Browser AJAXTableContainerProvider DOJO Javascript Library ￧ HTML sunportal.AJAXTableContainer AJAXEditContainerProvider JSON sunportal.AJAXChannel sunportal.AJAXRequest JSON: Javascript Object Notation (www.json.org) 41
  • 42. Client Side Library Design PagePreferences sunportal.AJAXTableContainer sunportal.AJAXChannel JSON container model JSON channel model sunportal.AJAXRequest • sunportal.AJAXTableContainer uses Dojo DOM API to construct portal page from the JSON container model • All requests made using sunportal.AJAXRequest which uses Dojo I/O API • Event system uses XHR Callback model to handle server responses 42
  • 43. Desktop Server-Side Design • Desktop acts as a content service for the AJAX client. > Requests are made via standard desktop URLs (e.g. provider=foobar&action=content) > Responses are either: > HTML content > JSON messages • Desktop defers aggregating the content to the client (container model). 43
  • 44. Desktop Server Design – Get Content 44
  • 45. Mashup Portlet • Uses Yahoo Maps API • Consumes GeoRSS feeds > http://earthquake.usgs.gov/eqcenter/catalogs/eqs1day- M2.5.xml > Sun offices around the world > http://jaisuri.googlepages.com/offices.xml • Tutorial available at developers.sun.com/portalserver/reference/techart/mashups.html OR google for “mashup jai suri” 45
  • 46. Google Gadgets • Gadgets rendered by Google's gadget server • Google does not syndicate its gadgets for RSS feeds, Google calendar and Gmail • GoogleGadgetPortlet allows rendering and editing of Google gadgets from a JSR 168/JSR 286 Portlet Container • GadgetCreateContainer allows addition of gadgets to the page 46
  • 47. Building Portlets with Ajax Behavior
  • 48. Demo: Building and running Porlet Application with Ajax behavior http://www.javapassion.com/han dsonlabs/4294_ajaxportlet.zip 48
  • 49. Portlets with Ajax Demo Scenario • Build Portlet that has Ajax behavior • Show two different windows of the same portlet perform Ajax operations independently from each other 49
  • 50. Phobos (MVC Server Side Scripting for the Java Platform)
  • 51. What is Phobos? • Lightweight,scripting-friendly web application environment > Develop Web applications using Scripting language at both client and server side • Runs on the Java™ platform > Can call Java APIs from Script • Complementary to existing technologies > Leverage all Java EE stack • Supports multiple scripting languages > Based on JSR 223 > Current focus is on Javascript 51
  • 52. It is a Web Application Framework • Entirely written in Javascript • MVC-based > Model – provides data > View - presentation > Controller – handles HTTP request & dispatching • Configurable,Rails-like URL mapping > /@controller/@action • Views using templates and layouts > Embedded Javascript (.ejs) > Freemarker template engine 52
  • 53. Target Audience • Web application developers • With a need for agility of scripting • Feeling pain from compile/deploy cycle (especially true with Ajax) • Glueing things together • With investment in Java • Libraries, EE servers/resources, Interop • Seeking proven, high-performance deployment platform
  • 54. Libraries • In general: all that Java EE supports • Templating using FreeMarker • Persistence using JPA • REST clients • JSF/facelets as views • Logging, Tango, etc. • JPA CRUD generator • Intriguing:-) : Dojo on the Server side
  • 55. Demo: Building and running Phobos Application https://phobos.dev.java.net/scree ncasts/Phobos/Phobos.html 55
  • 56. Phobos Demo Scenario • Build and run a simple Phobos application • Show MVC architecture • Show URL mapping • Create and change model • JavaScript source-code level debugging • Access JPA from Scripting code 56
  • 57. Web Application Frameworks with AJAX Extension
  • 58. Web Application Framework with Ajax Extension • Existing Web Application Frameworks add AJAX functionality > Minimum or no requirement of JavaScript coding • Uses JavaScript client library internally 58
  • 59. “Web App Frameworks with AJAX Extension” Implementations • Shale > http://struts.apache.org/struts-shale/ • Echo2 > http://www.nextapp.com/platform/echo2/echo/ • Wicket > http://wicket.sourceforge.net/ • Ruby on Rails > http://www.rubyonrails.org/ 59
  • 60. Demo: Building and running Ajax enabled Shale Application http://www.javapassion.com/han dsonlabs/4281_ajaxshale.zip 60
  • 61. AJAX-Enabled JSF Components
  • 62. AJAX-enabled JSF Components • AJAX-enabled JSF components hides all the complexity of AJAX programming > Page author does not need to know JavaScript > The burden is shifted to component developers • Leverages drag-and-drop Web application development model of JSF through an IDE > You can drag and drop AJAX-enabled JSF components within Sun Java Studio Creator 2 or NetBeans Visual Web Pack (and other JSF-aware IDE's) to build AJAX applications • JSF components are reusable > More AJAX-enabled JSF components are being built by the community 62
  • 63. Implementations • Blueprint AJAX-enabled JSF components (open- source) > http://developers.sun.com/ajax/componentscatalog.jsp > https://bpcatalog.dev.java.net/ajax/jsf-ajax/ • ajax4jsf (open-source) > Can add AJAX capability to existing applications > https://ajax4jsf.dev.java.net/ • ICEfaces (ICESoft) - commercial > http://www.icesoft.com/products/icefaces.html • DynaFaces (development on-going) > https://jsf-extensions.dev.java.net/nonav/mvn/slides.html 63
  • 64. Demo: Building Ajax Application using Ajax- enabled JSF Components http://www.netbeans.org/kb/55/v wp-ajaxprogressbar.html 64
  • 65. NetBeans VWP Demo Scenario • Build a Web application by drag-and-dropping Ajax enabled JSF component > Auto-complete • Modify the server side logic to enable the Ajax behavior of the component 65
  • 66. So... What Should I Use?
  • 67. So What Should I Use? Assuming You are using Java Tech. • On the UI side > Use AJAX-enabled JSF components whenever possible using an JSF-enabled IDE such as Visual Web Pack of NetBeans > If you are not ready to commit yourself to JSF component solutions yet, use jMaki > If you want to have total control on the client side JavaScript coding, use Dojo toolkit > If you already have Swing apps that you want to expose as AJAX-fied Web apps or if you do not want to deal with JavaScript coding, use GWT 67
  • 68. So What Should I Use? Assuming You are using Java Tech. • On the business logic side > If you already have Java EE business logic that you want to be exposed as RMI calls on the client with AJAX behavior, use DWR > If you are already using a particular Web application framework for building majority of your web application and the framework has AJAX extension, use it 68
  • 69. So What Should I Use? If you want use Scripting Language as a Main enabler • Use Phobos > Leverage agile development of scripting > Leverage the power of Java platform > MVC based > Multiple scripting languages 69
  • 70. Ajax Frameworks and Toolkits Sang Shin Java Technology Evangelist Sun Microsystems, Inc. 70