SlideShare une entreprise Scribd logo
1  sur  39
The pyramid of application development RikArends @rikarends @ajax_org
Then 1983 Commodore 64 65536 bytes of ram 1 mhz Focus: applications
Now Current PC 2.000.000.000 + bytes of ram 4x3000 mhz + Focus: applications
How do layers emerge Competition creates layer complexity A new layer in between the app and the hardware is needed to optimize reach Ms / IBM PC, OS / runtimes
Why layer independence is important Monopoly emerges through multi-layer controlled competition destruction Diversity is healthy Never stops optimizing areas Natural selection works by selection from the diversity, not by directed adaptation
When do you need standardization Up: abstraction, Down: standardization Progress halted because of not abstractable scalability differences Competition incredibly technical Lower level innovation useless because of too many verticals Group competition with larger entities
Where are we now Standardization in the browser made it scalable to abstract on base level Browser competition now focused on performance and strict compliance
What do JS libraries do Abstract browser differences Optimize effort vs result Modularize and reuse
JS Library differentiation DOM operation automation: jQuery, Prototype, Mootools Widget libraries: Dojo, Qooxdoo, Ext Domain specific methodologies Ample, Ajax.org Platform
Domain specific methodologies Compression through projection Language optimized for understanding Cross-over at optimal points
Browser domain specific HTML Document and spatial structure CSS Styling
HTML 5  Started as the DSL for web applications Moved towards adding features  HTML is the assembly language of the web Does not solve the application-level integration
Domains in an application Layout State Style Templating Data bindings Communication
DSL approaches Tree hierarchy (markup, json) Functional Reactive (signal-slot) Query selectors (css-selectors, xpath, json-path) Expressions Code flow syntax (e4x, live markup)
Why are we doing this? Our time is expensive We want to build cool stuff It should be fun to make  and maintain
Ajax.orgDSLs Ajax.org Markup Language Static application declaration Live Markup Dynamic application declaration Layouting Skinning Expression CSS
Ajax.org Markup Language Application is represented in a DOM tree XML (AML) definable JSON definable JS DOM-api controllable
The XML way <div>     <a:chart>         <a:axis mode="2D">             <a:graph mode="line" formula="sin(x)" />         </a:axis>     </a:chart>     <a:button>Test</a:button> </div>
The JSON way var chart = new apf.chart({ htmlNode : document.body.firstChild, childNodes : [ new apf.axis({             mode : "2D", childNodes : [                 new apf.graph({                     mode : "line",                     formula : "sin(x)"                 })             ]         }), 		  new apf.button({caption : "2D”})     ] });
JS and W3C DOM API var chart = new apf.chart(); apf.document.body.appendChild(chart); var axis  = chart.appendChild(newapf.axis()); axis.setAttribute("mode", "2D"); var graph = axis.appendChild(newapf.graph()); graph.setAttribute("mode", "line"); graph.setAttribute("formula", "sin(x)"); var graph = axis.appendChild(newapf.button()); graph.setAttribute("mode", "line"); graph.setAttribute("formula", "sin(x)”); …
Dynamic UI - Live Markup <?lm varx = 10;     <ul>{ each([mdlExample::foo/bar]) {             <li>{				[@name].toUpperCase() + x			  }</li>         }     }</ul> ?>
Dynamic UI - Live Markup <?lm varx = 10;     <ul>{ each([mdlExample::foo/bar]) {             <li>{				[@name].toUpperCase() + x			  }</li>         }     }</ul> ?>
Live markup syntax Extended JavaScript [] for query selectors {} for code mode In string parsing E4X style xml literals (literal is a string, not an object) Overloaded operators Async calling abstracted (use sparsely) Fast execution and compilation Auto concat and auto output
A lot of work in HTML: Synchronizing data with the UI Dealing with the server Maintaining state Undo / Redo / Offline Templating from data Dynamic vector graphics
Loading data <a:model id  = "mdlUsers"  src = "http://example.com/users.php" />
Displaying data - databinding <a:tree     model   = "mdlUsers"      each    = "[user]"      caption = "[@name]"      icon    = "icoUser.png" />
Displaying data – a bit more complex <a:tree     each    = "[mdlUsers::user]"      caption = "{[@fname].uCaseFirst()} [@lname]"      icon    = "{[@icon] or 'icoUser.png'}" />
Managing state and simple logic <a:thumbnails each="[mdlThumbs::thumbs]" image="[@url]"  thumbsize="{sld1.value}"/> <a:slider id="sld1" value="90" min="10" max="150" />
Managing state – a bit more complex <a:tree id="tree" actiontracker="atTree" ... /> <a:label value="[{tree.selected}::@name]" /> <a:button disabled="{!atTree.undolength}" onclick="...">     Undo </a:button>
Undo and Redo	 <a:tree actiontracker="atTree" ... /> <a:button onclick="atTree.undo()">Undo</a:button> <a:button onclick="atTree.redo()">Redo</a:button>
Vector graphics <div>     <a:chart>         <a:axis mode="2D">             <a:graph mode="line" formula="sin(x)" />         </a:axis>     </a:chart> </div>
Putting it together Collaborative applications Databinding (remote) Complete widgets Server communication
Collaborative Demo
Vision The browser is the application platform of the future
What we need Full feature UI platform IDE Desktop integration Serverside integration Make the browser compete withFlash and Silverlight
APF Roadmap Apf 3.0 stable early Q1 2010	 Apf 3.1 contentEditable WAI-ARIA support Virtual viewport for all widgets Offline applications Multiple query languages in Live Markup (JSON-Path, CSS3)
Thank you RikArends @rikarendsrik@ajax.org www.ajax.org @ajax_org

Contenu connexe

En vedette

From moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcFrom moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcGeorge Martin
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencialaurabarrosg
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2Regina Franco
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPortolauravieira
 
El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]Tarcízio Silva
 
Plano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesPlano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesMauricio Serafim
 
Il fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaIl fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaGeorge Martin
 
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Ηλιάδης Γεώργιος
 
PLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresPLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresSito Yelas
 
Presentacion final
Presentacion finalPresentacion final
Presentacion finalcamnaron123
 

En vedette (20)

Про YAPC::TV
Про YAPC::TVПро YAPC::TV
Про YAPC::TV
 
Browser (mozila&chrome) tips by tanbircox
Browser (mozila&chrome) tips by tanbircoxBrowser (mozila&chrome) tips by tanbircox
Browser (mozila&chrome) tips by tanbircox
 
From moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hcFrom moscow to_beijing_by_train_hc
From moscow to_beijing_by_train_hc
 
Pensamiento e ciencia
Pensamiento e cienciaPensamiento e ciencia
Pensamiento e ciencia
 
Poezie zenske krasy_2
Poezie zenske krasy_2Poezie zenske krasy_2
Poezie zenske krasy_2
 
Doutoramento em Direito UPorto
Doutoramento em Direito UPortoDoutoramento em Direito UPorto
Doutoramento em Direito UPorto
 
Lupin ladies
Lupin  ladiesLupin  ladies
Lupin ladies
 
El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]El rock barrial en la web - Basile [Resenha]
El rock barrial en la web - Basile [Resenha]
 
Plano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e OrganizaçõesPlano de Ensino - Sociologia Econômica e Organizações
Plano de Ensino - Sociologia Econômica e Organizações
 
Il fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listeaIl fallait attraper_l'instant_magique-rh-listea
Il fallait attraper_l'instant_magique-rh-listea
 
Social Bookmarking
Social BookmarkingSocial Bookmarking
Social Bookmarking
 
Balada gitana 2
Balada gitana 2Balada gitana 2
Balada gitana 2
 
RSS
RSSRSS
RSS
 
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
Mics Capital και Road to Success.Κερδίστε 170€ σε ΜΙΑ ΗΜΕΡΑ!
 
Beach Soccer Law 2
Beach Soccer Law 2Beach Soccer Law 2
Beach Soccer Law 2
 
Horror Convention
Horror Convention Horror Convention
Horror Convention
 
Kosenconf numazu opening
Kosenconf numazu openingKosenconf numazu opening
Kosenconf numazu opening
 
PLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeresPLUTARCO - Sobre el valor de las mujeres
PLUTARCO - Sobre el valor de las mujeres
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
 
Lista prezenta Romania
Lista prezenta RomaniaLista prezenta Romania
Lista prezenta Romania
 

Similaire à Beholding the giant pyramid of application development; why Ajax applications are its natural top layer

Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Sergey Ilinsky
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileChris Toohey
 
Struts2
Struts2Struts2
Struts2yuvalb
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]Chris Toohey
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSCarol McDonald
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikGraham Jones
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Finalematrix
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Guillaume Laforge
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Codemotion
 
Playing with d3.js
Playing with d3.jsPlaying with d3.js
Playing with d3.jsmangoice
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupHadoop User Group
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree nodeHemakumar.S
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicTimothy Perrett
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS FrameworkMohd Imran
 

Similaire à Beholding the giant pyramid of application development; why Ajax applications are its natural top layer (20)

Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
Struts2
Struts2Struts2
Struts2
 
Combres
CombresCombres
Combres
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
 
Interoperable Web Services with JAX-WS
Interoperable Web Services with JAX-WSInteroperable Web Services with JAX-WS
Interoperable Web Services with JAX-WS
 
Retrofitting
RetrofittingRetrofitting
Retrofitting
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
 
Flex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 FinalFlex For Flash Developers Ff 2006 Final
Flex For Flash Developers Ff 2006 Final
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
 
Playing with d3.js
Playing with d3.jsPlaying with d3.js
Playing with d3.js
 
Ajax ons2
Ajax ons2Ajax ons2
Ajax ons2
 
02 create first-map
02 create first-map02 create first-map
02 create first-map
 
Odp
OdpOdp
Odp
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user group
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
 
Introduction to Prototype JS Framework
Introduction to Prototype JS FrameworkIntroduction to Prototype JS Framework
Introduction to Prototype JS Framework
 

Dernier

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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
 

Dernier (20)

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Beholding the giant pyramid of application development; why Ajax applications are its natural top layer

  • 1. The pyramid of application development RikArends @rikarends @ajax_org
  • 2.
  • 3.
  • 4. Then 1983 Commodore 64 65536 bytes of ram 1 mhz Focus: applications
  • 5. Now Current PC 2.000.000.000 + bytes of ram 4x3000 mhz + Focus: applications
  • 6. How do layers emerge Competition creates layer complexity A new layer in between the app and the hardware is needed to optimize reach Ms / IBM PC, OS / runtimes
  • 7. Why layer independence is important Monopoly emerges through multi-layer controlled competition destruction Diversity is healthy Never stops optimizing areas Natural selection works by selection from the diversity, not by directed adaptation
  • 8. When do you need standardization Up: abstraction, Down: standardization Progress halted because of not abstractable scalability differences Competition incredibly technical Lower level innovation useless because of too many verticals Group competition with larger entities
  • 9. Where are we now Standardization in the browser made it scalable to abstract on base level Browser competition now focused on performance and strict compliance
  • 10. What do JS libraries do Abstract browser differences Optimize effort vs result Modularize and reuse
  • 11. JS Library differentiation DOM operation automation: jQuery, Prototype, Mootools Widget libraries: Dojo, Qooxdoo, Ext Domain specific methodologies Ample, Ajax.org Platform
  • 12. Domain specific methodologies Compression through projection Language optimized for understanding Cross-over at optimal points
  • 13. Browser domain specific HTML Document and spatial structure CSS Styling
  • 14. HTML 5 Started as the DSL for web applications Moved towards adding features HTML is the assembly language of the web Does not solve the application-level integration
  • 15. Domains in an application Layout State Style Templating Data bindings Communication
  • 16. DSL approaches Tree hierarchy (markup, json) Functional Reactive (signal-slot) Query selectors (css-selectors, xpath, json-path) Expressions Code flow syntax (e4x, live markup)
  • 17. Why are we doing this? Our time is expensive We want to build cool stuff It should be fun to make and maintain
  • 18. Ajax.orgDSLs Ajax.org Markup Language Static application declaration Live Markup Dynamic application declaration Layouting Skinning Expression CSS
  • 19. Ajax.org Markup Language Application is represented in a DOM tree XML (AML) definable JSON definable JS DOM-api controllable
  • 20. The XML way <div> <a:chart> <a:axis mode="2D"> <a:graph mode="line" formula="sin(x)" /> </a:axis> </a:chart> <a:button>Test</a:button> </div>
  • 21. The JSON way var chart = new apf.chart({ htmlNode : document.body.firstChild, childNodes : [ new apf.axis({ mode : "2D", childNodes : [ new apf.graph({ mode : "line", formula : "sin(x)" }) ] }), new apf.button({caption : "2D”}) ] });
  • 22. JS and W3C DOM API var chart = new apf.chart(); apf.document.body.appendChild(chart); var axis = chart.appendChild(newapf.axis()); axis.setAttribute("mode", "2D"); var graph = axis.appendChild(newapf.graph()); graph.setAttribute("mode", "line"); graph.setAttribute("formula", "sin(x)"); var graph = axis.appendChild(newapf.button()); graph.setAttribute("mode", "line"); graph.setAttribute("formula", "sin(x)”); …
  • 23. Dynamic UI - Live Markup <?lm varx = 10; <ul>{ each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul> ?>
  • 24. Dynamic UI - Live Markup <?lm varx = 10; <ul>{ each([mdlExample::foo/bar]) { <li>{ [@name].toUpperCase() + x }</li> } }</ul> ?>
  • 25. Live markup syntax Extended JavaScript [] for query selectors {} for code mode In string parsing E4X style xml literals (literal is a string, not an object) Overloaded operators Async calling abstracted (use sparsely) Fast execution and compilation Auto concat and auto output
  • 26. A lot of work in HTML: Synchronizing data with the UI Dealing with the server Maintaining state Undo / Redo / Offline Templating from data Dynamic vector graphics
  • 27. Loading data <a:model id = "mdlUsers" src = "http://example.com/users.php" />
  • 28. Displaying data - databinding <a:tree model = "mdlUsers" each = "[user]" caption = "[@name]" icon = "icoUser.png" />
  • 29. Displaying data – a bit more complex <a:tree each = "[mdlUsers::user]" caption = "{[@fname].uCaseFirst()} [@lname]" icon = "{[@icon] or 'icoUser.png'}" />
  • 30. Managing state and simple logic <a:thumbnails each="[mdlThumbs::thumbs]" image="[@url]" thumbsize="{sld1.value}"/> <a:slider id="sld1" value="90" min="10" max="150" />
  • 31. Managing state – a bit more complex <a:tree id="tree" actiontracker="atTree" ... /> <a:label value="[{tree.selected}::@name]" /> <a:button disabled="{!atTree.undolength}" onclick="..."> Undo </a:button>
  • 32. Undo and Redo <a:tree actiontracker="atTree" ... /> <a:button onclick="atTree.undo()">Undo</a:button> <a:button onclick="atTree.redo()">Redo</a:button>
  • 33. Vector graphics <div> <a:chart> <a:axis mode="2D"> <a:graph mode="line" formula="sin(x)" /> </a:axis> </a:chart> </div>
  • 34. Putting it together Collaborative applications Databinding (remote) Complete widgets Server communication
  • 36. Vision The browser is the application platform of the future
  • 37. What we need Full feature UI platform IDE Desktop integration Serverside integration Make the browser compete withFlash and Silverlight
  • 38. APF Roadmap Apf 3.0 stable early Q1 2010 Apf 3.1 contentEditable WAI-ARIA support Virtual viewport for all widgets Offline applications Multiple query languages in Live Markup (JSON-Path, CSS3)
  • 39. Thank you RikArends @rikarendsrik@ajax.org www.ajax.org @ajax_org