SlideShare a Scribd company logo
1 of 132
Download to read offline
What’s New in Ajax

            Ben Galbraith and Dion Almaer
            Founders, Ajaxian.com

            TS-6807




Sunday, May 11, 2008                        1
Sunday, May 11, 2008   2
Sunday, May 11, 2008   2
JavaFXian   It’s “JavaFX”, not “Java”, stupid




Sunday, May 11, 2008                                              2
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Sunday, May 11, 2008   3
Great Developer Experience
                         Great User Experience




Sunday, May 11, 2008                                4
Great User Experience
                       Great Developer Experience




Sunday, May 11, 2008                                4
e!
                         Great User Experience
                                    utu rExperience
                                  eF
                       Great Developer
                               Th




Sunday, May 11, 2008                                  4
Sunday, May 11, 2008   5
The Web didn’t used to be a beautiful place...


Sunday, May 11, 2008                                                    5
Sunday, May 11, 2008   5
Sunday, May 11, 2008   6
Sunday, May 11, 2008   7
Sunday, May 11, 2008   8
Sunday, May 11, 2008   9
Sunday, May 11, 2008   9
Browser



Sunday, May 11, 2008             10
Operating System

                           Event Queue




                            Browser



Sunday, May 11, 2008                     10
Operating System

                           Event Queue




                            Browser



Sunday, May 11, 2008                     10
Mouse Moved

                           Mouse Pressed

                           Mouse Released

                            Key Pressed

        Operating System    Key Released


                           Event Queue




                             Browser



Sunday, May 11, 2008                        10
Mouse Moved

                           Mouse Pressed

                           Mouse Released

                            Key Pressed

        Operating System    Key Released


                           Event Queue




                             Browser



Sunday, May 11, 2008                        10
Mouse Moved

                           Mouse Pressed

                           Mouse Released

                            Key Pressed

        Operating System    Key Released


                           Event Queue




                             Browser



Sunday, May 11, 2008                        10
Mouse Moved

                              Mouse Pressed

                              Mouse Released

                               Key Pressed

        Operating System       Key Released


                              Event Queue




                 JavaScript



                                Browser



Sunday, May 11, 2008                           10
Mouse Moved

                              Mouse Pressed

                              Mouse Released

                               Key Pressed

        Operating System       Key Released


                              Event Queue




                 JavaScript



                                Browser



Sunday, May 11, 2008                           10
Mouse Moved

                              Mouse Pressed

                              Mouse Released

                               Key Pressed

        Operating System       Key Released


                              Event Queue




                 JavaScript                    Web Browsing



                                Browser



Sunday, May 11, 2008                                          10
Mouse Moved

                                      Mouse Pressed

                                      Mouse Released

                                       Key Pressed

        Operating System               Key Released


                                      Event Queue




                                    tial
                               oten neck
                              P le
                                  t
                              Bot


                 JavaScript                            Web Browsing



                                           Browser



Sunday, May 11, 2008                                                  10
1




                                            Browser




                       User Interface




                                        2




                                        Background
                                          Thread



Sunday, May 11, 2008                                  11
1




                                            Browser




                       User Interface




                                        X
                                        2




                                        Background
                                          Thread



Sunday, May 11, 2008                                  11
1




                                                           Browser




                       User Interface                    Message Passing




                                        2                             3




                                            WorkerPool                     WorkerPool




Sunday, May 11, 2008                                                                    12
Macintosh HD




Sunday, May 11, 2008                  13
“You just got another
                       email from your wife!”
                                  Macintosh HD




Sunday, May 11, 2008                             13
“You just got another
                            email from your wife!”
                                       Macintosh HD




                       32




Sunday, May 11, 2008                                  13
“You just got another
                            email from your wife!”
                                       Macintosh HD




                       32




Sunday, May 11, 2008                                  13
“You just got another
                            email from your wife!”
                                       Macintosh HD




                       32




Sunday, May 11, 2008                                  13
Fluid




                        Mozilla
                        Prism




                       Adobe AIR




Sunday, May 11, 2008               14
Fluid




Sunday, May 11, 2008           14
Fluid




                       37signals’
                       Campfire



Sunday, May 11, 2008                15
Fluid




                       GreaseMonkey /
                          GreaseKit




                         37signals’
                         Campfire



Sunday, May 11, 2008                    15
Aptana Jaxer




Sunday, May 11, 2008             16
Aptana Jaxer




Sunday, May 11, 2008             16
Aptana Jaxer




Sunday, May 11, 2008             16
Aptana Jaxer




Sunday, May 11, 2008             16
Aptana Jaxer

                  Netscape LiveWire
                   1995




Sunday, May 11, 2008                  16
Browser   Server




Sunday, May 11, 2008                      17
Browser                                                              Server




                       JavaScript




                                    In the beginning, there was JavaScript in the browser



Sunday, May 11, 2008                                                                                 17
Browser                                                         Server




                       JavaScript




                         Java




                                Then Oak became Java and it entered the browser, too



Sunday, May 11, 2008                                                                            17
Browser                                               Server




                       JavaScript




                                                                              Java




                                    Applets sucked, but Servlets caught on



Sunday, May 11, 2008                                                                  17
Browser                                                    Server




                                                                                  JavaScript




                                                                                    Java




                                 Netscape tries to get JavaScript on the server



Sunday, May 11, 2008                                                                           17
Browser                                                       Server




                                                            JavaScript




                                                                                             Java




                       But, server-side JavaScript never caught on, and client-side JavaScript was mocked



Sunday, May 11, 2008                                                                                        17
Browser                                                     Server




                                    Aja
                                          x!




                       JavaScript




                                                                                     Java




                           Ajax comes along and JavaScript gets some respect once again



Sunday, May 11, 2008                                                                        17
Browser                                                        Server




                                    Aja                                                            Aja
                                          x!                                                          x!




                       JavaScript                                                     JavaScript




                                                                                         Java




                                               Then Aptana moves Ajax to the server



Sunday, May 11, 2008                                                                                       17
Browser                                                      Server




                                              Aja                                                        Aja
                                                    x!                                                      x!




                                 JavaScript                                                 JavaScript




                              Java/JavaScript                                                  Java
                              Hybrid Monster




                       Don’t forget GWT, which uses Java and embedded JavaScript to emit client-side JavaScript



Sunday, May 11, 2008                                                                                              17
Browser                                                         Server




                                       Aja
                                           x!
                                                                                                   Aja
                                                                                                      x!


                          JavaScript




                                                                                      JavaScript



                       Java/JavaScript
                       Hybrid Monster




                                                                                         Java
                            Java




                         And now, finally, after nearly 15 years, we have a decent Java plug-in



Sunday, May 11, 2008                                                                                       17
Browser                                                         Server




                                       Aja
                                           x!
                                                                                                   Aja
                                                                                                      x!


                          JavaScript




                                                                                      JavaScript



                       Java/JavaScript
                       Hybrid Monster




                                                                                         Java
                            Java




                         And now, finally, after nearly 15 years, we have a decent Java plug-in



Sunday, May 11, 2008                                                                                       17
Sunday, May 11, 2008   18
Amazon EC2
                       Elastic Compute Cloud




Sunday, May 11, 2008                           18
Amazon EC2
                       Elastic Compute Cloud




Sunday, May 11, 2008                           19
Amazon EC2
                       Elastic Compute Cloud




                       Google App Engine




Sunday, May 11, 2008                           19
Amazon EC2
                       Elastic Compute Cloud




                       Google App Engine


                       Aptana Cloud




Sunday, May 11, 2008                           19
Your Application




                                  Web Services

Sunday, May 11, 2008                             20
Your Application




                                  Web Services

Sunday, May 11, 2008                             20
Your Application




                                  Web Services

Sunday, May 11, 2008                             20
Your Application




                                  Web Services

Sunday, May 11, 2008                             20
Your Application




                                  Web Services

Sunday, May 11, 2008                             20
Sunday, May 11, 2008   21
How to Choose an Ajax Framework




Sunday, May 11, 2008                21
How to Choose an Ajax Framework

                                    XHR




Sunday, May 11, 2008                      21
How to Choose an Ajax Framework

                                    XHR




Sunday, May 11, 2008                      22
How to Choose an Ajax Framework




Sunday, May 11, 2008                22
The Old Taxonomy




Sunday, May 11, 2008                      23
The Old Taxonomy




                                    Prototype
                                    Lightweight Ajax/JavaScript helpers




Sunday, May 11, 2008                                                      23
The Old Taxonomy




                                    Prototype
                                    Lightweight Ajax/JavaScript helpers




                                    GWT
                                    Hate JavaScript? No problem, use Java.




Sunday, May 11, 2008                                                         23
The Old Taxonomy




                                    Prototype
                                    Lightweight Ajax/JavaScript helpers




                                    GWT
                                    Hate JavaScript? No problem, use Java.




                                    jQuery
                                    New, DOM-centric JavaScript helper




Sunday, May 11, 2008                                                         23
The Old Taxonomy




                                                                Prototype




            dojo
                                                                Lightweight Ajax/JavaScript helpers




                                                                GWT
                                                                Hate JavaScript? No problem, use Java.



               Your Soup-to-Nuts Ajax/Javascript
                           Platform


                                                                jQuery
                                                                New, DOM-centric JavaScript helper




Sunday, May 11, 2008                                                                                     23
The New Taxonomy




Sunday, May 11, 2008                      24
The New Taxonomy




                       Prototype        jQuery        Dojo Core



Sunday, May 11, 2008                                              24
The New Taxonomy




               Plug-in Community      Plug-in Community    Plug-in Community
                  scripteka.com       plugins.jquery.com          dojox




                       Prototype          jQuery             Dojo Core



Sunday, May 11, 2008                                                           24
The New Taxonomy




                Script.aculo.us          jQuery UI               dijit




               Plug-in Community      Plug-in Community    Plug-in Community
                  scripteka.com       plugins.jquery.com          dojox




                       Prototype          jQuery             Dojo Core



Sunday, May 11, 2008                                                           24
JavaScript Goodness



          var SiteMap = Class.create(RuledTable, {
            initialize: function($super, id, expanded) {
              $super(id);
              this.expandedRows = expanded;
            },


            ...


          });



Sunday, May 11, 2008                                       25
DOM Goodness


          $(document).bind(quot;readyquot;, function() {


            $(quot;divquot;).bind(quot;mousewheelquot;, function(event, delta) {
              if (delta < 0) {
                $(this).append(quot;upquot;);
              } else {
                $(this).append(quot;downquot;);
                       }
               );


          });


Sunday, May 11, 2008                                               26
CSS and Animations



          dojo.query(quot;#nav> .focusablequot;).
              attr(quot;tabIndexquot;, 0).
              style(quot;borderquot;, quot;1px solid transparentquot;).
              anim({
                  quot;borderColorquot;: { start: quot;yellowquot;,
                                     end: quot;whitequot; }
              });




Sunday, May 11, 2008                                      27
GWT Panels


          String html = quot;<div id='one' quot;
             + quot;style='border:3px dotted blue;'>quot;
             + quot;</div><div id='two' quot;
             + quot;style='border:3px dotted green;'quot;
             + quot;></div>quot;;


          HTMLPanel panel = new HTMLPanel(html);
          panel.setSize(quot;200pxquot;, quot;120pxquot;);
          panel.addStyleName(quot;demo-panelquot;);
          panel.add(new Button(quot;Do Nothingquot;), quot;onequot;);
          panel.add(new TextBox(), quot;twoquot;);
          RootPanel.get(quot;demoquot;).add(panel);


Sunday, May 11, 2008                                    28
Prototype was one of the first mainstream Ajax frameworks. Originally a Ruby-on-Rails helper
    library, it has been widely adopted as a JavaScript/Ajax helper library.

                                                              Key Points:


                                                               pdoc
                                                                 inline documentation




                                                               Sprockets
                                                                Component packaging



                                                               Events
                                                                New event bubbling sub system




                       Sam Stephenson, Creator of Prototype




Sunday, May 11, 2008                                                                               29
Prototype was one of the first mainstream Ajax frameworks. Originally a Ruby-on-Rails helper
    library, it has been widely adopted as a JavaScript/Ajax helper library.

                                                              Key Points:


                                                               pdoc
                                                                 inline documentation




                                                               Sprockets
                                                                Component packaging



                                                               Events
                                                                New event bubbling sub system




                       Sam Stephenson, Creator of Prototype




Sunday, May 11, 2008                                                                               29
jQuery pioneered the “CSS selector first” technique of applying behaviour to the DOM


                                                         Key Points:


                                                           jQuery Core 1.2.4
                                                                 Cross browser offset and DOM sizes
                                                                 New event handlers for speed bump




                                                           jQuery Core 1.3
                                                               New CSS selector engine
                                                               DOM manipulation simplified



                                                           jQuery UI 1.5
                                                             Ground rewrite
                                                             Large number of examples



                       John Resig, Creator of jQuery




Sunday, May 11, 2008                                                                                  30
jQuery pioneered the “CSS selector first” technique of applying behaviour to the DOM


                                                         Key Points:


                                                           jQuery Core 1.2.4
                                                                 Cross browser offset and DOM sizes
                                                                 New event handlers for speed bump




                                                           jQuery Core 1.3
                                                               New CSS selector engine
                                                               DOM manipulation simplified



                                                           jQuery UI 1.5
                                                             Ground rewrite
                                                             Large number of examples



                       John Resig, Creator of jQuery




Sunday, May 11, 2008                                                                                  30
From its earliest days, Dojo has had the goal of being the JavaScript community’s de facto
    platform, for both client-side and server-side applications.

                                                          Key Points:

                                                           Responsive applications
                                                             For all.


                                                           Accessibility
                                                             Really, all.


                                                           Full GUI toolkit
                                                             Dijit


                       Alex Russell, Dojo Co-founder




Sunday, May 11, 2008                                                                             31
From its earliest days, Dojo has had the goal of being the JavaScript community’s de facto
    platform, for both client-side and server-side applications.

                                                          Key Points:

                                                           Responsive applications
                                                             For all.


                                                           Accessibility
                                                             Really, all.


                                                           Full GUI toolkit
                                                             Dijit


                       Alex Russell, Dojo Co-founder




Sunday, May 11, 2008                                                                             31
GWT is the framework for Java developers who don’t wish to learn JavaScript. A sort of Swing/
    SWT for the Web, it focuses on productivity and performance.

                                                          Key Points:

                                                          Java 5 Support
                                                            Generics, for loop, etc...


                                                          Performance
                                                            With a simple recompilation


                                                          JavaScript Integration
                                                            New simpler system



                       Bruce Johnson, Founder of GWT      Rich components
                                                            Native, and via community (Ext - GWT - Ext)




Sunday, May 11, 2008                                                                                      32
GWT is the framework for Java developers who don’t wish to learn JavaScript. A sort of Swing/
    SWT for the Web, it focuses on productivity and performance.

                                                          Key Points:

                                                          Java 5 Support
                                                            Generics, for loop, etc...


                                                          Performance
                                                            With a simple recompilation


                                                          JavaScript Integration
                                                            New simpler system



                       Bruce Johnson, Founder of GWT      Rich components
                                                            Native, and via community (Ext - GWT - Ext)




Sunday, May 11, 2008                                                                                      32
XHR




Sunday, May 11, 2008         33
XHR




Sunday, May 11, 2008         33
Sunday, May 11, 2008   34
Sunday, May 11, 2008   34
Sunday, May 11, 2008   35
Sunday, May 11, 2008   35
Sunday, May 11, 2008   35
Sunday, May 11, 2008   35
Sunday, May 11, 2008   35
wiiuse library




Sunday, May 11, 2008                    35
JNI




                       wiiuse library




Sunday, May 11, 2008                    35
Java Plug-in




                                       JNI




                       wiiuse library




Sunday, May 11, 2008                         35
Java Plug-in




                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Java Plug-in




                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Java Plug-in




                             WiiTracker



                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Java Plug-in




                             WiiTracker



                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Java Plug-in


                              WiiApplet



                             WiiTracker



                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Java Plug-in


                              WiiApplet



                             WiiTracker



                               wiiusej




                                         JNI




                       wiiuse library




Sunday, May 11, 2008                           35
Browser    Java Plug-in


                                        WiiApplet



                                       WiiTracker



                                         wiiusej




                                                   JNI




                                 wiiuse library




Sunday, May 11, 2008                                     35
Browser             Java Plug-in


                                                 WiiApplet

                        JavaScript Dart
                            Game
                                                WiiTracker



                                                  wiiusej




                                                            JNI




                                          wiiuse library




Sunday, May 11, 2008                                              35
Sunday, May 11, 2008   36
Sunday, May 11, 2008   36
The New Java Plug-in
                         Beta Shipping Today with Java 1.6 “Update 10”



                  1    Java plug-in now out-of-process
                           No more locking up the browser UI on launch
                           Applets can persist across browser sessions
                           More control over the Applet’s JVM

                  2    Improved Applet deployment
                           JavaScript-based “Deployment Toolkit”
                           Mature JNLP-based Applet metadata


                  3    A smaller JDK
                           Micro-kernel gives streamlined download option




Sunday, May 11, 2008                                                        37
The Future?




Sunday, May 11, 2008      38
The Breakdown of Modern Web Development




Sunday, May 11, 2008                                        39
Safari CSS Animations




Sunday, May 11, 2008                           40
Safari CSS Reflections and Masks




Sunday, May 11, 2008                                      41
Mozilla’s Monkeys?




Sunday, May 11, 2008                        42
Sunday, May 11, 2008   43
Sunday, May 11, 2008   43
Updating the Web...




Sunday, May 11, 2008                         44
Future


                                Present
                                                          Ab
                                                              leed
                                                             edg ing
                                                           vers e
                                                        of H ion
                                 Past                        TML
                                                                 5!

        HTML 5                               Gears


               • Standards                • Implementation
               • Long term                • Battle hardened
                                          • A place for innovation
               • All browsers             • Cross browser
               • No plugin                • Plugin

Sunday, May 11, 2008                                                   45
Sunday, May 11, 2008   46
What’s New in Ajax
           Dion Almaer and Ben Galbraith

           TS-6807




Sunday, May 11, 2008                       47

More Related Content

More from dion

The Mobile Web @ 2010 JSConf
The Mobile Web @ 2010 JSConfThe Mobile Web @ 2010 JSConf
The Mobile Web @ 2010 JSConfdion
 
Google Developer Day: State of Ajax
Google Developer Day: State of AjaxGoogle Developer Day: State of Ajax
Google Developer Day: State of Ajaxdion
 
Gears and HTML 5 @media Ajax London 2008
Gears and HTML 5 @media Ajax London 2008Gears and HTML 5 @media Ajax London 2008
Gears and HTML 5 @media Ajax London 2008dion
 
Google Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and BeyondGoogle Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and Beyonddion
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munichdion
 
Web 2.0 Expo Ria Offline Desktop
Web 2.0 Expo Ria Offline DesktopWeb 2.0 Expo Ria Offline Desktop
Web 2.0 Expo Ria Offline Desktopdion
 
Future of Web Apps: Google Gears
Future of Web Apps: Google GearsFuture of Web Apps: Google Gears
Future of Web Apps: Google Gearsdion
 

More from dion (7)

The Mobile Web @ 2010 JSConf
The Mobile Web @ 2010 JSConfThe Mobile Web @ 2010 JSConf
The Mobile Web @ 2010 JSConf
 
Google Developer Day: State of Ajax
Google Developer Day: State of AjaxGoogle Developer Day: State of Ajax
Google Developer Day: State of Ajax
 
Gears and HTML 5 @media Ajax London 2008
Gears and HTML 5 @media Ajax London 2008Gears and HTML 5 @media Ajax London 2008
Gears and HTML 5 @media Ajax London 2008
 
Google Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and BeyondGoogle Back To Front: From Gears to App Engine and Beyond
Google Back To Front: From Gears to App Engine and Beyond
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
Web 2.0 Expo Ria Offline Desktop
Web 2.0 Expo Ria Offline DesktopWeb 2.0 Expo Ria Offline Desktop
Web 2.0 Expo Ria Offline Desktop
 
Future of Web Apps: Google Gears
Future of Web Apps: Google GearsFuture of Web Apps: Google Gears
Future of Web Apps: Google Gears
 

Recently uploaded

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - AvrilIvanti
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 

Recently uploaded (20)

[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - Avril
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 

Javaone 2008: What’s New In Ajax

  • 1. What’s New in Ajax Ben Galbraith and Dion Almaer Founders, Ajaxian.com TS-6807 Sunday, May 11, 2008 1
  • 4. JavaFXian It’s “JavaFX”, not “Java”, stupid Sunday, May 11, 2008 2
  • 14. Great Developer Experience Great User Experience Sunday, May 11, 2008 4
  • 15. Great User Experience Great Developer Experience Sunday, May 11, 2008 4
  • 16. e! Great User Experience utu rExperience eF Great Developer Th Sunday, May 11, 2008 4
  • 18. The Web didn’t used to be a beautiful place... Sunday, May 11, 2008 5
  • 26. Operating System Event Queue Browser Sunday, May 11, 2008 10
  • 27. Operating System Event Queue Browser Sunday, May 11, 2008 10
  • 28. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue Browser Sunday, May 11, 2008 10
  • 29. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue Browser Sunday, May 11, 2008 10
  • 30. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue Browser Sunday, May 11, 2008 10
  • 31. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue JavaScript Browser Sunday, May 11, 2008 10
  • 32. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue JavaScript Browser Sunday, May 11, 2008 10
  • 33. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue JavaScript Web Browsing Browser Sunday, May 11, 2008 10
  • 34. Mouse Moved Mouse Pressed Mouse Released Key Pressed Operating System Key Released Event Queue tial oten neck P le t Bot JavaScript Web Browsing Browser Sunday, May 11, 2008 10
  • 35. 1 Browser User Interface 2 Background Thread Sunday, May 11, 2008 11
  • 36. 1 Browser User Interface X 2 Background Thread Sunday, May 11, 2008 11
  • 37. 1 Browser User Interface Message Passing 2 3 WorkerPool WorkerPool Sunday, May 11, 2008 12
  • 39. “You just got another email from your wife!” Macintosh HD Sunday, May 11, 2008 13
  • 40. “You just got another email from your wife!” Macintosh HD 32 Sunday, May 11, 2008 13
  • 41. “You just got another email from your wife!” Macintosh HD 32 Sunday, May 11, 2008 13
  • 42. “You just got another email from your wife!” Macintosh HD 32 Sunday, May 11, 2008 13
  • 43. Fluid Mozilla Prism Adobe AIR Sunday, May 11, 2008 14
  • 45. Fluid 37signals’ Campfire Sunday, May 11, 2008 15
  • 46. Fluid GreaseMonkey / GreaseKit 37signals’ Campfire Sunday, May 11, 2008 15
  • 51. Aptana Jaxer Netscape LiveWire 1995 Sunday, May 11, 2008 16
  • 52. Browser Server Sunday, May 11, 2008 17
  • 53. Browser Server JavaScript In the beginning, there was JavaScript in the browser Sunday, May 11, 2008 17
  • 54. Browser Server JavaScript Java Then Oak became Java and it entered the browser, too Sunday, May 11, 2008 17
  • 55. Browser Server JavaScript Java Applets sucked, but Servlets caught on Sunday, May 11, 2008 17
  • 56. Browser Server JavaScript Java Netscape tries to get JavaScript on the server Sunday, May 11, 2008 17
  • 57. Browser Server JavaScript Java But, server-side JavaScript never caught on, and client-side JavaScript was mocked Sunday, May 11, 2008 17
  • 58. Browser Server Aja x! JavaScript Java Ajax comes along and JavaScript gets some respect once again Sunday, May 11, 2008 17
  • 59. Browser Server Aja Aja x! x! JavaScript JavaScript Java Then Aptana moves Ajax to the server Sunday, May 11, 2008 17
  • 60. Browser Server Aja Aja x! x! JavaScript JavaScript Java/JavaScript Java Hybrid Monster Don’t forget GWT, which uses Java and embedded JavaScript to emit client-side JavaScript Sunday, May 11, 2008 17
  • 61. Browser Server Aja x! Aja x! JavaScript JavaScript Java/JavaScript Hybrid Monster Java Java And now, finally, after nearly 15 years, we have a decent Java plug-in Sunday, May 11, 2008 17
  • 62. Browser Server Aja x! Aja x! JavaScript JavaScript Java/JavaScript Hybrid Monster Java Java And now, finally, after nearly 15 years, we have a decent Java plug-in Sunday, May 11, 2008 17
  • 63. Sunday, May 11, 2008 18
  • 64. Amazon EC2 Elastic Compute Cloud Sunday, May 11, 2008 18
  • 65. Amazon EC2 Elastic Compute Cloud Sunday, May 11, 2008 19
  • 66. Amazon EC2 Elastic Compute Cloud Google App Engine Sunday, May 11, 2008 19
  • 67. Amazon EC2 Elastic Compute Cloud Google App Engine Aptana Cloud Sunday, May 11, 2008 19
  • 68. Your Application Web Services Sunday, May 11, 2008 20
  • 69. Your Application Web Services Sunday, May 11, 2008 20
  • 70. Your Application Web Services Sunday, May 11, 2008 20
  • 71. Your Application Web Services Sunday, May 11, 2008 20
  • 72. Your Application Web Services Sunday, May 11, 2008 20
  • 73. Sunday, May 11, 2008 21
  • 74. How to Choose an Ajax Framework Sunday, May 11, 2008 21
  • 75. How to Choose an Ajax Framework XHR Sunday, May 11, 2008 21
  • 76. How to Choose an Ajax Framework XHR Sunday, May 11, 2008 22
  • 77. How to Choose an Ajax Framework Sunday, May 11, 2008 22
  • 78. The Old Taxonomy Sunday, May 11, 2008 23
  • 79. The Old Taxonomy Prototype Lightweight Ajax/JavaScript helpers Sunday, May 11, 2008 23
  • 80. The Old Taxonomy Prototype Lightweight Ajax/JavaScript helpers GWT Hate JavaScript? No problem, use Java. Sunday, May 11, 2008 23
  • 81. The Old Taxonomy Prototype Lightweight Ajax/JavaScript helpers GWT Hate JavaScript? No problem, use Java. jQuery New, DOM-centric JavaScript helper Sunday, May 11, 2008 23
  • 82. The Old Taxonomy Prototype dojo Lightweight Ajax/JavaScript helpers GWT Hate JavaScript? No problem, use Java. Your Soup-to-Nuts Ajax/Javascript Platform jQuery New, DOM-centric JavaScript helper Sunday, May 11, 2008 23
  • 83. The New Taxonomy Sunday, May 11, 2008 24
  • 84. The New Taxonomy Prototype jQuery Dojo Core Sunday, May 11, 2008 24
  • 85. The New Taxonomy Plug-in Community Plug-in Community Plug-in Community scripteka.com plugins.jquery.com dojox Prototype jQuery Dojo Core Sunday, May 11, 2008 24
  • 86. The New Taxonomy Script.aculo.us jQuery UI dijit Plug-in Community Plug-in Community Plug-in Community scripteka.com plugins.jquery.com dojox Prototype jQuery Dojo Core Sunday, May 11, 2008 24
  • 87. JavaScript Goodness var SiteMap = Class.create(RuledTable, {   initialize: function($super, id, expanded) {     $super(id);     this.expandedRows = expanded;   },   ... }); Sunday, May 11, 2008 25
  • 88. DOM Goodness $(document).bind(quot;readyquot;, function() {   $(quot;divquot;).bind(quot;mousewheelquot;, function(event, delta) {     if (delta < 0) {       $(this).append(quot;upquot;);     } else {       $(this).append(quot;downquot;);    } ); }); Sunday, May 11, 2008 26
  • 89. CSS and Animations dojo.query(quot;#nav> .focusablequot;).     attr(quot;tabIndexquot;, 0).     style(quot;borderquot;, quot;1px solid transparentquot;).     anim({         quot;borderColorquot;: { start: quot;yellowquot;, end: quot;whitequot; }     }); Sunday, May 11, 2008 27
  • 90. GWT Panels String html = quot;<div id='one' quot;    + quot;style='border:3px dotted blue;'>quot;    + quot;</div><div id='two' quot;    + quot;style='border:3px dotted green;'quot;    + quot;></div>quot;; HTMLPanel panel = new HTMLPanel(html); panel.setSize(quot;200pxquot;, quot;120pxquot;); panel.addStyleName(quot;demo-panelquot;); panel.add(new Button(quot;Do Nothingquot;), quot;onequot;); panel.add(new TextBox(), quot;twoquot;); RootPanel.get(quot;demoquot;).add(panel); Sunday, May 11, 2008 28
  • 91. Prototype was one of the first mainstream Ajax frameworks. Originally a Ruby-on-Rails helper library, it has been widely adopted as a JavaScript/Ajax helper library. Key Points: pdoc inline documentation Sprockets Component packaging Events New event bubbling sub system Sam Stephenson, Creator of Prototype Sunday, May 11, 2008 29
  • 92. Prototype was one of the first mainstream Ajax frameworks. Originally a Ruby-on-Rails helper library, it has been widely adopted as a JavaScript/Ajax helper library. Key Points: pdoc inline documentation Sprockets Component packaging Events New event bubbling sub system Sam Stephenson, Creator of Prototype Sunday, May 11, 2008 29
  • 93. jQuery pioneered the “CSS selector first” technique of applying behaviour to the DOM Key Points: jQuery Core 1.2.4 Cross browser offset and DOM sizes New event handlers for speed bump jQuery Core 1.3 New CSS selector engine DOM manipulation simplified jQuery UI 1.5 Ground rewrite Large number of examples John Resig, Creator of jQuery Sunday, May 11, 2008 30
  • 94. jQuery pioneered the “CSS selector first” technique of applying behaviour to the DOM Key Points: jQuery Core 1.2.4 Cross browser offset and DOM sizes New event handlers for speed bump jQuery Core 1.3 New CSS selector engine DOM manipulation simplified jQuery UI 1.5 Ground rewrite Large number of examples John Resig, Creator of jQuery Sunday, May 11, 2008 30
  • 95. From its earliest days, Dojo has had the goal of being the JavaScript community’s de facto platform, for both client-side and server-side applications. Key Points: Responsive applications For all. Accessibility Really, all. Full GUI toolkit Dijit Alex Russell, Dojo Co-founder Sunday, May 11, 2008 31
  • 96. From its earliest days, Dojo has had the goal of being the JavaScript community’s de facto platform, for both client-side and server-side applications. Key Points: Responsive applications For all. Accessibility Really, all. Full GUI toolkit Dijit Alex Russell, Dojo Co-founder Sunday, May 11, 2008 31
  • 97. GWT is the framework for Java developers who don’t wish to learn JavaScript. A sort of Swing/ SWT for the Web, it focuses on productivity and performance. Key Points: Java 5 Support Generics, for loop, etc... Performance With a simple recompilation JavaScript Integration New simpler system Bruce Johnson, Founder of GWT Rich components Native, and via community (Ext - GWT - Ext) Sunday, May 11, 2008 32
  • 98. GWT is the framework for Java developers who don’t wish to learn JavaScript. A sort of Swing/ SWT for the Web, it focuses on productivity and performance. Key Points: Java 5 Support Generics, for loop, etc... Performance With a simple recompilation JavaScript Integration New simpler system Bruce Johnson, Founder of GWT Rich components Native, and via community (Ext - GWT - Ext) Sunday, May 11, 2008 32
  • 101. Sunday, May 11, 2008 34
  • 102. Sunday, May 11, 2008 34
  • 103. Sunday, May 11, 2008 35
  • 104. Sunday, May 11, 2008 35
  • 105. Sunday, May 11, 2008 35
  • 106. Sunday, May 11, 2008 35
  • 107. Sunday, May 11, 2008 35
  • 109. JNI wiiuse library Sunday, May 11, 2008 35
  • 110. Java Plug-in JNI wiiuse library Sunday, May 11, 2008 35
  • 111. Java Plug-in wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 112. Java Plug-in wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 113. Java Plug-in WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 114. Java Plug-in WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 115. Java Plug-in WiiApplet WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 116. Java Plug-in WiiApplet WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 117. Browser Java Plug-in WiiApplet WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 118. Browser Java Plug-in WiiApplet JavaScript Dart Game WiiTracker wiiusej JNI wiiuse library Sunday, May 11, 2008 35
  • 119. Sunday, May 11, 2008 36
  • 120. Sunday, May 11, 2008 36
  • 121. The New Java Plug-in Beta Shipping Today with Java 1.6 “Update 10” 1 Java plug-in now out-of-process No more locking up the browser UI on launch Applets can persist across browser sessions More control over the Applet’s JVM 2 Improved Applet deployment JavaScript-based “Deployment Toolkit” Mature JNLP-based Applet metadata 3 A smaller JDK Micro-kernel gives streamlined download option Sunday, May 11, 2008 37
  • 122. The Future? Sunday, May 11, 2008 38
  • 123. The Breakdown of Modern Web Development Sunday, May 11, 2008 39
  • 124. Safari CSS Animations Sunday, May 11, 2008 40
  • 125. Safari CSS Reflections and Masks Sunday, May 11, 2008 41
  • 127. Sunday, May 11, 2008 43
  • 128. Sunday, May 11, 2008 43
  • 129. Updating the Web... Sunday, May 11, 2008 44
  • 130. Future Present Ab leed edg ing vers e of H ion Past TML 5! HTML 5 Gears • Standards • Implementation • Long term • Battle hardened • A place for innovation • All browsers • Cross browser • No plugin • Plugin Sunday, May 11, 2008 45
  • 131. Sunday, May 11, 2008 46
  • 132. What’s New in Ajax Dion Almaer and Ben Galbraith TS-6807 Sunday, May 11, 2008 47