SlideShare ist ein Scribd-Unternehmen logo
1 von 40
jQuery on Rails (the real ones)
by Jonathan Sharp
The Challenge
• Rapid web based application development

• Support multiple server side technologies

• Easy integration of enterprise data

• Additionally Provide
      • Consistent user experience across all applications
      • Migrate existing applications
      • Low cost upgrades



The Ajax Experience 2008 - jQuery on Rails (the real ones)   2
The Scope
• Multiple frameworks: Wicket, Struts, JSF,
  ColdFusion, Servlets

• Developers
      • 450+ developers (primarily Java)
      • Basic HTML, CSS & JS
      • Geographically dispersed
• Limited Human Factors resources




The Ajax Experience 2008 - jQuery on Rails (the real ones)   3
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   4
Audience Survey
• Java

• ColdFusion

• PHP

• Rails

• UI/UX developers

• Others



The Ajax Experience 2008 - jQuery on Rails (the real ones)   5
The Approaches
• Server Side
      • Consolidate on a single server side framework
      • XML post processing
      • Client side library




The Ajax Experience 2008 - jQuery on Rails (the real ones)   6
Existing Tools
• Existing Frameworks
      • ExtJS
      • Dojo
      • Prototype/Scriptaculous
      • jQuery
      • Tibco GI
      • GWT




The Ajax Experience 2008 - jQuery on Rails (the real ones)   7
Tool Evaluation Criteria
• Developer interface API / education

• Legacy application migration

• Performance

• File size

• Licensing

• Browser support



The Ajax Experience 2008 - jQuery on Rails (the real ones)   8
The Developer Interface
• We put a lot of emphasis on this

• Developer demographics

• Skill sets across the organization

• Application development workflow
      • Human Factors
      • Implementation team




The Ajax Experience 2008 - jQuery on Rails (the real ones)   9
Jumping In
• We selected jQuery

• Created a developer centric interface

• Just include & use - short learning curve

• Component driven




The Ajax Experience 2008 - jQuery on Rails (the real ones)   10
The Component
• A component encompasses:
      • XHTML Markup
      • Behavior
      • Enterprise data
• Simple XHTML interface

• Advanced developer interface




The Ajax Experience 2008 - jQuery on Rails (the real ones)   11
Semantic Markup
• Developers insert the following XHTML:
• <div class=”groupbox”>
      <h2>My Groupbox Title</h2>
      <!-- Groupbox contents -->
  </div>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   12
Alternate Markup
• Developers insert the following XHTML:
• <div class=”groupbox”
      tae:title=”My Groupbox Title”>
      <!-- Groupbox contents -->
  </div>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   13
Rendered Markup
• Component renders:
• <div class=”groupbox”>
     <div><div class=”groupboxTitle”>
         My Groupbox Title
     </div></div>
     <div class=”groupboxContent”>
          <!-- Groupbox contents -->
     </div>
     <div>...</div>
  </div>

The Ajax Experience 2008 - jQuery on Rails (the real ones)   14
The Architecture
• Versioning

• Build Process

• Publishing Releases

• Technical Considerations

• Development Environment




The Ajax Experience 2008 - jQuery on Rails (the real ones)   15
Versioning
• <Product Version>.<major>.<minor>
      • Example: 2.1.4, 2.2.4
• Major & Minor Releases
      • Major release requires an application change & may
          break backwards compatibility, url change
      • Minor releases are transparent to applications, no
          url change




The Ajax Experience 2008 - jQuery on Rails (the real ones)   16
URL Versioning
• Minor release
  2.1.5 /product/2.1/product.js

• Major release
  2.2.3 /product/2.2/product.js




The Ajax Experience 2008 - jQuery on Rails (the real ones)   17
Build Process
• Apache Ant build.xml

• JS Lint

• YUI Compressor (JS & CSS)

• PNG Crush




The Ajax Experience 2008 - jQuery on Rails (the real ones)   18
Technical Considerations
• File size
      • JS pack vs. min
      • Caching
• XHTML Transitional doctype

• Require JavaScript to be enabled




The Ajax Experience 2008 - jQuery on Rails (the real ones)   19
Development Environment
• Firefox 2+, IE 6+ (& Safari)

• Firebug

• IE & script debugging

• SVN for source versioning

• J2EE servlets for Ajax calls




The Ajax Experience 2008 - jQuery on Rails (the real ones)   20
The Component
• Identified by CSS class
      • <div               class=”component”></div>

• Component initializes on page load
      • Initialization may also occur by calling
          Project.init(‘#id’)




The Ajax Experience 2008 - jQuery on Rails (the real ones)   21
Custom Attributes & Namespace
• Developed using namespaced attributes
      • <div               tae:attr=”value”>

• HTML5 provides “data” attributes
      • <div               data-attr=”value”>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   22
Developer API & Interface
• Basic
      • XHTML Only, no need to write JavaScript
• Advanced
      • Add additional behavior with JavaScript




The Ajax Experience 2008 - jQuery on Rails (the real ones)   23
Developer API & Interface
      • <div id=”gb”                                   class=”groupbox”>
      • $(‘#gb’)
                        .bind(‘groupboxExpand’, function() {
                            alert(‘Groupbox expanded!’);
                        });




The Ajax Experience 2008 - jQuery on Rails (the real ones)   24
Unobtrusive JavaScript
• Behavioral separation
      • <div onclick=”...”></div>
      • <div id=”component”></div>
      • $(‘#component’).bind(‘click’,                             function() {
                        ...
          });

• Progressive rendering
      • <div   class=”groupbox”>
              <h1>Groupbox Title</h1>
              ...
          </div>
The Ajax Experience 2008 - jQuery on Rails (the real ones)   25
The Life of a Page
• HTTP Request is made for page
      • Request /project/2.1/project.css
      • Request /project/2.1/project.js




The Ajax Experience 2008 - jQuery on Rails (the real ones)   26
The Event Cycle
• jQuery $(document).ready(callback)
  is executed
      • Trigger user space “beforeready” event
      • Component initialization
           • Transform the DOM
           • Add behaviors

      • Trigger user space ready event




The Ajax Experience 2008 - jQuery on Rails (the real ones)   27
Components In Action
• Application Header

• Groupbox

• Tooltip

• Definition

• Validation

• Lookup / Auto Complete



The Ajax Experience 2008 - jQuery on Rails (the real ones)   28
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   29
Prototyping The UI
• Increasing Productivity
      • Workflow
           • Requirements
           • Prototype interface
           • Implementation

• Cost of making changes is low

• Developers focus on areas of expertise




The Ajax Experience 2008 - jQuery on Rails (the real ones)   30
Prototyping The UI
• Initial human factors prototype
      • Usability study / customer review
• Handoff to application team for
  implementation
• Reuse XHTML with Wicket, ColdFusion, etc.




The Ajax Experience 2008 - jQuery on Rails (the real ones)   31
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   32
Enterprise Data
• UI team develops JSON servlets that talk to
  XMF/ESB web services

• Application teams gain benefits without
  having to add JAR’s or 3rd party components
• Client side becomes point of aggregation




The Ajax Experience 2008 - jQuery on Rails (the real ones)   33
Data Caching / Offline
• Distribute data to the client

• Take advantage of tools such as Google Gears

• Increases client side performance, distribution
    of load




The Ajax Experience 2008 - jQuery on Rails (the real ones)   34
Performance Tips
• DOM Manipulation
      • Consider DOM DocumentFragment
          http://ejohn.org/blog/dom-documentfragments/
      • Cache Node References
      • Take advantage of the jQuery.data() function to
          solve expando issues

• $(‘#myID’).data(‘rows’, row1,row2,...,n]);




The Ajax Experience 2008 - jQuery on Rails (the real ones)   35
Performance Tips
• Tune jQuery Selectors

• Late event binding

• Use event delegation

• Bind click event using mouseover event




The Ajax Experience 2008 - jQuery on Rails (the real ones)   36
Dynamic Transformations
• On DOM Insert / Update events

• Dynamically initialize components




The Ajax Experience 2008 - jQuery on Rails (the real ones)   37
The UI With Canvas
• Move towards rendering components using
  Canvas

• MooTools - Mocha UI
  http://mochaui.com/demo/




The Ajax Experience 2008 - jQuery on Rails (the real ones)   38
Audience Response
• Questions ?




The Ajax Experience 2008 - jQuery on Rails (the real ones)   39
Thank you!                 Links & Additional Resources
                           http://outwestmedia.com/TAE/




Jonathan Sharp
jdsharp@outwestmedia.com

Weitere ähnliche Inhalte

Was ist angesagt?

Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
lucclaes
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
Doris Chen
 

Was ist angesagt? (20)

Ankor Presentation @ JavaOne San Francisco September 2014
Ankor Presentation @ JavaOne San Francisco September 2014Ankor Presentation @ JavaOne San Francisco September 2014
Ankor Presentation @ JavaOne San Francisco September 2014
 
JavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io PresentationJavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io Presentation
 
Sitecore MVC (User Group Conference, May 23rd 2014)
Sitecore MVC (User Group Conference, May 23rd 2014)Sitecore MVC (User Group Conference, May 23rd 2014)
Sitecore MVC (User Group Conference, May 23rd 2014)
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
 
Web services engine
Web services engineWeb services engine
Web services engine
 
Sitecore MVC: Converting Web Forms sublayouts
Sitecore MVC: Converting Web Forms sublayoutsSitecore MVC: Converting Web Forms sublayouts
Sitecore MVC: Converting Web Forms sublayouts
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
An Unexpected Solution to Microservices UI Composition
An Unexpected Solution to Microservices UI CompositionAn Unexpected Solution to Microservices UI Composition
An Unexpected Solution to Microservices UI Composition
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and Liquibase
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gates
 
Eclipse Apricot
Eclipse ApricotEclipse Apricot
Eclipse Apricot
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Online Spreadsheet for your Web Applications using Kendo UI
Online Spreadsheet for your Web Applications using Kendo UIOnline Spreadsheet for your Web Applications using Kendo UI
Online Spreadsheet for your Web Applications using Kendo UI
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.js
 
Bringing Docker to the Cloud
Bringing Docker to the CloudBringing Docker to the Cloud
Bringing Docker to the Cloud
 

Ähnlich wie jQuery On Rails

J query presentation
J query presentationJ query presentation
J query presentation
akanksha17
 
J query presentation
J query presentationJ query presentation
J query presentation
sawarkar17
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
johnnybiz
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 

Ähnlich wie jQuery On Rails (20)

Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5
 
J query presentation
J query presentationJ query presentation
J query presentation
 
J query presentation
J query presentationJ query presentation
J query presentation
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
 
Google web toolkit gwt training
Google web toolkit gwt trainingGoogle web toolkit gwt training
Google web toolkit gwt training
 
JSF2
JSF2JSF2
JSF2
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPagesjQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
 
Wicket Intro
Wicket IntroWicket Intro
Wicket Intro
 
MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Devfest09 Cschalk Gwt
Devfest09 Cschalk GwtDevfest09 Cschalk Gwt
Devfest09 Cschalk Gwt
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 

KĂźrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
Christopher Logan Kennedy
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

KĂźrzlich hochgeladen (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

jQuery On Rails

  • 1. jQuery on Rails (the real ones) by Jonathan Sharp
  • 2. The Challenge • Rapid web based application development • Support multiple server side technologies • Easy integration of enterprise data • Additionally Provide • Consistent user experience across all applications • Migrate existing applications • Low cost upgrades The Ajax Experience 2008 - jQuery on Rails (the real ones) 2
  • 3. The Scope • Multiple frameworks: Wicket, Struts, JSF, ColdFusion, Servlets • Developers • 450+ developers (primarily Java) • Basic HTML, CSS & JS • Geographically dispersed • Limited Human Factors resources The Ajax Experience 2008 - jQuery on Rails (the real ones) 3
  • 4. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 4
  • 5. Audience Survey • Java • ColdFusion • PHP • Rails • UI/UX developers • Others The Ajax Experience 2008 - jQuery on Rails (the real ones) 5
  • 6. The Approaches • Server Side • Consolidate on a single server side framework • XML post processing • Client side library The Ajax Experience 2008 - jQuery on Rails (the real ones) 6
  • 7. Existing Tools • Existing Frameworks • ExtJS • Dojo • Prototype/Scriptaculous • jQuery • Tibco GI • GWT The Ajax Experience 2008 - jQuery on Rails (the real ones) 7
  • 8. Tool Evaluation Criteria • Developer interface API / education • Legacy application migration • Performance • File size • Licensing • Browser support The Ajax Experience 2008 - jQuery on Rails (the real ones) 8
  • 9. The Developer Interface • We put a lot of emphasis on this • Developer demographics • Skill sets across the organization • Application development workflow • Human Factors • Implementation team The Ajax Experience 2008 - jQuery on Rails (the real ones) 9
  • 10. Jumping In • We selected jQuery • Created a developer centric interface • Just include & use - short learning curve • Component driven The Ajax Experience 2008 - jQuery on Rails (the real ones) 10
  • 11. The Component • A component encompasses: • XHTML Markup • Behavior • Enterprise data • Simple XHTML interface • Advanced developer interface The Ajax Experience 2008 - jQuery on Rails (the real ones) 11
  • 12. Semantic Markup • Developers insert the following XHTML: • <div class=”groupbox”> <h2>My Groupbox Title</h2> <!-- Groupbox contents --> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 12
  • 13. Alternate Markup • Developers insert the following XHTML: • <div class=”groupbox” tae:title=”My Groupbox Title”> <!-- Groupbox contents --> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 13
  • 14. Rendered Markup • Component renders: • <div class=”groupbox”> <div><div class=”groupboxTitle”> My Groupbox Title </div></div> <div class=”groupboxContent”> <!-- Groupbox contents --> </div> <div>...</div> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 14
  • 15. The Architecture • Versioning • Build Process • Publishing Releases • Technical Considerations • Development Environment The Ajax Experience 2008 - jQuery on Rails (the real ones) 15
  • 16. Versioning • <Product Version>.<major>.<minor> • Example: 2.1.4, 2.2.4 • Major & Minor Releases • Major release requires an application change & may break backwards compatibility, url change • Minor releases are transparent to applications, no url change The Ajax Experience 2008 - jQuery on Rails (the real ones) 16
  • 17. URL Versioning • Minor release 2.1.5 /product/2.1/product.js • Major release 2.2.3 /product/2.2/product.js The Ajax Experience 2008 - jQuery on Rails (the real ones) 17
  • 18. Build Process • Apache Ant build.xml • JS Lint • YUI Compressor (JS & CSS) • PNG Crush The Ajax Experience 2008 - jQuery on Rails (the real ones) 18
  • 19. Technical Considerations • File size • JS pack vs. min • Caching • XHTML Transitional doctype • Require JavaScript to be enabled The Ajax Experience 2008 - jQuery on Rails (the real ones) 19
  • 20. Development Environment • Firefox 2+, IE 6+ (& Safari) • Firebug • IE & script debugging • SVN for source versioning • J2EE servlets for Ajax calls The Ajax Experience 2008 - jQuery on Rails (the real ones) 20
  • 21. The Component • Identied by CSS class • <div class=”component”></div> • Component initializes on page load • Initialization may also occur by calling Project.init(‘#id’) The Ajax Experience 2008 - jQuery on Rails (the real ones) 21
  • 22. Custom Attributes & Namespace • Developed using namespaced attributes • <div tae:attr=”value”> • HTML5 provides “data” attributes • <div data-attr=”value”> The Ajax Experience 2008 - jQuery on Rails (the real ones) 22
  • 23. Developer API & Interface • Basic • XHTML Only, no need to write JavaScript • Advanced • Add additional behavior with JavaScript The Ajax Experience 2008 - jQuery on Rails (the real ones) 23
  • 24. Developer API & Interface • <div id=”gb” class=”groupbox”> • $(‘#gb’) .bind(‘groupboxExpand’, function() { alert(‘Groupbox expanded!’); }); The Ajax Experience 2008 - jQuery on Rails (the real ones) 24
  • 25. Unobtrusive JavaScript • Behavioral separation • <div onclick=”...”></div> • <div id=”component”></div> • $(‘#component’).bind(‘click’, function() { ... }); • Progressive rendering • <div class=”groupbox”> <h1>Groupbox Title</h1> ... </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 25
  • 26. The Life of a Page • HTTP Request is made for page • Request /project/2.1/project.css • Request /project/2.1/project.js The Ajax Experience 2008 - jQuery on Rails (the real ones) 26
  • 27. The Event Cycle • jQuery $(document).ready(callback) is executed • Trigger user space “beforeready” event • Component initialization • Transform the DOM • Add behaviors • Trigger user space ready event The Ajax Experience 2008 - jQuery on Rails (the real ones) 27
  • 28. Components In Action • Application Header • Groupbox • Tooltip • Denition • Validation • Lookup / Auto Complete The Ajax Experience 2008 - jQuery on Rails (the real ones) 28
  • 29. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 29
  • 30. Prototyping The UI • Increasing Productivity • Workflow • Requirements • Prototype interface • Implementation • Cost of making changes is low • Developers focus on areas of expertise The Ajax Experience 2008 - jQuery on Rails (the real ones) 30
  • 31. Prototyping The UI • Initial human factors prototype • Usability study / customer review • Handoff to application team for implementation • Reuse XHTML with Wicket, ColdFusion, etc. The Ajax Experience 2008 - jQuery on Rails (the real ones) 31
  • 32. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 32
  • 33. Enterprise Data • UI team develops JSON servlets that talk to XMF/ESB web services • Application teams gain benets without having to add JAR’s or 3rd party components • Client side becomes point of aggregation The Ajax Experience 2008 - jQuery on Rails (the real ones) 33
  • 34. Data Caching / Offline • Distribute data to the client • Take advantage of tools such as Google Gears • Increases client side performance, distribution of load The Ajax Experience 2008 - jQuery on Rails (the real ones) 34
  • 35. Performance Tips • DOM Manipulation • Consider DOM DocumentFragment http://ejohn.org/blog/dom-documentfragments/ • Cache Node References • Take advantage of the jQuery.data() function to solve expando issues • $(‘#myID’).data(‘rows’, row1,row2,...,n]); The Ajax Experience 2008 - jQuery on Rails (the real ones) 35
  • 36. Performance Tips • Tune jQuery Selectors • Late event binding • Use event delegation • Bind click event using mouseover event The Ajax Experience 2008 - jQuery on Rails (the real ones) 36
  • 37. Dynamic Transformations • On DOM Insert / Update events • Dynamically initialize components The Ajax Experience 2008 - jQuery on Rails (the real ones) 37
  • 38. The UI With Canvas • Move towards rendering components using Canvas • MooTools - Mocha UI http://mochaui.com/demo/ The Ajax Experience 2008 - jQuery on Rails (the real ones) 38
  • 39. Audience Response • Questions ? The Ajax Experience 2008 - jQuery on Rails (the real ones) 39
  • 40. Thank you! Links & Additional Resources http://outwestmedia.com/TAE/ Jonathan Sharp jdsharp@outwestmedia.com