Ajax Frameworks Ajax Frameworks and Toolkits and Toolkits

  • 1,360 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,360
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
61
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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