SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Interoperable Ajax Tools and
Mashups

 Jon Ferraiolo
 IBM and OpenAjax Alliance
 October 20, 2008
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      2
The Ajax explosion (2005-2007)
                 Huge amount of hype
                 ~200 Ajax toolkits appear almost instantly
                        Microsoft Atlas (now called ASP.NET AJAX)
                           • Helps contribute to legitimacy
                        Several other major “proprietary” Ajax frameworks
                           • Adobe/Spry, Backbase, ICEsoft, Nexaweb, Sun/jMaki, TIBCO, …
                        Several major open source projects
                           • Prototype/Scriptaculous, Dojo, Yahoo, DWR, Google GWT, jQuery,…
                        Why so many so quickly? Simply rebrand DHTML to Ajax



Interoperable Ajax Tools and Mashups                                                       3
Why OpenAjax Alliance?
                 A rich but fragile ecosystem
                        Interoperability shortcomings
                        Educational/marketing shortcomings
                        Dependence on browsers companies for technical advances
                 Ajax vendors motivated to work together (united we stand,
                 divided we fall)
                 Ajax technology layer not addressed by other industry
                 groups
                                              HTML app     Ajax app

                                                         Ajax toolkit(s)

                                                     Browser


Interoperable Ajax Tools and Mashups                                              4
OpenAjax Alliance Formation
                 Kick-off meeting May 2006
                        30 companies
                        Objectives, process, scope, and initial tasks
                 Scope of activities
                        Interoperability
                        Educational
                        Help shape the future of the Ajax ecosystem
                 What we produce
                        Documents (e.g., specs)
                        Open source (mostly JavaScript)
Interoperable Ajax Tools and Mashups                                    5
OpenAjax Alliance Areas of Focus
                 Interoperability
                        Ajax runtime libraries (OpenAjax Hub, OpenAjax Registry)
                        Ajax IDEs (OpenAjax Metadata)
                        Mashups and widgets (Hub 1.1, Metadata)
                        Mobile Ajax (Mobile Device APIs)
                 Marketing, education and evangelism
                        7 White papers
                 Future browsers
                        Browser wishlist initiative


Interoperable Ajax Tools and Mashups                                               6
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      7
What should be possible?
                 Intelligent code assist for APIs in Ajax libraries
                        What Aptana does with APIs
                 Visual design using widgets from Ajax libraries
                        What jMaki/Netbeans does with widgets
                 So what’s the problem?
                        NxM problem (~200 Ajax toolkits, ~15 Ajax IDEs)
                        Each toolkit documents APIs and widgets their own way




Interoperable Ajax Tools and Mashups                                            8
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      9
Solution: OpenAjax Metadata
                 OpenAjax Metadata for JavaScript APIs
                        Embraced an industry leader (Aptana ScriptDoc XML)
                        Standard stuff: <class>, <namespace>, <method>, <parameter>, etc.
                        Open source
                          • JSDoc to OpenAjax Metadata (extension to JSDoc Toolkit)
                          • Aptana ScriptDoc XML to OpenAjax Metadata (and probably vice versa)
                 OpenAjax Metadata for Widgets
                        Embraced an industry leader (Adobe Dreamweaver submission)
                        Standard stuff: <widget>, <content>, <require>, <author>, <icon>, etc.
                        Markup designed for strong alignment with Google Gadgets
                        Open source
                          • Sample widgets
                          • Reference implementation of a simple mashup editor

Interoperable Ajax Tools and Mashups                                                              10
OpenAjax Metadata for JavaScript APIs
           Sample JavaScript with JSDoc
                     /**
                      * Processes a method found in the JSDoc data structure.
                      * Produces an OpenAjax 'method' element.
                      * @param {object} method JSDoc object that holds info on this method
                      * @param {number} indent Current indent level for pretty printing
                      */
                     this.method_element = function(method, indent) { … }

           Corresponding OpenAjax Metadata
                     <method name=quot;method_elementquot;>
                       <description>
                          Processes a method found in the JSDoc data structure.
                          Produces an OpenAjax 'method' element.
                       </description>
                       <parameter name=quot;methodquot; datatype=quot;Objectquot; usage=quot;requiredquot;>
                         <description>JSDoc object that holds info on method</description>
                       </parameter>
                       <parameter name=quot;indentquot; datatype=quot;Numberquot; usage=quot;requiredquot;>
                         <description>Current indent level for pretty printing</description>
                       </parameter>
                     </method>


Interoperable Ajax Tools and Mashups                                                           11
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
                        style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
                ]]>
             </content>
             <javascript location=quot;atEndquot;>
                    this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   12
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
              <widget> is the root element. name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;libraryquot;
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
                        style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
                ]]>
             </content>
             <javascript location=quot;atEndquot;>
                    this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   13
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
               <require> elements specifydatatype='Date' publish='true' topic='date'/>
                <property name='date' the various resources that the
              </properties>to run successfully
               widget needs
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
                        style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
                ]]>
             </content>
             <javascript location=quot;atEndquot;>
                    this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   14
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                      sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
               <property> elements specify the list of widget parameters
                <![CDATA[
               that should ID=quot;__WID___calendarquot; dialogs.
                   <input appear in property editor class='tundra' lang=quot;en-usquot;
                         style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
               You can say whether a given property should participate
                ]]>
               in cross-widget message via ‘publish’ and ‘subscribe’
             </content>
             <javascript (Also, there is a <topic> element)
               attributes. location=quot;atEndquot;>
                     this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   15
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
                         style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
                ]]>
             </content>
              <content> element contains the HTML snippet for the
             <javascript location=quot;atEndquot;>
              visualthis.init(); widget.
                     rendering of the
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   16
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
              <javascript> elements are mainly for initialization dojoType=quot;dijit._Calendarquot;/>
                         style=quot;background-color:#f5f5f5quot; logic.
                ]]>
              The “this” object will be set to the widget instance.
             </content>
             <javascript location=quot;atEndquot;>
                    this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                        17
Standards improve industry efficiency and
                          unleash innovation
                 Ajax libraries can produce one format (OAM) for their APIs
                        Their library will now be compatible with many IDEs
                        If the library uses JSDoc, then auto-generation of OpenAjax Metadata
                        We are investigating auto-generation for other inline documentation
                        formats, such as what Dojo uses
                 Ajax IDEs can consume one format (OAM)
                        That IDE will now support dozens of Ajax libraries
                 By unifying the industry around a single XML file, IDEs can
                 now innovate and compete in other areas




Interoperable Ajax Tools and Mashups                                                           18
IDE WG Participants
                 Aptana Studio (chair of the WG)
                 Adobe Dreamweaver (Spry toolkit)
                 Microsoft Visual Studio (ASP.NET AJAX toolkit)
                 Eclipse ATF and JSDT
                 Sun jMaki/Netbeans
                 TIBCO (GI toolkit)
                 OpenLink SW (OAT framework)


Interoperable Ajax Tools and Mashups                              19
Current status
                 Specification
                        We have a complete draft spec for OpenAjax Metadata
                        Now in the implementation phase (see 2008 InteropFest, subsequent
                        slide)
                 Schema (in RelaxNG) and validator
                 Open source implementation
                        OpenAjax’s open source mashup tool implements the widget format
                        Eclipse JSDT has implemented the JavaScript API features
                        Version 0.1 of JSDoc to OpenAjax Metadata is available
                 Commercial implementation
                        Adobe Dreamweaver is implementing the widget features in the spec
                        Aptana Studio is implementing the JavaScript APIs features


Interoperable Ajax Tools and Mashups                                                        20
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      21
Mashups – the self-service business
                               pattern




Interoperable Ajax Tools and Mashups                    22
Business value of mashups
                                            • Faster, cheaper delivery of applications
                                              • Save time and money through reuse and
                                                  lightweight integration techniques
                                              •   Lower skill set needed to assembly new
                                                  applications
                                            • Support innovation and new business
                                             opportunities
                                              • Users empowered to innovate and explore
                                            • Gain valuable insights
                                              • Due to remixing enterprise and web
                                                  information
                                            • Better align IT and business
                                              • Do-it-yourself IT will be expected by
                                                  Facebook generation
                                            • Extend reach and value of SOA
                                              • Service reuse illuminates the business value
                                                  of SOA
Interoperable Ajax Tools and Mashups                                                       23
Mashup software

                                            • Mashup tools
                                               • Widget and feed discovery
                                               • Application assembly
                                               • Instant deployment

                                            • Widgets
                                               • Pre-packaged, remixable mini-applications
                                               • Usually tied to a back-end web service
                                                  • Sometimes leveraging previous
                                                    investment in SOA
                                              •   Public or company-private
                                              •   Key enabler of the long tail


Interoperable Ajax Tools and Mashups                                                    24
Widget innovation – no shortage




Interoperable Ajax Tools and Mashups                    25
Industry challenges
                 Interoperability
                        Dozens of proprietary technologies
                        Good news: many use the “Web Runtime” (i.e., Ajax)!
                        Bad news: even when using the Web Runtime, widgets
                        are not interoperable




                 Security
                        The power of mashups – comes largely from discovering
                        and integrating great widgets from 3rd parties
                        But 3rd party widgets might be malicious
Interoperable Ajax Tools and Mashups                                            26
Security vulnerabilities
           Web browser
           URL: http://example.com/mashup_builder/my_mashup1

              Widget-C                                   Widget-E                                       (trusted)

                             Communicates in the                                                    Company server
                             background with one
                             of the company’s web
                                     servers                                                          (untrusted)
                                                                    Communicates in the
                                                                     background with a               Public server
                                                                     public web server
                                                     Message
                                                      passing
              Widget-A                                between
                                                                    Communicates in the               (untrusted)
                                                    the widgets
                                                                     background with a               Public server
                                                                     public web server




                                                                                            What if one of the
                                                                                          widgets is malicious?



Interoperable Ajax Tools and Mashups                                                                                 27
OpenAjax – Addressing the challenges
           Web browser
           URL: http://example.com/mashup_builder/my_mashup1

                       Widget-C                                Widget-E                                 (trusted)

                           Communicates in the                                                      Company server
     (1) OpenAjax Hub 1.1
                     background with one
     provides framework for
                     of the company’s web
    loading/isolating widgetsservers                                                                  (untrusted)
      and secure message                                          Communicates in the
          management                                               background with a                 Public server
                                                                   public web server
                                                  Message
                                                   passing
               Widget-A
 (4) Open source mini-                             between
                                                                  Communicates in the                 (untrusted)
  mashup application                             the widgets
                                                                   background with a                 Public server
 shows how to use all of
                                                                   public web server
   these technologies
                                                                (2) OpenAjax Metadata
                                                                   defines an industry    (3) Open source transcoders
                                                                standard widget wrapper       convert popular existing
                                                                         format           proprietary gadget formats into
                                                                                                OpenAjax Metadata


Interoperable Ajax Tools and Mashups                                                                                   28
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      29
OpenAjax Hub 1.0
                 What is it?
                        Small bit of standard JavaScript (< 3K after compaction)
                        Enables multiple Ajax runtimes to work together
                 Key use case: Developer mashups
                        Where a professional developer mashes up components
                        using HTML+JavaScript+…
                 Version 1.0 features
                        Ajax library registration
                           • OpenAjax.hub.registerLibrary()
                        Simple publish/subscribe engine (the pub sub hub)
                           • OpenAjax.hub.publish(topicName, payload)
                           • OpenAjax.hub.subscribe(topicName, callbackFunction)
Interoperable Ajax Tools and Mashups                                               30
OpenAjax Hub 1.0 – an example

    Assume multiple Ajax
                                                OpenAjax Hub 1.0 Example
    toolkits:                                   This is a mockup of a Web
                                                application that uses UI controls
    • UTILS.js – Various utils, inc. XHR        from multiple Ajax toolkits.
    • CALENDAR.js – Calendar control
    • DATAGRID.js – Powerful tables
    • CHARTS.js – Charting utilities
            The visual controls need to react
            to new server data and to each
            other and update their views
            appropriately.




Interoperable Ajax Tools and Mashups                                                31
Example – under the hood
                <html>
                  <head>
                    ...
                    <script type=quot;text/javascriptquot; src=quot;OpenAjax.jsquot;/>
                    <script type=quot;text/javascriptquot; src=quot;UTILS.jsquot;/>
                    <script type=quot;text/javascriptquot; src=quot;CALENDAR.jsquot;/>
                    <script type=quot;text/javascriptquot; src=quot;CHARTS.jsquot;/>
                    <script type=quot;text/javascriptquot; src=quot;DATAGRID.jsquot;/>
                    <script type=quot;text/javascriptquot;>
                      ...
                      function MyCalendarCallback(...) {
                        OpenAjax.hub.publish(quot;myapp.newdatequot;, newdate);
                      }
                      ...
                      function NewDateCallback(eventname, publisherData, subscriberData) {
                        ...update the given visualization widget...
                      }
                      OpenAjax.hub.subscribe(quot;myapp.newdatequot;, NewDateCallback);
                      ...
                    </script>
                  </head>
                  ...




Interoperable Ajax Tools and Mashups                                                         32
OpenAjax InteropFest
             Objectives:
                    Allows OpenAjax Alliance to verify that OpenAjax Hub is reliable, performant, and suitable
                    Allows members to verify that they are OpenAjax Conformant

    Jan-March 2007                                               July-Sept 2007




    12 toolkits participated                                     14 organizations, 20 toolkits participated
    http://www.openajax.org/member/wiki/InteropFest_2007_March   http://www.openajax.org/member/wiki/InteropFest_1.0

Interoperable Ajax Tools and Mashups                                                                                   33
InteropFest Demos
       For people who are just looking at the slide deck, some
         InteropFest demos can be found at:
                    http://www.openajax.org/member/wiki/InteropFest_1.0
                               Participating organizations         Participating toolkits
                            24SevenOffice                    AjaxEngine
                            Apache XAP                       Apache XAP
                            Dojo Foundation                  Dojo Toolkit
                            IBM                              Ext
                            ILOG                             ILOG JViews
                            DWR/Getahead                     IT Mill Toolkit
                            IT Mill                          jMaki
                            Lightstreamer                    JQuery
                            Microsoft                        Lightstreamer
                            Nexaweb                          Microsoft Ajax Library
                            OpenLink SW                      Nexaweb Ajax Client
                            Open Spot                        OAT: OpenLink AJAX Toolkit
                            Software AG                      OpenSpot CalcDesk
                            Sun Microsystems                 Prototype
                            TIBCO                            script.aculo.us
                                                             Software AG's webMethods/CAF
                                                             TIBCO General Interface
                                                             24SevenOffice Vili
                                                             YUI
Interoperable Ajax Tools and Mashups                                                        34
OpenAjax Hub 1.0
                 Status
                        Approved
                 Specification
                        http://www.openajax.org/member/wiki/OpenAjax_Hub_1.0_Specification

                 Reference implementation at SourceForge
                        http://openajaxallianc.sourceforge.net




Interoperable Ajax Tools and Mashups                                                         35
OpenAjax Hub 1.1 – New features

                 OpenAjax Hub 1.0
                        Key use case: Developer mashups
                        Key technology: pub/sub within a single browser frame
                 OpenAjax Hub 1.1
                        Key use case: Secure end-user mashups
                        Key technologies
                           • Widget isolation (for security)
                           • Pub/sub across browser frames
                           • Security manager mediates all cross-widget messages




Interoperable Ajax Tools and Mashups                                               36
Security vulnerabilities
           Web browser
           URL: http://example.com/mashup_builder/my_mashup1

              Widget-C                                   Widget-E                                       (trusted)

                             Communicates in the                                                    Company server
                             background with one
                             of the company’s web
                                     servers                                                          (untrusted)
                                                                    Communicates in the
                                                                     background with a               Public server
                                                                     public web server
                                                     Message
                                                      passing
              Widget-A                                between
                                                                    Communicates in the               (untrusted)
                                                    the widgets
                                                                     background with a               Public server
                                                                     public web server




                                                                                            What if one of the
                                                                                          widgets is malicious?



Interoperable Ajax Tools and Mashups                                                                                 37
Browser Security
                 Browser same-origin policy
                        IFRAMEs isolation - IFRAMEs from different domains
                        (and subdomains) cannot communicate with each other
                        via DOM bridging or JavaScript bridging
                        Implemented in all popular Web browsers today
                 Today’s tricks for cross-domain mashups
                        Dynamic SCRIPT tag to another server
                        Server-side proxies
                        “IFrame proxy” (window.location fragment identifier)
                        New browsers: W3C postMessage() and Access Control

Interoperable Ajax Tools and Mashups                                           38
SMash
                 SMash stands for “Secure Mashups”
                        Secure handling of 3rd party mashup components
                        Runs in today’s browsers (without plugins)
                 Designed and implemented at IBM™ Research (beginning
                 of 2007)
                        Open-sourced (openajaxallianc.sourceforge.net) in August 2007
                        Research Paper describing SMash in WWW 2008 Conference
                 High-level APIs, independent of implementation
                 technology
                        Fragment communication, HTML5 postMessage, Java™ platform,
                        Flash etc.
                        Will still work when browsers add native support for secure cross-frame
                        messaging

Interoperable Ajax Tools and Mashups                                                          39
OpenAjax Hub 1.1:
                            Plug-in communication providers
                                                                  Widget 1
                                                                   Hub 1.1 Code


                             Mashup assembly tool                  FIM provider



                                       Hub 1.1 Code
                                                                  Widget 2
                                       SPI
                                                                   Hub 1.1 Code
             smash (FIM) provider               inline provider
                                                                  inline provider

                            HTML5 postMessage provider
                                                                  Widget 3
                                                                   Hub 1.1 Code


                                                                  HTML5 provider




Interoperable Ajax Tools and Mashups                                                40
OpenAjax Hub 1.1: Simple example
                      Web browser
                     URL:      http://example.com/mashup_builder/my_mashup1

                      Mashup container                       Widget-C                             Widget-E
                                                                     Broadcast an event using
                                                                     connHandle.publish()




                       Hub 1.1 (Managed Hub)                            Hub 1.1                         Hub 1.1
                                inline provider                     inline provider                 smash provider

                            smash provider                   Widget-A
                                                                  Subscribe to a topic and register a
                         Security                                 callback function using
                         manager                                  connHandle.subscribe()

                                                                                       Invoke the callback
                                                                                       function

                                                                                   Hub 1.1
                                                                              smash provider



Interoperable Ajax Tools and Mashups                                                                                 41
OpenAjax Hub 1.1: the steps
                      Web browser
                     URL:         http://example.com/mashup_builder/my_mashup1

                      Mashup container                              Widget-C                                Widget-E
                          1                2      Load the
                     Initialize and             widgets used              4 Broadcast an event using
                                                                             connHandle.publish()
                     create a                  in the mashup
                     “Managed Hub”


                       Hub 1.1 (Managed Hub)
                                       7                                      5 Hub 1.1                           Hub 1.1
                      8           inline provider              6            inline provider                  smash provider
                              9
                              smash provider                        Widget-A
                                                                        3 Subscribe to a topic and register a
                          Security                                         callback function using
                          manager                                          connHandle.subscribe()
                                                                   10
                                                                                              12 Invoke the callback
                                                                                                 function

                                                                                              Hub 1.1
                                                                                         11
                                                                                       smash provider


Interoperable Ajax Tools and Mashups                                                                                          42
Hub 1.1 status
                 Specification
                        First draft spec – far along
                        http://www.openajax.org/member/wiki/OpenAjax_Hub_1.
                        1_Specification
                 Reference implementation at SourceForge
                        First implementation (far along)
                        http://openajaxallianc.sourceforge.net
                 Timeline for Hub 1.1
                        August-October 2008: 2008 InteropFest
                        End of 2008: Finalize and approve
Interoperable Ajax Tools and Mashups                                      43
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      44
Widget innovation – no shortage




Interoperable Ajax Tools and Mashups                    45
OpenAjax Metadata
                 Mashup shortcomings today
                        Widget interoperability
                         • Many widget formats (Google, Yahoo, Apple, Microsoft…)
                         • Widget developers usually have to build different versions of their widgets
                           to work with different containers
                        Security
                         • No comprehensive, standards-based approach to widget isolation
                 OpenAjax Metadata addresses these two shortcomings
                        Widget interoperability
                         • OpenAjax Metadata defines industry standard XML for mashup widgets
                         • Very close to Google Gadgets (easy to transcode with XSLT)
                        Security
                         • OpenAjax Metadata designed to work with OpenAjax Hub 1.1 (which
                           provides a secure mashup runtime)

Interoperable Ajax Tools and Mashups                                                                 46
OpenAjax Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                     sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
                <![CDATA[
                  <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot;
                        style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
                ]]>
             </content>
             <javascript location=quot;atEndquot;>
                    this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   47
OpenAjax Metadata for Widgets
            <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot;
                      sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;>
              <requires>
                <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/>
                <require type=quot;javascriptquot; src=quot;calendar.jsquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/>
                <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/>
                <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/>
              </requires>
              <properties>
                <property name='date' datatype='Date' publish='true' topic='date'/>
              </properties>
              <content type='fragment'>
               <property> elements specify the list of widget parameters
                <![CDATA[
               that should ID=quot;__WID___calendarquot; dialogs.
                   <input appear in property editor class='tundra' lang=quot;en-usquot;
                         style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/>
               You can say whether a given property should participate
                ]]>
               in cross-widget message via ‘publish’ and ‘subscribe’
             </content>
             <javascript (Also, there is a <topic> element)
               attributes. location=quot;atEndquot;>
                     this.init();
             </javascript>
           </widget>
Interoperable Ajax Tools and Mashups                                                   48
Widget Isolation and Security
                 Widget content is either a stand-alone HTML snippet (a
                 DIV) or an entire HTML page
                 Container manages the widget
                        Widget loading and unloading
                        Widget isolation (e.g., widget in its own IFRAME)
                        Inter-widget communication – container provides connection handle
                          • connHandle.publish()
                          • connHandle.subscribe()
                 Container implements pub/sub security
                        Container includes a “policy manager” (who can pub/sub to what)
                        Widget is oblivious to message passing technology
                         • fragment identifiers, postMessage, window.Name or whatever


Interoperable Ajax Tools and Mashups                                                        49
OpenAjax Metadata and Google Gadgets
                 Google Gadgets
                        The gorilla is the “Web Widget” space (tens of thousands of
                        Gadgets)
                        Solid technology
                 OpenAjax Metadata strategy
                        Match Google Gadgets wherever possible
                        Open source XSLT transcoders to/from Google Gadgets




Interoperable Ajax Tools and Mashups                                              50
OpenAjax Metadata status
                 Specification
                        First draft spec - far along
                        http://www.openajax.org/member/wiki/OpenAjax_Metadata_Specifica
                        tion

                 Open source
                        Mini mashup application
                        Includes support for Google Gadgets (via transcoder)
                 Timeline for OpenAjax Metadata
                        August-October 2008: 2008 InteropFest
                        Fall 2008: Finalize and approve

Interoperable Ajax Tools and Mashups                                                  51
OpenAjax – Addressing the challenges
           Web browser
           URL: http://example.com/mashup_builder/my_mashup1

                       Widget-C                                Widget-E                                 (trusted)

                           Communicates in the                                                      Company server
     (1) OpenAjax Hub 1.1
                     background with one
     provides framework for
                     of the company’s web
    loading/isolating widgetsservers                                                                  (untrusted)
      and secure message                                          Communicates in the
          management                                               background with a                 Public server
                                                                   public web server
                                                  Message
                                                   passing
               Widget-A
 (4) Open source mini-                             between
                                                                  Communicates in the                 (untrusted)
  mashup application                             the widgets
                                                                   background with a                 Public server
 shows how to use all of
                                                                   public web server
   these technologies
                                                                (2) OpenAjax Metadata
                                                                   defines an industry    (3) Open source transcoders
                                                                standard widget wrapper       convert popular existing
                                                                         format           proprietary gadget formats into
                                                                                                OpenAjax Metadata


Interoperable Ajax Tools and Mashups                                                                                   52
OpenAjax Mashups in action




Interoperable Ajax Tools and Mashups                     53
2008 InteropFest
     Objectives
          Test OpenAjax Metadata
          interoperability across
          multiple vendors
          Test OpenAjax Hub 1.1 for
          reliability, performance, and
          suitability
     When
          August – October, 2008




                                        http://www.openajax.org/member/wiki/2008_InteropFest
                                        http://www.openajax.org/2008_InteropFest/mashupapp

Interoperable Ajax Tools and Mashups                                                           54
Agenda
                 Introducing OpenAjax Alliance
                 Ajax IDEs
                 OpenAjax Metadata (for Ajax Libraries)
                 Mashups
                 OpenAjax Hub 1.1
                 OpenAjax Metadata (for Widgets)
                 Summary
Interoperable Ajax Tools and Mashups                      55
Summary
                 Ajax IDEs aren’t realizing their potential yet
                        Inteoperability challenges
                 Mashups aren’t realizing their potential yet
                        Security challenges
                        Interoperability challenges
                 OpenAjax Alliance is addressing the challenges
                        For Ajax IDEs
                           • OpenAjax Metadata addresses IDE interop challenges
                        For mashups
                           •   OpenAjax Hub 1.1 addresses security challenges
                           •   OpenAjax Metadata addresses widget interop challenges
Interoperable Ajax Tools and Mashups                                                   56
Thank you!
           For more information:
                 Web site:             http://www.openajax.org
                 Wiki:                 http://www.openajax.org/member/wiki
                 Blog:                 http://www.openajax.org/blog
                 Mail list:            public@openajax.org
                 Email:                Jon Ferraiolo <jferrai@us.ibm.com>




Interoperable Ajax Tools and Mashups                                         57

Contenu connexe

Similaire à Interoperable Ajax Tools And Mashups Ferraiolo

Building Secure Mashups With OpenAjax
Building Secure Mashups With OpenAjaxBuilding Secure Mashups With OpenAjax
Building Secure Mashups With OpenAjaxelliando dias
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologiesgeorge.james
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebPatrick Chanezon
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworksshank
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overviewjeresig
 
Ajax: User Experience
Ajax: User ExperienceAjax: User Experience
Ajax: User Experiencepetrov
 
China Science Challenge
China Science ChallengeChina Science Challenge
China Science Challengeremko caprio
 
SgCodeJam24 Workshop
SgCodeJam24 WorkshopSgCodeJam24 Workshop
SgCodeJam24 Workshopremko caprio
 
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 AppsBeyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 AppsMarcos Caceres
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1SNEHAL MASNE
 
How to build integrated, professional enterprise-grade cross-platform mobile ...
How to build integrated, professional enterprise-grade cross-platform mobile ...How to build integrated, professional enterprise-grade cross-platform mobile ...
How to build integrated, professional enterprise-grade cross-platform mobile ...Appear
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsMike Wilcox
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial IntroPamela Fox
 
Ajax tutorial
Ajax tutorialAjax tutorial
Ajax tutorialKat Roque
 

Similaire à Interoperable Ajax Tools And Mashups Ferraiolo (20)

Building Secure Mashups With OpenAjax
Building Secure Mashups With OpenAjaxBuilding Secure Mashups With OpenAjax
Building Secure Mashups With OpenAjax
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworks
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 
Ajax: User Experience
Ajax: User ExperienceAjax: User Experience
Ajax: User Experience
 
China Science Challenge
China Science ChallengeChina Science Challenge
China Science Challenge
 
SgCodeJam24 Workshop
SgCodeJam24 WorkshopSgCodeJam24 Workshop
SgCodeJam24 Workshop
 
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 AppsBeyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 Apps
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1
 
How to build integrated, professional enterprise-grade cross-platform mobile ...
How to build integrated, professional enterprise-grade cross-platform mobile ...How to build integrated, professional enterprise-grade cross-platform mobile ...
How to build integrated, professional enterprise-grade cross-platform mobile ...
 
Professional JavaScript: AntiPatterns
Professional JavaScript: AntiPatternsProfessional JavaScript: AntiPatterns
Professional JavaScript: AntiPatterns
 
netbeans
netbeansnetbeans
netbeans
 
netbeans
netbeansnetbeans
netbeans
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
 
Welcome to React.pptx
Welcome to React.pptxWelcome to React.pptx
Welcome to React.pptx
 
Ajax tutorial
Ajax tutorialAjax tutorial
Ajax tutorial
 

Plus de rajivmordani

Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081rajivmordani
 
Sue Googe Spice Up Ux
Sue Googe Spice Up UxSue Googe Spice Up Ux
Sue Googe Spice Up Uxrajivmordani
 
Social Networking Intranet
Social Networking IntranetSocial Networking Intranet
Social Networking Intranetrajivmordani
 
Practical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter SvenssonPractical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter Svenssonrajivmordani
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascriptrajivmordani
 
Slow Cool 20081009 Final
Slow Cool 20081009 FinalSlow Cool 20081009 Final
Slow Cool 20081009 Finalrajivmordani
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax Wrajivmordani
 
I Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor FinalI Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor Finalrajivmordani
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpinrajivmordani
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008rajivmordani
 
Mike Grushin Developing Ugc Sites That Scale
Mike Grushin    Developing Ugc Sites That ScaleMike Grushin    Developing Ugc Sites That Scale
Mike Grushin Developing Ugc Sites That Scalerajivmordani
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1rajivmordani
 
Good Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas CrockfordGood Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas Crockfordrajivmordani
 
Flying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy ChoneFlying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy Chonerajivmordani
 
I Phone Presentation Jan Linden Gips
I Phone Presentation Jan Linden GipsI Phone Presentation Jan Linden Gips
I Phone Presentation Jan Linden Gipsrajivmordani
 
Flex Flash And On Demand
Flex Flash And On DemandFlex Flash And On Demand
Flex Flash And On Demandrajivmordani
 

Plus de rajivmordani (20)

Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081
 
Sue Googe Spice Up Ux
Sue Googe Spice Up UxSue Googe Spice Up Ux
Sue Googe Spice Up Ux
 
Social Networking Intranet
Social Networking IntranetSocial Networking Intranet
Social Networking Intranet
 
Ssjs Presentation
Ssjs PresentationSsjs Presentation
Ssjs Presentation
 
Jsf Ajax
Jsf AjaxJsf Ajax
Jsf Ajax
 
Practical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter SvenssonPractical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter Svensson
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
Ria Enterprise
Ria EnterpriseRia Enterprise
Ria Enterprise
 
Slow Cool 20081009 Final
Slow Cool 20081009 FinalSlow Cool 20081009 Final
Slow Cool 20081009 Final
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax W
 
I Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor FinalI Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor Final
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpin
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008
 
Mike Grushin Developing Ugc Sites That Scale
Mike Grushin    Developing Ugc Sites That ScaleMike Grushin    Developing Ugc Sites That Scale
Mike Grushin Developing Ugc Sites That Scale
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1
 
Good Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas CrockfordGood Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas Crockford
 
Flying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy ChoneFlying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy Chone
 
I Phone Dev
I Phone DevI Phone Dev
I Phone Dev
 
I Phone Presentation Jan Linden Gips
I Phone Presentation Jan Linden GipsI Phone Presentation Jan Linden Gips
I Phone Presentation Jan Linden Gips
 
Flex Flash And On Demand
Flex Flash And On DemandFlex Flash And On Demand
Flex Flash And On Demand
 

Dernier

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Interoperable Ajax Tools And Mashups Ferraiolo

  • 1. Interoperable Ajax Tools and Mashups Jon Ferraiolo IBM and OpenAjax Alliance October 20, 2008
  • 2. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 2
  • 3. The Ajax explosion (2005-2007) Huge amount of hype ~200 Ajax toolkits appear almost instantly Microsoft Atlas (now called ASP.NET AJAX) • Helps contribute to legitimacy Several other major “proprietary” Ajax frameworks • Adobe/Spry, Backbase, ICEsoft, Nexaweb, Sun/jMaki, TIBCO, … Several major open source projects • Prototype/Scriptaculous, Dojo, Yahoo, DWR, Google GWT, jQuery,… Why so many so quickly? Simply rebrand DHTML to Ajax Interoperable Ajax Tools and Mashups 3
  • 4. Why OpenAjax Alliance? A rich but fragile ecosystem Interoperability shortcomings Educational/marketing shortcomings Dependence on browsers companies for technical advances Ajax vendors motivated to work together (united we stand, divided we fall) Ajax technology layer not addressed by other industry groups HTML app Ajax app Ajax toolkit(s) Browser Interoperable Ajax Tools and Mashups 4
  • 5. OpenAjax Alliance Formation Kick-off meeting May 2006 30 companies Objectives, process, scope, and initial tasks Scope of activities Interoperability Educational Help shape the future of the Ajax ecosystem What we produce Documents (e.g., specs) Open source (mostly JavaScript) Interoperable Ajax Tools and Mashups 5
  • 6. OpenAjax Alliance Areas of Focus Interoperability Ajax runtime libraries (OpenAjax Hub, OpenAjax Registry) Ajax IDEs (OpenAjax Metadata) Mashups and widgets (Hub 1.1, Metadata) Mobile Ajax (Mobile Device APIs) Marketing, education and evangelism 7 White papers Future browsers Browser wishlist initiative Interoperable Ajax Tools and Mashups 6
  • 7. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 7
  • 8. What should be possible? Intelligent code assist for APIs in Ajax libraries What Aptana does with APIs Visual design using widgets from Ajax libraries What jMaki/Netbeans does with widgets So what’s the problem? NxM problem (~200 Ajax toolkits, ~15 Ajax IDEs) Each toolkit documents APIs and widgets their own way Interoperable Ajax Tools and Mashups 8
  • 9. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 9
  • 10. Solution: OpenAjax Metadata OpenAjax Metadata for JavaScript APIs Embraced an industry leader (Aptana ScriptDoc XML) Standard stuff: <class>, <namespace>, <method>, <parameter>, etc. Open source • JSDoc to OpenAjax Metadata (extension to JSDoc Toolkit) • Aptana ScriptDoc XML to OpenAjax Metadata (and probably vice versa) OpenAjax Metadata for Widgets Embraced an industry leader (Adobe Dreamweaver submission) Standard stuff: <widget>, <content>, <require>, <author>, <icon>, etc. Markup designed for strong alignment with Google Gadgets Open source • Sample widgets • Reference implementation of a simple mashup editor Interoperable Ajax Tools and Mashups 10
  • 11. OpenAjax Metadata for JavaScript APIs Sample JavaScript with JSDoc /** * Processes a method found in the JSDoc data structure. * Produces an OpenAjax 'method' element. * @param {object} method JSDoc object that holds info on this method * @param {number} indent Current indent level for pretty printing */ this.method_element = function(method, indent) { … } Corresponding OpenAjax Metadata <method name=quot;method_elementquot;> <description> Processes a method found in the JSDoc data structure. Produces an OpenAjax 'method' element. </description> <parameter name=quot;methodquot; datatype=quot;Objectquot; usage=quot;requiredquot;> <description>JSDoc object that holds info on method</description> </parameter> <parameter name=quot;indentquot; datatype=quot;Numberquot; usage=quot;requiredquot;> <description>Current indent level for pretty printing</description> </parameter> </method> Interoperable Ajax Tools and Mashups 11
  • 12. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> ]]> </content> <javascript location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 12
  • 13. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <widget> is the root element. name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;libraryquot; <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> ]]> </content> <javascript location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 13
  • 14. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <require> elements specifydatatype='Date' publish='true' topic='date'/> <property name='date' the various resources that the </properties>to run successfully widget needs <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> ]]> </content> <javascript location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 14
  • 15. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <property> elements specify the list of widget parameters <![CDATA[ that should ID=quot;__WID___calendarquot; dialogs. <input appear in property editor class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> You can say whether a given property should participate ]]> in cross-widget message via ‘publish’ and ‘subscribe’ </content> <javascript (Also, there is a <topic> element) attributes. location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 15
  • 16. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> ]]> </content> <content> element contains the HTML snippet for the <javascript location=quot;atEndquot;> visualthis.init(); widget. rendering of the </javascript> </widget> Interoperable Ajax Tools and Mashups 16
  • 17. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; <javascript> elements are mainly for initialization dojoType=quot;dijit._Calendarquot;/> style=quot;background-color:#f5f5f5quot; logic. ]]> The “this” object will be set to the widget instance. </content> <javascript location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 17
  • 18. Standards improve industry efficiency and unleash innovation Ajax libraries can produce one format (OAM) for their APIs Their library will now be compatible with many IDEs If the library uses JSDoc, then auto-generation of OpenAjax Metadata We are investigating auto-generation for other inline documentation formats, such as what Dojo uses Ajax IDEs can consume one format (OAM) That IDE will now support dozens of Ajax libraries By unifying the industry around a single XML file, IDEs can now innovate and compete in other areas Interoperable Ajax Tools and Mashups 18
  • 19. IDE WG Participants Aptana Studio (chair of the WG) Adobe Dreamweaver (Spry toolkit) Microsoft Visual Studio (ASP.NET AJAX toolkit) Eclipse ATF and JSDT Sun jMaki/Netbeans TIBCO (GI toolkit) OpenLink SW (OAT framework) Interoperable Ajax Tools and Mashups 19
  • 20. Current status Specification We have a complete draft spec for OpenAjax Metadata Now in the implementation phase (see 2008 InteropFest, subsequent slide) Schema (in RelaxNG) and validator Open source implementation OpenAjax’s open source mashup tool implements the widget format Eclipse JSDT has implemented the JavaScript API features Version 0.1 of JSDoc to OpenAjax Metadata is available Commercial implementation Adobe Dreamweaver is implementing the widget features in the spec Aptana Studio is implementing the JavaScript APIs features Interoperable Ajax Tools and Mashups 20
  • 21. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 21
  • 22. Mashups – the self-service business pattern Interoperable Ajax Tools and Mashups 22
  • 23. Business value of mashups • Faster, cheaper delivery of applications • Save time and money through reuse and lightweight integration techniques • Lower skill set needed to assembly new applications • Support innovation and new business opportunities • Users empowered to innovate and explore • Gain valuable insights • Due to remixing enterprise and web information • Better align IT and business • Do-it-yourself IT will be expected by Facebook generation • Extend reach and value of SOA • Service reuse illuminates the business value of SOA Interoperable Ajax Tools and Mashups 23
  • 24. Mashup software • Mashup tools • Widget and feed discovery • Application assembly • Instant deployment • Widgets • Pre-packaged, remixable mini-applications • Usually tied to a back-end web service • Sometimes leveraging previous investment in SOA • Public or company-private • Key enabler of the long tail Interoperable Ajax Tools and Mashups 24
  • 25. Widget innovation – no shortage Interoperable Ajax Tools and Mashups 25
  • 26. Industry challenges Interoperability Dozens of proprietary technologies Good news: many use the “Web Runtime” (i.e., Ajax)! Bad news: even when using the Web Runtime, widgets are not interoperable Security The power of mashups – comes largely from discovering and integrating great widgets from 3rd parties But 3rd party widgets might be malicious Interoperable Ajax Tools and Mashups 26
  • 27. Security vulnerabilities Web browser URL: http://example.com/mashup_builder/my_mashup1 Widget-C Widget-E (trusted) Communicates in the Company server background with one of the company’s web servers (untrusted) Communicates in the background with a Public server public web server Message passing Widget-A between Communicates in the (untrusted) the widgets background with a Public server public web server What if one of the widgets is malicious? Interoperable Ajax Tools and Mashups 27
  • 28. OpenAjax – Addressing the challenges Web browser URL: http://example.com/mashup_builder/my_mashup1 Widget-C Widget-E (trusted) Communicates in the Company server (1) OpenAjax Hub 1.1 background with one provides framework for of the company’s web loading/isolating widgetsservers (untrusted) and secure message Communicates in the management background with a Public server public web server Message passing Widget-A (4) Open source mini- between Communicates in the (untrusted) mashup application the widgets background with a Public server shows how to use all of public web server these technologies (2) OpenAjax Metadata defines an industry (3) Open source transcoders standard widget wrapper convert popular existing format proprietary gadget formats into OpenAjax Metadata Interoperable Ajax Tools and Mashups 28
  • 29. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 29
  • 30. OpenAjax Hub 1.0 What is it? Small bit of standard JavaScript (< 3K after compaction) Enables multiple Ajax runtimes to work together Key use case: Developer mashups Where a professional developer mashes up components using HTML+JavaScript+… Version 1.0 features Ajax library registration • OpenAjax.hub.registerLibrary() Simple publish/subscribe engine (the pub sub hub) • OpenAjax.hub.publish(topicName, payload) • OpenAjax.hub.subscribe(topicName, callbackFunction) Interoperable Ajax Tools and Mashups 30
  • 31. OpenAjax Hub 1.0 – an example Assume multiple Ajax OpenAjax Hub 1.0 Example toolkits: This is a mockup of a Web application that uses UI controls • UTILS.js – Various utils, inc. XHR from multiple Ajax toolkits. • CALENDAR.js – Calendar control • DATAGRID.js – Powerful tables • CHARTS.js – Charting utilities The visual controls need to react to new server data and to each other and update their views appropriately. Interoperable Ajax Tools and Mashups 31
  • 32. Example – under the hood <html> <head> ... <script type=quot;text/javascriptquot; src=quot;OpenAjax.jsquot;/> <script type=quot;text/javascriptquot; src=quot;UTILS.jsquot;/> <script type=quot;text/javascriptquot; src=quot;CALENDAR.jsquot;/> <script type=quot;text/javascriptquot; src=quot;CHARTS.jsquot;/> <script type=quot;text/javascriptquot; src=quot;DATAGRID.jsquot;/> <script type=quot;text/javascriptquot;> ... function MyCalendarCallback(...) { OpenAjax.hub.publish(quot;myapp.newdatequot;, newdate); } ... function NewDateCallback(eventname, publisherData, subscriberData) { ...update the given visualization widget... } OpenAjax.hub.subscribe(quot;myapp.newdatequot;, NewDateCallback); ... </script> </head> ... Interoperable Ajax Tools and Mashups 32
  • 33. OpenAjax InteropFest Objectives: Allows OpenAjax Alliance to verify that OpenAjax Hub is reliable, performant, and suitable Allows members to verify that they are OpenAjax Conformant Jan-March 2007 July-Sept 2007 12 toolkits participated 14 organizations, 20 toolkits participated http://www.openajax.org/member/wiki/InteropFest_2007_March http://www.openajax.org/member/wiki/InteropFest_1.0 Interoperable Ajax Tools and Mashups 33
  • 34. InteropFest Demos For people who are just looking at the slide deck, some InteropFest demos can be found at: http://www.openajax.org/member/wiki/InteropFest_1.0 Participating organizations Participating toolkits 24SevenOffice AjaxEngine Apache XAP Apache XAP Dojo Foundation Dojo Toolkit IBM Ext ILOG ILOG JViews DWR/Getahead IT Mill Toolkit IT Mill jMaki Lightstreamer JQuery Microsoft Lightstreamer Nexaweb Microsoft Ajax Library OpenLink SW Nexaweb Ajax Client Open Spot OAT: OpenLink AJAX Toolkit Software AG OpenSpot CalcDesk Sun Microsystems Prototype TIBCO script.aculo.us Software AG's webMethods/CAF TIBCO General Interface 24SevenOffice Vili YUI Interoperable Ajax Tools and Mashups 34
  • 35. OpenAjax Hub 1.0 Status Approved Specification http://www.openajax.org/member/wiki/OpenAjax_Hub_1.0_Specification Reference implementation at SourceForge http://openajaxallianc.sourceforge.net Interoperable Ajax Tools and Mashups 35
  • 36. OpenAjax Hub 1.1 – New features OpenAjax Hub 1.0 Key use case: Developer mashups Key technology: pub/sub within a single browser frame OpenAjax Hub 1.1 Key use case: Secure end-user mashups Key technologies • Widget isolation (for security) • Pub/sub across browser frames • Security manager mediates all cross-widget messages Interoperable Ajax Tools and Mashups 36
  • 37. Security vulnerabilities Web browser URL: http://example.com/mashup_builder/my_mashup1 Widget-C Widget-E (trusted) Communicates in the Company server background with one of the company’s web servers (untrusted) Communicates in the background with a Public server public web server Message passing Widget-A between Communicates in the (untrusted) the widgets background with a Public server public web server What if one of the widgets is malicious? Interoperable Ajax Tools and Mashups 37
  • 38. Browser Security Browser same-origin policy IFRAMEs isolation - IFRAMEs from different domains (and subdomains) cannot communicate with each other via DOM bridging or JavaScript bridging Implemented in all popular Web browsers today Today’s tricks for cross-domain mashups Dynamic SCRIPT tag to another server Server-side proxies “IFrame proxy” (window.location fragment identifier) New browsers: W3C postMessage() and Access Control Interoperable Ajax Tools and Mashups 38
  • 39. SMash SMash stands for “Secure Mashups” Secure handling of 3rd party mashup components Runs in today’s browsers (without plugins) Designed and implemented at IBM™ Research (beginning of 2007) Open-sourced (openajaxallianc.sourceforge.net) in August 2007 Research Paper describing SMash in WWW 2008 Conference High-level APIs, independent of implementation technology Fragment communication, HTML5 postMessage, Java™ platform, Flash etc. Will still work when browsers add native support for secure cross-frame messaging Interoperable Ajax Tools and Mashups 39
  • 40. OpenAjax Hub 1.1: Plug-in communication providers Widget 1 Hub 1.1 Code Mashup assembly tool FIM provider Hub 1.1 Code Widget 2 SPI Hub 1.1 Code smash (FIM) provider inline provider inline provider HTML5 postMessage provider Widget 3 Hub 1.1 Code HTML5 provider Interoperable Ajax Tools and Mashups 40
  • 41. OpenAjax Hub 1.1: Simple example Web browser URL: http://example.com/mashup_builder/my_mashup1 Mashup container Widget-C Widget-E Broadcast an event using connHandle.publish() Hub 1.1 (Managed Hub) Hub 1.1 Hub 1.1 inline provider inline provider smash provider smash provider Widget-A Subscribe to a topic and register a Security callback function using manager connHandle.subscribe() Invoke the callback function Hub 1.1 smash provider Interoperable Ajax Tools and Mashups 41
  • 42. OpenAjax Hub 1.1: the steps Web browser URL: http://example.com/mashup_builder/my_mashup1 Mashup container Widget-C Widget-E 1 2 Load the Initialize and widgets used 4 Broadcast an event using connHandle.publish() create a in the mashup “Managed Hub” Hub 1.1 (Managed Hub) 7 5 Hub 1.1 Hub 1.1 8 inline provider 6 inline provider smash provider 9 smash provider Widget-A 3 Subscribe to a topic and register a Security callback function using manager connHandle.subscribe() 10 12 Invoke the callback function Hub 1.1 11 smash provider Interoperable Ajax Tools and Mashups 42
  • 43. Hub 1.1 status Specification First draft spec – far along http://www.openajax.org/member/wiki/OpenAjax_Hub_1. 1_Specification Reference implementation at SourceForge First implementation (far along) http://openajaxallianc.sourceforge.net Timeline for Hub 1.1 August-October 2008: 2008 InteropFest End of 2008: Finalize and approve Interoperable Ajax Tools and Mashups 43
  • 44. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 44
  • 45. Widget innovation – no shortage Interoperable Ajax Tools and Mashups 45
  • 46. OpenAjax Metadata Mashup shortcomings today Widget interoperability • Many widget formats (Google, Yahoo, Apple, Microsoft…) • Widget developers usually have to build different versions of their widgets to work with different containers Security • No comprehensive, standards-based approach to widget isolation OpenAjax Metadata addresses these two shortcomings Widget interoperability • OpenAjax Metadata defines industry standard XML for mashup widgets • Very close to Google Gadgets (easy to transcode with XSLT) Security • OpenAjax Metadata designed to work with OpenAjax Hub 1.1 (which provides a secure mashup runtime) Interoperable Ajax Tools and Mashups 46
  • 47. OpenAjax Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <![CDATA[ <input ID=quot;__WID___calendarquot; class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> ]]> </content> <javascript location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 47
  • 48. OpenAjax Metadata for Widgets <widget name=quot;Calendarquot; id=quot;…quot; spec=quot;0.1quot; jsClass=quot;Calendarquot; sandbox=quot;truequot; xmlns=quot;http://openajax.org/metadataquot;> <requires> <require type=quot;libraryquot; name=quot;dojoquot; version=quot;1.1quot; copy=quot;falsequot;/> <require type=quot;javascriptquot; src=quot;calendar.jsquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dojo/resources/dojo.cssquot;/> <require type=quot;cssquot; library=quot;dojoquot; src=quot;dijit/themes/tundra/tundra.cssquot;/> <require type=quot;cssquot; src=quot;../../lib/dijit/themes/tundra/tundra_rtl.cssquot;/> </requires> <properties> <property name='date' datatype='Date' publish='true' topic='date'/> </properties> <content type='fragment'> <property> elements specify the list of widget parameters <![CDATA[ that should ID=quot;__WID___calendarquot; dialogs. <input appear in property editor class='tundra' lang=quot;en-usquot; style=quot;background-color:#f5f5f5quot; dojoType=quot;dijit._Calendarquot;/> You can say whether a given property should participate ]]> in cross-widget message via ‘publish’ and ‘subscribe’ </content> <javascript (Also, there is a <topic> element) attributes. location=quot;atEndquot;> this.init(); </javascript> </widget> Interoperable Ajax Tools and Mashups 48
  • 49. Widget Isolation and Security Widget content is either a stand-alone HTML snippet (a DIV) or an entire HTML page Container manages the widget Widget loading and unloading Widget isolation (e.g., widget in its own IFRAME) Inter-widget communication – container provides connection handle • connHandle.publish() • connHandle.subscribe() Container implements pub/sub security Container includes a “policy manager” (who can pub/sub to what) Widget is oblivious to message passing technology • fragment identifiers, postMessage, window.Name or whatever Interoperable Ajax Tools and Mashups 49
  • 50. OpenAjax Metadata and Google Gadgets Google Gadgets The gorilla is the “Web Widget” space (tens of thousands of Gadgets) Solid technology OpenAjax Metadata strategy Match Google Gadgets wherever possible Open source XSLT transcoders to/from Google Gadgets Interoperable Ajax Tools and Mashups 50
  • 51. OpenAjax Metadata status Specification First draft spec - far along http://www.openajax.org/member/wiki/OpenAjax_Metadata_Specifica tion Open source Mini mashup application Includes support for Google Gadgets (via transcoder) Timeline for OpenAjax Metadata August-October 2008: 2008 InteropFest Fall 2008: Finalize and approve Interoperable Ajax Tools and Mashups 51
  • 52. OpenAjax – Addressing the challenges Web browser URL: http://example.com/mashup_builder/my_mashup1 Widget-C Widget-E (trusted) Communicates in the Company server (1) OpenAjax Hub 1.1 background with one provides framework for of the company’s web loading/isolating widgetsservers (untrusted) and secure message Communicates in the management background with a Public server public web server Message passing Widget-A (4) Open source mini- between Communicates in the (untrusted) mashup application the widgets background with a Public server shows how to use all of public web server these technologies (2) OpenAjax Metadata defines an industry (3) Open source transcoders standard widget wrapper convert popular existing format proprietary gadget formats into OpenAjax Metadata Interoperable Ajax Tools and Mashups 52
  • 53. OpenAjax Mashups in action Interoperable Ajax Tools and Mashups 53
  • 54. 2008 InteropFest Objectives Test OpenAjax Metadata interoperability across multiple vendors Test OpenAjax Hub 1.1 for reliability, performance, and suitability When August – October, 2008 http://www.openajax.org/member/wiki/2008_InteropFest http://www.openajax.org/2008_InteropFest/mashupapp Interoperable Ajax Tools and Mashups 54
  • 55. Agenda Introducing OpenAjax Alliance Ajax IDEs OpenAjax Metadata (for Ajax Libraries) Mashups OpenAjax Hub 1.1 OpenAjax Metadata (for Widgets) Summary Interoperable Ajax Tools and Mashups 55
  • 56. Summary Ajax IDEs aren’t realizing their potential yet Inteoperability challenges Mashups aren’t realizing their potential yet Security challenges Interoperability challenges OpenAjax Alliance is addressing the challenges For Ajax IDEs • OpenAjax Metadata addresses IDE interop challenges For mashups • OpenAjax Hub 1.1 addresses security challenges • OpenAjax Metadata addresses widget interop challenges Interoperable Ajax Tools and Mashups 56
  • 57. Thank you! For more information: Web site: http://www.openajax.org Wiki: http://www.openajax.org/member/wiki Blog: http://www.openajax.org/blog Mail list: public@openajax.org Email: Jon Ferraiolo <jferrai@us.ibm.com> Interoperable Ajax Tools and Mashups 57