Review: Silverlight No Flash In The Pan
Microsoft's new Silverlight technology will engage the average corporate Web developer more than ever before when it comes to creating rich, animated online content and applications, the CRN Test Center believes. Silverlight sports a simple framework, built purely on XML and .Net, that stands to significantly ease Web design and development.
That might prove inviting to developers who have found Adobe's marketing-leading Flash environment too complex and other options -- including Java, Ajax, CSS and open-source W3C technologies -- too rudimentary.
Like Flash, Silverlight is a cross-browser, cross-platform plug-in and framework for delivering rich, animated content. Silverlight, now available in beta and due for a 1.0 release this summer, is based on Microsoft's Windows Presentation Foundation and uses the software giant's XAML technology to generate and execute graphics and other multimedia content.
As far as animation for the Web goes, Microsoft now has a lead over open source because W3C's vector-based animation technology is still in its infancy. In fact, save for Apple's implementation of open-source Web technology in Mac OS X, other open-source vendors offer only basic, fragmented solutions. Adobe's Flash and Flex, including Java's UI frameworks, currently lead the field but have failed to capture the imagination of millions of corporate Web developers. And Microsoft knows this.
Flash and Java's user-interface (UI) technologies lack the language abstraction to attract the typical corporate Web developer. With the inception of Flex (originally under Macromedia), Adobe tried to attract corporate developers to the Flash environment. Both Flex and Silverlight can build sophisticated, rich internet applications using XML, but Silverlight doesn't have to depend on a scripting language to generate new graphical components in its library.
Silverlight's UIs are written in XAML, and objects in Silverlight are manipulated with scripting and .Net languages. Flex, on the other hand, has to rely on Actionscript to a large extent when building new components.
That's a huge difference. Actionscript is an imperative language, while XAML is declarative. Using imperative languages to build UIs goes back to the early days of DOS and Windows, when developers had to manage all of the API nuances when interacting with graphical panes. The process was so painful that it led to the invention of the integrated development environment (IDE), abstract object libraries, resource files and programming graphical elements using simple properties.
Flex is actually a thinly veiled set of Actionscript classes. Actionscript code is just as hard as programming games with a graphics engine, so developers often shy away from building graphical components. Moreover, the Flash environment isn't very intuitive for developers and graphics artists.
The Flash development environment awkwardly follows some of the workflows and animation techniques used by many leading animation engines. Although third-party Flash products reduce some of the complexity, most of them aren't robust enough to tackle enterprise-scale development.
Some advancements have come from the open-source community. For instance, a new open-source framework called Gaia aims to simplify front-end Flash development by allowing developers and designers to quickly build graphical assets.
With Silverlight, all of the components are generated using simple declarative procedures. Here's an example right out of Silverlight's documentation (click here to see code) that uses key frames, interpolation and timing to move a rectangle around a page.
The example clearly shows that there's less to remember when using declarative programming. Essentially, developers can do more animation and graphics manipulation with less code. But even XAML is a little hairy, so Microsoft sells Expression Blend, a graphics environment for designing vector-based UIs. At a glance, Blend is more intuitive than the Flash environment. What's more, Blend generates XAML and works well with VB.Net and JavaScript.
At the moment, Silverlight developers must stay within .Net's boundaries. Yet that might change as the technology matures. Silverlight's architecture is extensible, so other technologies can interact with it as long as they work with the CLR. The Silverlight plug-in works with JavaScript, IronPython and client/server-based .Net programming languages such as VB.Net. Since IronPython covers the Python language and libraries, non-.Net open-source applications coded in Python can be migrated to .Net and updated with new, sophisticated UIs.
However, Silverlight's rendering engine still has a ways to go before it catches up to Flash. From what the Test Center has seen so far, Silverlight's animation and rendering capabilities aren't as clean as Flash's animations.
But there's no discounting Silverlight's strong promise. Watch out Flash!