Flex vs. HTML 5 for RIAs Pamela Fox @pamelafox http://imagine-it.org Ignite Sydney 2009
The web is now strewn with rich web apps, and honestly, they’re kind of a bitch to make. In the next 5 minutes, I’ll describe 2 emerging technologies that will make web app development faster.
RIA RIA stands for “Rich Internet Application.” It’s basically a web app that has all the functionality a user expects of a desktop app – like Google Spreadsheets compared to MS Excel. RIAs are pretty much a hack right now, but with new technologies, they’re becoming less so.
HTML5 HTML 1.0 HTML 2.0 HTML 3.0 HTML 3.2 HTML 4.0 HTML5 1991 1994 1995 1997 2000 XHTML 1.0 <!DOCTYPE HTML> <html> <head><title>HTML 5</title></head> <body>Hello World!</body> </html> HTML5 is the next evolution of HTML, and will be backward compatible with existing HTML. As the spec is being worked on, parts of it being gradually adopted by the various browsers. The whole spec likely won’t be officially done for another decade.
Flex Flash Player ActionScript 1.0 ActionScript 2.0 Flex 1.0 ActionScript 3.0 1997 2000 2003 2004 Flex 3.0 2006 Flex 2.0 AIR 2007 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?>  <mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; >  <mx:Panel title=&quot;My Application&quot; >  <mx:Label text=&quot;Hello World!&quot;/>  </mx:Panel>  </mx:Application>  Flex is basically Flash for application designers - so it combines the power of Flash with things like UI widgets. AIR is a framework that works with Flex to let you make downloadable desktop applications.
Openness Spec/SDK Compiler Runtime Flex  HTML5 Open Standard (WHATWG) Open Source (MPL) Closed->Open  (IE->Chrome,V8,Webkit) Closed (FVM) N/A Adobe has open-sourced the Flex SDK/Spec/Compiler, but not the flash player runtime. The WHATWG group is working on the open HTML5 spec, but most browser runtimes are closed.
UI Widgets Flex  HTML5 <datagrid></datagrid> <menu></menu> mx.controls.* HDividedBox TabNavigator Tree MenuBar DataGrid Flex prides itself on providing many different UI widgets (containers, lists, menus, navigators, etc). HTML5 shies away from this and other presentational tags, just adding datagrid and menu. And as indicated by that question mark, there are no implementations of these tags yet, so we have no idea what they might look like.
Forms Controls Validation Flex  HTML5 mx.controls.ColorPicker, mx.controls.DateChooser input type=“list”, =“range”, =“date” input type=“email”, =“url” checkValidity mx.validators.PhoneNumberValidator formIsValid HTML5 adds many new input types, Flex adds a couple nifty controls, and both of them offer new ways of validating user input without much effort. For example, you can check the validity of an email address (which would otherwise be a huge RegEx). You can also query a boolean to see if a form is valid, and in HTML5, you can use pseudo classes for styling invalid form fields.
Vector Graphics Flex  HTML5 flash.display.Graphics <canvas></canvas> Vector graphics means drawing lines and shapes of different styles. Flash has always had graphics as its focus and been amazing at this, HTML has petered around with various incompatible specs like SVG and VML. Finally, HTML5 introduces the canvas element which gives us fast vector graphics.
3D Graphics Flex  HTML5 flash.geom.Matrix3D PaperVision3D, … canvas.getContext(‘3d’) 3D Graphics means creating scenes, setting up cameras/lighting, and doing 3d transformations. Though Flash only recently offered actual native 3d support in Player 10, there are many open-source flash 3d projects that simulate 3d just fine. The HTML5 spec suggests that there may be a 3d context for the canvas object, and a few browsers are experimenting with what that might look like.
Bitmap Manipulation Flex  HTML5 canvas.getImageData,setImageData,drawImage flash.filters.* mx.effects.* flash.geom.ColorTransform flash.display.BitmapData Once you have graphics, you want to manipulate them. Flex lets you change the individual pixels, or easily apply different filters, effects, and transforms. Canvas only gives you raw pixel access, but with that, anything is possible… just harder.
Video Flex  HTML5 OGG? Control Format mx.controls.VideoDisplay FLV <video src=“”></video> Flash has always been the obvious choice for displaying videos on the web -- Youtube is the big example of that - and Flex makes it even easier with more controls. HTML finally introduces native browser support for videos via a video tag which will most likely support the OGG video format.
History Back Undo Flex  HTML5 History, PopStateEvent historyManagementEnabled=“true&quot;  HistoryManager UndoManager, UndoManagerEvent null There are two types of history a user expects in an app. The first is navigational history - i.e. browser back button - which both Flex and HTML5 support. The second is undo history, such as in a drawing app, and only HTML5 proposes native support for that.
Persistent Connections Flex  HTML5 WebSocket flash.net.Socket It’s always been possible to do this by connecting to sockets in Flash, which is why we see so many games and collaborative apps in Flash. There are various hacks for how to do this in HTML, such as COMET, but HTML5 makes it infinitely easier by providing native support for web sockets.
Drag + Drop Flex (AIR)  HTML5 DataTransfer, DragEvent flash.desktop.Clipboard flash.events.NativeDragEvent, flash.desktop.TransferableData It’s not just dragging and dropping inside an application, but also dragging, dropping and copying, pasting from the desktop or across different applications. All of this is made possible in HTML5, and in Flex AIR applications.
File System Read Write Flex(AIR)  HTML5 input type=“upload” File,  FileStream,  FileMode localStorage? Users expect their apps to access stuff on the file system. Flex AIR apps can both read and write to the file system, while HTML5 just maintains the upload input type. HTML5 does however have a localStorage API which can accomplish similar things.
Offline Access Resources State  Data Flex (AIR)  HTML5 flash.data.SQLConnection Database, SQLTransaction, SQLResultSet localStorage <html manifest=“http...”> ApplicationCache air.Event.NETWORK_CHANGE  URLMonitor Navigator.onLine WindowedApplication This means the app must cache its resources and data, and as a bonus, know whether its offline or online. Flex AIR apps and HTML5 websites have the ability to do all of this. There’s no implementation of it for HTML5 yet, but you can use Gears for a similar experience.
Development Flex  HTML5 FlexBuilder DreamWeaver, etc. It’s always easier to build apps with an IDE. For Flex, there’s FlexBuilder, built off the Eclipse platform and just a few hundred dollars. For HTML, there are many options but the most popular is DreamWeaver (also from Adobe!).
Testing Unit Integration Flex  HTML5 JSUnit ASUnit Selenium, WebDriver, Watir Fluint? Unit testing is easy in both Flex and HTML5 via ASUnit and JSUnit. Integration (or end-to-end) testing is a bit trickier. There are popular open-source options for HTML5, and nothing really established for Flex yet.
Compatibility Flex  HTML5 10, 9, 8, 7, 6, 5, …. 3, 2, .. 3, 2, .. 8, 7,  6 , .. 1, Beta, .. ? Flex developers need to worry about the version of Flash Player installed, while HTML developers need to worry about all the different browsers and different versions of browsers. In the HTML5 Spec, there’s a legend next to each section indicating browser support. And, of course, everyone has to worry about mobile support. Or lack thereof…
Who wins? When you’re deciding what language to write your web app in, the big advantage of Flex is that it  actually   exists . The HTML5 spec is exactly that -  just a spec-  so the best you can hope for is gradual adoption over the next decade. So it’s up to you whether you want a quick fix or a long-term solution. (Or, don’t decide: Just use them both, and get the best of both worlds!)

More Related Content

PPT
Flex vs HTML5
PPT
Opening the mobile web mozilla and firefox os-chit thiri maung
PPT
Apache Flex: Overview
PPTX
Open Source examples from Adobe : Oscon kiosk
PDF
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PDF
Cloud Apache OpenOffice based on HTML5
PPS
It's Time for Silverlight @iRajLal
PPT
Adobe flex an overview
Flex vs HTML5
Opening the mobile web mozilla and firefox os-chit thiri maung
Apache Flex: Overview
Open Source examples from Adobe : Oscon kiosk
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
Cloud Apache OpenOffice based on HTML5
It's Time for Silverlight @iRajLal
Adobe flex an overview

What's hot (16)

PPTX
Adobe Flex builder by elmagnif
PPT
Ria Development With Flex And PHP
PPT
Flex 4 Overview
ODP
Better Drupal Interaction Design with Flex
ZIP
A Brief Intro to Adobe Flex
PDF
Building Desktop RIAs with PHP, HTML & Javascript in AIR
PPT
Microsoft Silverlight
PPT
Silverlight
PPT
Adobe® Flex™
PDF
Building Desktop RIAs with PHP, HTML & Javascript in AIR
PPT
Uncovering Windows - Silverlight Seminar
PPT
Flex And Ria
PPT
Flex In Dot Net
PPT
Training on webwroks1
PPTX
Application innovation & Developer Productivity
DOCX
Entity framework (EF) 7
Adobe Flex builder by elmagnif
Ria Development With Flex And PHP
Flex 4 Overview
Better Drupal Interaction Design with Flex
A Brief Intro to Adobe Flex
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Microsoft Silverlight
Silverlight
Adobe® Flex™
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Uncovering Windows - Silverlight Seminar
Flex And Ria
Flex In Dot Net
Training on webwroks1
Application innovation & Developer Productivity
Entity framework (EF) 7
Ad

Similar to Flex vs. HTML5 for RIAS (20)

KEY
Screw HTML5, make cool shit with AIR
PPT
Buzz & fuss about html5
PDF
Html5 workshop part 1
PDF
HTML5 Technical Executive Summary
KEY
Dojo & HTML5
PPT
HTML5 vs Flash
PPT
HTML5 Webinar - Mind Storm Software
KEY
Introduction to HTML5/CSS3 In Drupal 7
PDF
HTML5 features & JavaScript APIs
PPTX
Practical html5
PPTX
HTML5: An Overview
PPTX
PPT
Thadomal IEEE-HTML5-Workshop
PPT
Practical HTML5
PPTX
Mobile applications for SharePoint using HTML5
PPT
I didnt know Flex could do this
PPT
Flex & Drupal Integration
PPT
Building a Real-World Application with Adobe Flex 2
PDF
Flex Introduction
PDF
HTML5 and friends
Screw HTML5, make cool shit with AIR
Buzz & fuss about html5
Html5 workshop part 1
HTML5 Technical Executive Summary
Dojo & HTML5
HTML5 vs Flash
HTML5 Webinar - Mind Storm Software
Introduction to HTML5/CSS3 In Drupal 7
HTML5 features & JavaScript APIs
Practical html5
HTML5: An Overview
Thadomal IEEE-HTML5-Workshop
Practical HTML5
Mobile applications for SharePoint using HTML5
I didnt know Flex could do this
Flex & Drupal Integration
Building a Real-World Application with Adobe Flex 2
Flex Introduction
HTML5 and friends
Ad

More from Pamela Fox (20)

PDF
Teaching Programming Online
PDF
Engineering culture
KEY
Django Admin: Widgetry & Witchery
PDF
A Year of Hermit Hacking
PDF
The Developer Experience
PDF
Making JavaScript Libraries More Approachable
PPT
How I became a born again vegetable-tarian
KEY
The Developer Experience
PPT
No, Really, I'm Shy
PPT
Writing Apps the Google-y Way (Brisbane)
PPT
Writing Apps the Google-y Way
PPT
The Wonders of the "Onesie"
PPT
I’M A Barbie Girl In A CS World
PPT
Google Wave 20/20: Product, Protocol, Platform
PPT
Collaborative Mapping with Google Wave
PPT
Google Products: Deep Dive on Google Maps
PPT
Google Products & Google Maps
PPT
Mashups & APIs
PPT
A World of Words
PPT
Web APIs & Google APIs
Teaching Programming Online
Engineering culture
Django Admin: Widgetry & Witchery
A Year of Hermit Hacking
The Developer Experience
Making JavaScript Libraries More Approachable
How I became a born again vegetable-tarian
The Developer Experience
No, Really, I'm Shy
Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way
The Wonders of the "Onesie"
I’M A Barbie Girl In A CS World
Google Wave 20/20: Product, Protocol, Platform
Collaborative Mapping with Google Wave
Google Products: Deep Dive on Google Maps
Google Products & Google Maps
Mashups & APIs
A World of Words
Web APIs & Google APIs

Recently uploaded (20)

PDF
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
SaaS reusability assessment using machine learning techniques
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
Build Real-Time ML Apps with Python, Feast & NoSQL
PDF
Introduction to MCP and A2A Protocols: Enabling Agent Communication
PPTX
MuleSoft-Compete-Deck for midddleware integrations
PPTX
agenticai-neweraofintelligence-250529192801-1b5e6870.pptx
PDF
Auditboard EB SOX Playbook 2023 edition.
PDF
LMS bot: enhanced learning management systems for improved student learning e...
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
Basics of Cloud Computing - Cloud Ecosystem
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
EIS-Webinar-Regulated-Industries-2025-08.pdf
Build automations faster and more reliably with UiPath ScreenPlay
giants, standing on the shoulders of - by Daniel Stenberg
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
Lung cancer patients survival prediction using outlier detection and optimize...
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
4 layer Arch & Reference Arch of IoT.pdf
SaaS reusability assessment using machine learning techniques
Connector Corner: Transform Unstructured Documents with Agentic Automation
Build Real-Time ML Apps with Python, Feast & NoSQL
Introduction to MCP and A2A Protocols: Enabling Agent Communication
MuleSoft-Compete-Deck for midddleware integrations
agenticai-neweraofintelligence-250529192801-1b5e6870.pptx
Auditboard EB SOX Playbook 2023 edition.
LMS bot: enhanced learning management systems for improved student learning e...

Flex vs. HTML5 for RIAS

  • 1. Flex vs. HTML 5 for RIAs Pamela Fox @pamelafox http://imagine-it.org Ignite Sydney 2009
  • 2. The web is now strewn with rich web apps, and honestly, they’re kind of a bitch to make. In the next 5 minutes, I’ll describe 2 emerging technologies that will make web app development faster.
  • 3. RIA RIA stands for “Rich Internet Application.” It’s basically a web app that has all the functionality a user expects of a desktop app – like Google Spreadsheets compared to MS Excel. RIAs are pretty much a hack right now, but with new technologies, they’re becoming less so.
  • 4. HTML5 HTML 1.0 HTML 2.0 HTML 3.0 HTML 3.2 HTML 4.0 HTML5 1991 1994 1995 1997 2000 XHTML 1.0 <!DOCTYPE HTML> <html> <head><title>HTML 5</title></head> <body>Hello World!</body> </html> HTML5 is the next evolution of HTML, and will be backward compatible with existing HTML. As the spec is being worked on, parts of it being gradually adopted by the various browsers. The whole spec likely won’t be officially done for another decade.
  • 5. Flex Flash Player ActionScript 1.0 ActionScript 2.0 Flex 1.0 ActionScript 3.0 1997 2000 2003 2004 Flex 3.0 2006 Flex 2.0 AIR 2007 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; > <mx:Panel title=&quot;My Application&quot; > <mx:Label text=&quot;Hello World!&quot;/> </mx:Panel> </mx:Application> Flex is basically Flash for application designers - so it combines the power of Flash with things like UI widgets. AIR is a framework that works with Flex to let you make downloadable desktop applications.
  • 6. Openness Spec/SDK Compiler Runtime Flex HTML5 Open Standard (WHATWG) Open Source (MPL) Closed->Open (IE->Chrome,V8,Webkit) Closed (FVM) N/A Adobe has open-sourced the Flex SDK/Spec/Compiler, but not the flash player runtime. The WHATWG group is working on the open HTML5 spec, but most browser runtimes are closed.
  • 7. UI Widgets Flex HTML5 <datagrid></datagrid> <menu></menu> mx.controls.* HDividedBox TabNavigator Tree MenuBar DataGrid Flex prides itself on providing many different UI widgets (containers, lists, menus, navigators, etc). HTML5 shies away from this and other presentational tags, just adding datagrid and menu. And as indicated by that question mark, there are no implementations of these tags yet, so we have no idea what they might look like.
  • 8. Forms Controls Validation Flex HTML5 mx.controls.ColorPicker, mx.controls.DateChooser input type=“list”, =“range”, =“date” input type=“email”, =“url” checkValidity mx.validators.PhoneNumberValidator formIsValid HTML5 adds many new input types, Flex adds a couple nifty controls, and both of them offer new ways of validating user input without much effort. For example, you can check the validity of an email address (which would otherwise be a huge RegEx). You can also query a boolean to see if a form is valid, and in HTML5, you can use pseudo classes for styling invalid form fields.
  • 9. Vector Graphics Flex HTML5 flash.display.Graphics <canvas></canvas> Vector graphics means drawing lines and shapes of different styles. Flash has always had graphics as its focus and been amazing at this, HTML has petered around with various incompatible specs like SVG and VML. Finally, HTML5 introduces the canvas element which gives us fast vector graphics.
  • 10. 3D Graphics Flex HTML5 flash.geom.Matrix3D PaperVision3D, … canvas.getContext(‘3d’) 3D Graphics means creating scenes, setting up cameras/lighting, and doing 3d transformations. Though Flash only recently offered actual native 3d support in Player 10, there are many open-source flash 3d projects that simulate 3d just fine. The HTML5 spec suggests that there may be a 3d context for the canvas object, and a few browsers are experimenting with what that might look like.
  • 11. Bitmap Manipulation Flex HTML5 canvas.getImageData,setImageData,drawImage flash.filters.* mx.effects.* flash.geom.ColorTransform flash.display.BitmapData Once you have graphics, you want to manipulate them. Flex lets you change the individual pixels, or easily apply different filters, effects, and transforms. Canvas only gives you raw pixel access, but with that, anything is possible… just harder.
  • 12. Video Flex HTML5 OGG? Control Format mx.controls.VideoDisplay FLV <video src=“”></video> Flash has always been the obvious choice for displaying videos on the web -- Youtube is the big example of that - and Flex makes it even easier with more controls. HTML finally introduces native browser support for videos via a video tag which will most likely support the OGG video format.
  • 13. History Back Undo Flex HTML5 History, PopStateEvent historyManagementEnabled=“true&quot; HistoryManager UndoManager, UndoManagerEvent null There are two types of history a user expects in an app. The first is navigational history - i.e. browser back button - which both Flex and HTML5 support. The second is undo history, such as in a drawing app, and only HTML5 proposes native support for that.
  • 14. Persistent Connections Flex HTML5 WebSocket flash.net.Socket It’s always been possible to do this by connecting to sockets in Flash, which is why we see so many games and collaborative apps in Flash. There are various hacks for how to do this in HTML, such as COMET, but HTML5 makes it infinitely easier by providing native support for web sockets.
  • 15. Drag + Drop Flex (AIR) HTML5 DataTransfer, DragEvent flash.desktop.Clipboard flash.events.NativeDragEvent, flash.desktop.TransferableData It’s not just dragging and dropping inside an application, but also dragging, dropping and copying, pasting from the desktop or across different applications. All of this is made possible in HTML5, and in Flex AIR applications.
  • 16. File System Read Write Flex(AIR) HTML5 input type=“upload” File, FileStream, FileMode localStorage? Users expect their apps to access stuff on the file system. Flex AIR apps can both read and write to the file system, while HTML5 just maintains the upload input type. HTML5 does however have a localStorage API which can accomplish similar things.
  • 17. Offline Access Resources State Data Flex (AIR) HTML5 flash.data.SQLConnection Database, SQLTransaction, SQLResultSet localStorage <html manifest=“http...”> ApplicationCache air.Event.NETWORK_CHANGE URLMonitor Navigator.onLine WindowedApplication This means the app must cache its resources and data, and as a bonus, know whether its offline or online. Flex AIR apps and HTML5 websites have the ability to do all of this. There’s no implementation of it for HTML5 yet, but you can use Gears for a similar experience.
  • 18. Development Flex HTML5 FlexBuilder DreamWeaver, etc. It’s always easier to build apps with an IDE. For Flex, there’s FlexBuilder, built off the Eclipse platform and just a few hundred dollars. For HTML, there are many options but the most popular is DreamWeaver (also from Adobe!).
  • 19. Testing Unit Integration Flex HTML5 JSUnit ASUnit Selenium, WebDriver, Watir Fluint? Unit testing is easy in both Flex and HTML5 via ASUnit and JSUnit. Integration (or end-to-end) testing is a bit trickier. There are popular open-source options for HTML5, and nothing really established for Flex yet.
  • 20. Compatibility Flex HTML5 10, 9, 8, 7, 6, 5, …. 3, 2, .. 3, 2, .. 8, 7, 6 , .. 1, Beta, .. ? Flex developers need to worry about the version of Flash Player installed, while HTML developers need to worry about all the different browsers and different versions of browsers. In the HTML5 Spec, there’s a legend next to each section indicating browser support. And, of course, everyone has to worry about mobile support. Or lack thereof…
  • 21. Who wins? When you’re deciding what language to write your web app in, the big advantage of Flex is that it actually exists . The HTML5 spec is exactly that - just a spec- so the best you can hope for is gradual adoption over the next decade. So it’s up to you whether you want a quick fix or a long-term solution. (Or, don’t decide: Just use them both, and get the best of both worlds!)

Editor's Notes

  • #2: The web is now strewn with rich web apps, and honestly, they’re kind of a bitch to make. In 5 minutes, I’ll describe 2 emerging technologies that will make web app development faster so that you can spend more time using Chrome’s incognito window. http://anthonyfranco.wordpress.com/2007/06/22/flex-and-ajax-friends-or-foes/ http://www.slideshare.net/peterelst/ria-meets-desktop-439958 http://www.slideshare.net/tbisaacs/flash-flex-air-a-brief-survey?src = related_normal&amp;rel =290787