HTML5, with its promises of plug-in free browsing, a 3D graphics and animation API, built-in video and audio tags, an offline data store, and Web Workers to manage long-running background processes, would seem to spell the end of proprietary RIA (rich Internet application) platforms. But the reports of the death of Flash and Silverlight, as the saying goes, have been greatly exaggerated.
To meet the needs of a continually evolving Web, companies like Adobe and Microsoft can enhance their plug-ins far more quickly than any standards group can push new specs through a committee. Work on HTML5 was first started in 2004, and it isn't anticipated to have actual W3C Recommendation status until at least 2022. The Web will continue to change, and it won't be the standards bodies who are leading the way.
[ Also on InfoWorld: Read Neil McAllister's primer, "What you can expect from HTML5." | Stay up to date with the latest news and views in software development with InfoWorld's Developer Central newsletter. ]
Today, the Web Hypertext Application Technology Working Group (WHATWG), a consortium aimed at driving new Web standards, can't even agree on which video codecs to support, leaving choices for interoperability to the individual browser makers. Support for the new HTML standard will come in dribs and drabs that only complicate the developer's job. Web content providers and developers of rich Internet apps will continue to gravitate toward the strongest RIA ecosystem -- the most complete development toolsets and the most reliable content delivery mechanisms, neither of which are addressed by HTML5.
The richest RIA platforms today (and for the foreseeable future) come from clashing titans Adobe and Microsoft, whose Flash and Silverlight platforms both combine excellent tools for developers and designers, broad client support, strong support for server-side technologies, digital rights management capabilities, and the ability to satisfy use cases as varied as enterprise dashboards, live video streaming, and online games. And each has spawned new updates, to Flash 10.1/AIR 2 and Silverlight 4 respectively, which put them on a near-level playing field. Which one should you choose?
Adobe Flash 10.1 and AIR 2 Adobe's Flash platform consists of the open source Flex SDK, a free Flex compiler, a proprietary Eclipse-based IDE called Flash Builder, the Flash Player browser plug-in, and Adobe AIR, a runtime for Windows, Mac, and Linux that allows rich Internet applications to be deployed directly to the desktop.
In addition, Adobe offers a suite of tools (available as part of CS5 or standalone) that enhance Flash development. In additon to the Flash Professional authoring tool, there's the new Flash Catalyst -- an interaction design tool for quick prototyping of user interfaces and behaviors -- and either LiveCycle Data Services or Adobe's open sourced BlazeDS for Java remoting and messaging.
Flash may not be coming to the iPhone or iPad, but it still has the edge over Silverlight in client support, thanks to the ubiquitous Flash Player. Flash is also stronger on digital rights management, providing granular controls over streaming media and data downloads via Flash Access 2.0. Adobe's development environment doesn't stack up with Microsoft's now that Silverlight tools have been integrated into Visual Studio 2010, nor has Adobe done as good a job as Microsoft in integrating design and development. Nevertheless, the Flash Builder IDE is no slouch, and Flash Catalyst is a welcome addition.
With Flash 10.1 and Flash Builder 4 the Flash platform has been bolstered for better data access. Flash remoting can now tap SOAP and REST Web services as well as ASP.Net, J2EE, PHP, BlazeDS, and Adobe's ColdFusion and LiveCycle Data Services server for data streaming.
Some may view Flash's lack of tight, direct integration with common server technologies -- such as Silverlight's access to .Net, COM, and WCF -- as a drawback. But I think this server-independent solution makes a perfect pairing for the flexible, modular applications in demand today.
With the advent of ActionScript 3, Adobe graduated from a general scripting language to a far more powerful, object-oriented, event-driven programming language. Developers gained familiar constructs like classes and objects, and Flash gained a multifold speed boost in the process.
New releases to Flash Player and AIR -- the first major AIR rev in two years -- bring important features onboard that address faults for which Adobe has recently faced much public criticism. Hibernation of inactive Flash apps (i.e., those running in a hidden browser tab) help improve perceived performance and reduce memory and power demands. Adobe has also added multitouch and gesture support, along with awareness for onscreen keyboards, making Flash friendlier to tablet and smartphone deployment.
New memory management tweaks and improved garbage collection routines will boost both desktop and mobile performance. In addition, hardware acceleration of video decoding and playback makes for a more efficient power consumption profile.
The Mac runtime has now been migrated to the Cocoa framework, Apple's Objective-C development platform. Providing native support for graphics, sound, and print functions, the realignment should improve compatibility and diminish the number Flash-induced Mac crashes.
With version 2, AIR digs deeper into the desktop, supporting calls to native code (.Net and Java libraries, for example) and drag-and-drop between the AIR client and the operating system, as well as support for UDP, IPv6 networking, and better network fault tolerance. The Windows client also gets easy DRM via the Adobe Flash Access 2 SDK, which provides facilities for controlling on-demand streaming and "expiring" content rentals.
Developers will find some nice facilities in the SDK and IDE as well. For example, the Flex SDK offers impressive data validation classes. Although they are not as well-suited to managing asynchronous data as their counterparts in Silverlight, they are very easy to implement.
As for the IDE, I won't rehash my review of Adobe Flash Builder 4, but highlights include comprehensive introspection of services and data sources, speedy two-way data binding, wizard-driven code generation for a variety of tasks, quick and easy wiring of data and event handlers to UI components, and prefabricated data paging routines that help ease coding to handle large data sets.
Since that review, which was written upon Flash Builder 4's release in March, Adobe also released Flash Catalyst, which is now promoted to first class citizen within the CS5 (Creative Suite 5) bundle. Catalyst's point-and-click framework makes it snap to wire event triggers and behaviors into your interfaces, and its symbiosis with the CS5 app suite (Illustrator, Photoshop, and Fireworks) simplifies passing projects from designer to developer.
Disappointingly, this workflow is a one-way street. Although I could bring Photoshop and Illustrator files into Catalyst, I had no luck going in the opposite direction. Modifications made to Catalyst files in Flash Builder induced errors when I reopened the files in Catalyst, despite my using the FXP file export option in Builder.
Still, Catalyst is an easy means for non-technical designers to contribute to UI development without getting bogged down by the underlying MXML language. Catalyst let me quickly define common interface components (scroll bars, buttons, etc.) from imported art files and tie them to data. Although the Catalyst interface is less than elegant (compared to other CS5 apps), its simplicity and Dreamweaver-style layout should minimize the learning curve.
Microsoft Silverlight 4 The Silverlight platform includes the Silverlight developer runtime and SDK, which are supported on Windows Vista, Windows 7, Windows XP SP3, and Windows Server 2008, along with desktop and browser clients for Windows and Mac OS X. Silverlight 4 Tools for Visual Studio 2010 lets Visual Studio developers target Silverlight projects with WCF RIA Services templates, libraries, and tools for managing desktop (out-of-browser) apps. It also includes the F# Runtime for Silverlight and an update for Microsoft Visual Web Developer Express 2010, which is a separate but freely available tool for developing Silverlight and AJAX-based apps.
Microsoft also offers additional apps that enhance Silverlight creation. Expression Blend 4, like Adobe's Flash Catalyst, streamlines prototyping and threading together UI interactions. Expression Encoder 4 is a free tool for encoding audio and video content, although you'll need the Pro version for H.264 encoding and support for IIS Smooth Streaming.
Silverlight's impressive development tools are a cut above those for Flash, and Microsoft's user interface design tools are tightly integrated. However, an RIA platform doesn't stand on tools alone, and Silverlight is a step behind Flash in such areas as native codec support, digital rights management, and hardware support.
Improvements on the latter front allow Silverlight 4 developers to incorporate input from webcams and microphones into their apps and to support output to printers, although Silverlight's bitmap-based printing pales in comparison to Adobe's crisp vector-based implementation. Silverlight 4 also ushers in touch support for tablets and smartphones, a new addition to Adobe's offering as well.
Complementing Windows Media DRM 10, Microsoft's latest PlayReady DRM technology secures digital content streams and downloads to Silverlight clients. Like Adobe's Flash Access 2, PlayReady can manage subscriptions and rentals, and it can persist licenses on the client for offline access.
But the most important addition in the Silverlight 4 release is the comprehensive developer support added to Visual Studio 2010. Previously, Visual Studio lacked a design interface for Silverlight, requiring developers to bang out their own XAML (Silverlight's XML-based UI description language) or use Microsoft Expression Blend. In either case, it was a cumbersome process. Visual Studio's new built-in XAML designer lets you drag and drop GUI components into place, while it generates the code in the background. There's no need to pop back and forth between Visual Studio and Expression Blend.
Visual Studio 2010 and Silverlight 4 Tools for Visual Studio 2010 and WCF RIA Services and tools install painlessly and include additional RIA services for SOAP and JSON endpoint mapping. Developers now gain an editable design surface with drag-and-drop data binding and property settings, as well as unified debugging inside a world-class IDE. Further, the ability to cross-compile the same code base for both .Net and Silverlight helps reduce dev cycles.
Under the hood, Microsoft's XAML parser was also given a much needed overhaul. Richer namespace management, direct content encapsulation, better whitespace handling, and error reporting all improve the framework.
Microsoft has a second authoring tool for Silverlight in Expression Blend 4, a user interface design tool akin to Adobe Catalyst. Expression Blend provides a graphical interface to prototype and thread Silverlight UI interactions without ever touching XAML.
Strictly a design tool in version 3, Expression Blend has been elevated to a Visual Studio-type coding facility in version 4 with full IntelliSense support and drag-and-drop element binding that really streamlines the process. I found it both more comprehensive and easier to work in than Adobe Catalyst.
Expression Blend wows with enhanced features like conditional behavior modeling. The new DataStore, a local dictionary for variable and state information, truly reduces coding to mere configuration, helping to close the designer-developer divide.
One of the bigger stumbling blocks for developers in Silverlight 3 was plugging in line-of-business data. Although these hurdles were surmountable via WCF (Windows Communication Foundation) services, Silverlight itself lacked connection options (such as Entity Framework and ADO.Net) available for Web and desktop apps. With WCF RIA Services in Silverlight 4, n-tier apps now have more flexibility in data access, validation, and authentication. By tapping the ASP.Net mid-layer, developers can better manage data-driven apps across the network.
New COM Interop access for trusted applications is a no brainer for Microsoft Office shops looking to use local system libraries. And finally, the the ability of Silverlight 4 applications to draw on Microsoft's MEF (Managed Extensibility Framework) -- a .Net 4 addition that simplifies pushing code updates -- is yet another hallmark of the professional-grade tools that Silverlight developers have at their disposal. Flash developers never had it this good.
Flash or Silverlight? Adobe has long dominated the RIA scene thanks to the ubiquitous Flash Player, estimated to run in upward of 93% of the world's Web browsers. But that domination was born in a near-vacuum of competitive choice. Adobe has improved the developer experience and finally constructed a bridge to its formidable design suite, but Microsoft has come further faster. To be fair, although Microsoft has made great strides with each release of Silverlight, much of the distance it has crossed had already been trod by Adobe.