Silverlight vs. Flash: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Ganggang Hu
No edit summary
imported>Meg Taylor
(copyedit)
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{subpages}}
With the rocket development of [[Internet]], the techniques used for building web pages is improving all the time, which not only brings people more information but new experience of surfing on the [[Internet]]. Many techniques have been applied to enrich the web page these years, from totally the plaintext in early 90's, first to web page with pictures and then that with embedded sounds. Later, Sun Microsystems proposed [[Java programming language|Java]] Applet, which was popular for not long time until being conquered by Adobe [[Flash]]. Now [[Microsoft]] proposed [[Microsoft Silverlight|Silverlight]] technology. Some people say that [[Microsoft]] made a wrong decision while others claim that [[Microsoft Silverlight|Silverlight]] will kill [[Flash]] at last. According to the next step in the value chain, for [[Flash]], it focus on building rich applications with Flex. For [[Microsoft Silverlight|Silverlight]], [[Ajax]] is becoming the way to add more value.
With the rocket development of [[Internet]], the techniques used for building web pages is improving all the time, which not only brings people more information but new experience of surfing on the [[Internet]]. Many techniques have been applied to enrich the web page these years, from totally the plaintext in early 90's, first to web page with pictures and then that with embedded sounds. Later, Sun Microsystems proposed [[Java programming language|Java]] Applet, which was popular for not long time until being conquered by Adobe [[Flash]]. Now [[Microsoft]] proposed [[Microsoft Silverlight|Silverlight]] technology. Some people say that [[Microsoft]] made a wrong decision while others claim that [[Microsoft Silverlight|Silverlight]] will kill [[Flash]] at last. According to the next step in the value chain, for [[Flash]], it focus on building rich applications with Flex. For [[Microsoft Silverlight|Silverlight]], [[Ajax]] is becoming the way to add more value.


[[Image:FlashSilverlight.jpg|right|thumb|350px|{{#ifexist:Template:FlashSilverlight.jpg/credit|{{FlashSilverlight.jpg/credit}}<br/>|}}Made by Ganggang Hu, 2008]]
{{Image|FlashSilverlight.jpg|right|350px|Made by Ganggang Hu, 2008}}
 
So, [[Microsoft Silverlight|Silverlight]] and [[Flash]] ---- Who is going to win?
 


== Technology ==
== Technology ==
Line 19: Line 17:
*Multiple [[Web browser|browsers]] support such as IE, Firefox, Safari and Opera
*Multiple [[Web browser|browsers]] support such as IE, Firefox, Safari and Opera


On the other hand, both of them have their unique features. For example, [[Flash]] has offline document support, rich set of control library and test tools. While [[Microsoft Silverlight|Silverlight]] has hardware-assisted editing and encoding solutions, [[XML]]-based presentation for SEO, and content access protection (DRM).
On the other hand, both of them have their unique features. For example, [[Flash]] has offline document support, rich set of control library and test tools. While [[Microsoft Silverlight|Silverlight]] has hardware-assisted editing and encoding solutions, [[XML]]-based presentation for Search Engine Optimization (SEO), and content access protection, [[Digital Rights Management|Digital Rights Management]] ([[Digital Rights Management|DRM]]).
 
Below is the table of technology comparison between [[Flash]] and [[Microsoft Silverlight|Silverlight]].
 
<table border="1px">
  <tr><th>&nbsp;</th><th>[[Microsoft Silverlight|Silverlight]]</th><th>[[Flash]]</th></tr>
  <tr><td><b>Animation manipulation</b></td><td>time based</td><td>frame based</td></tr>
  <tr><td><b>Video codec</b></td><td>industry standard VC-1 codec</td><td>no industry standard</td></tr>
  <tr><td><b>Audio decoder</b></td><td>MP3, WMA, WMV</td><td>MP3</td></tr>
  <tr><td><b>Binary or text file</b></td><td>XAML text based and [[XML]] object</td><td>SWF binary shape records</td></tr>
  <tr><td><b>Platform support</b></td><td>[[Windows]], [[Apple Macintosh|Max OS X]], [[Linux]] (Moonlight), Mobile</td><td>[[Windows]], [[Apple Macintosh|Max OS X]], [[Linux]], Mobile</td></tr>
  <tr><td><b>Programming tools</b></td><td>Visual Studio, Expression Studio</td><td>[[ActionScript]]</td></tr>
</table>


=== Animation manipulation ===
=== Animation manipulation ===
[[Flash]] is frame based, which requires users to compute the duration of an animation. For example, there are 12 frames per second in [[Flash]] animation model. If users want an object to move 5 seconds continuously, they need to calculate how many frames 5 seconds will take. Also, the player doesn't maintain any frame rate unless users embed blank audio tracks.  
[[Flash]] is frame based, which requires users to compute the duration of an animation. For example, there are 12 frames per second in [[Flash]] animation model. If users want an object to move 5 seconds continuously, they need to calculate how many frames 5 seconds will take. Also, the player doesn't maintain any frame rate unless users embed blank audio tracks.  


Instead of frame based, [[Microsoft Silverlight|Silverlight]] supports the time based WPF animation model, which allows users to define the start and end conditions without calculating positions on various frames. Then [[Microsoft Silverlight|Silverlight]] can generate animation process automatically.<ref>Ezell, Jesse. [http://weblogs.asp.net/jezell/archive/2007/05/03/silverlight-vs-flash-the-developer-story.aspx "Silverlight vs. Flash: The Developer Story"]</ref>  
Instead of frame based, [[Microsoft Silverlight|Silverlight]] supports the time based Windows Presentation Foundation (WPF) animation model, which allows users to define the start and end conditions without calculating positions on various frames. Then [[Microsoft Silverlight|Silverlight]] can generate animation process automatically.<ref>Ezell, Jesse. [http://weblogs.asp.net/jezell/archive/2007/05/03/silverlight-vs-flash-the-developer-story.aspx "Silverlight vs. Flash: The Developer Story"]</ref>


Additionally, when create animation, the Adobe suite of products can easily share objects and files between applications such as Illustrator, [[Flash]], [[Dreamweaver]], Photoshop, etc. While [[Microsoft Silverlight|Silverlight]] has these options built into it already along with several other tempting products such as ad-insertion and free streaming solutions.<ref>Woelker, Jeff. [http://www.jeffwoelker.com/2007/05/18/adobe-flash-versus-microsoft-silverlight-comparison-flash-wins-for-the-short-term/ "Adobe Flash versus Microsoft Silverlight Comparison ~ Flash Wins for the Short Term"]</ref>
=== Video codec and audio decoder ===
[[Flash]] supports multiple video formats with high quality codec and nice bandwidth usage, such as scalable full screen video up to HD(720p). The price of its media server licensing(unlimited bandwidth) is only one forth of that of [[Microsoft Silverlight|Silverlight]]. Except for its Sorenson’s proprietary H.263 codec, [[Flash]] has no industry standard video codec yet. In addition, the audio formats supported by [[Flash]] are all proprietary, except for the MP3 and Adaptive Differential Pulse Code Modulation (ADPCM) formats, whose quality of compression are not impressive, and still require licensing fees and third party conversion libraries.


=== Video codec and audio decoder ===
Compare to [[Flash]], [[Microsoft Silverlight|Silverlight]] implements industry standard VC-1 codec for video, and offers support for Windows Media Video (WMV), Windows Media Audio (WMA) and MP3. [[Microsoft]] makes available a free Encoder Software Development Kit (SDK) for producing WMA and WMV that allows developers to encode video and audio format for easier integration and cheaper cost.
[[Flash]] supports multiple video formats with high quality codec and nice bandwidth usage, such as scalable full screen video up to HD(720p). The price of its media server licensing(unlimited bandwidth) is only one forth of that of [[Microsoft Silverlight|Silverlight]]. But except that its Sorenson’s proprietary H.263 implementation is loosely based on a standard, [[Flash]] has no industry standard video codec yet. Also, the audio formats [[Flash]] supports are all proprietary, except for MP3 and ADPCM, whose quality of compression is not so impressive, and still requires licensing fees and third party conversion libraries.
 
The table below shows the comparison of video codec between [[Flash]] and [[Microsoft Silverlight|Silverlight]] using different computer systems.<ref>Ozer, Jan. [http://www.flashcomguru.com/index.cfm/2008/7/9/silverlight-flash-codec-comparions "Silverlight vs Flash: Video Codec Comparison"]</ref>


Compare to [[Flash]], [[Microsoft Silverlight|Silverlight]] implements industry standard VC-1 codec for video, as well as offering support for WMV and WMA. [[Microsoft]] makes available a free Encoder SDK for producing WMA and WMV so that people are able to encode by themselves with easier integration and cheaper cost.
<table border="1px">
  <tr><th>&nbsp;</th><th>[[Flash]] VP6E</th><th>[[Flash]] VP6S</th><th>[[Flash]] H.264-High</th><th>[[Microsoft Silverlight|Silverlight]]</th></tr>
  <tr><td>PowerMac Dual 2.7 GHz PPC G5, OS 10.4.11, FireFox, [[Flash]] Player 9.0.115.0, SL 1.0.30401.0</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
  <tr><td>Processor(percentage of 2 processors)</td><td>72.0%</td><td>66.3%</td><td>85.8%</td><td>108.0%</td></tr>
  <tr><td>Drop frames</td><td>no</td><td>no</td><td>yes</td><td>yes</td></tr>
  <tr><td>Estimated frame rate</td><td>full</td><td>full</td><td>5-6 fps</td><td>1-2 fps</td></tr>
  <tr><td>Drop audio</td><td>no</td><td>no</td><td>yes</td><td>no</td></tr>
  <tr><td>HP xw4100, 3.0 GHz P4 with HTT, [[Windows]] XP, FireFox [[Flash]] Player 9.0.124, SL 1.0.30401.0</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
  <tr><td>Processor</td><td>87.5%</td><td>97.1%</td><td>NA</td><td>NA</td></tr>
  <tr><td>Drop frames</td><td>yes</td><td>no</td><td>yes-stopped</td><td>yes-lost synch</td></tr>
  <tr><td>Estimated frame rate</td><td>2 fps</td><td>full</td><td>stopped</td><td>1 frame/3 seconds</td></tr>
  <tr><td>Drop audio</td><td>yes</td><td>no</td><td>yes</td><td>yes</td></tr>
  <tr><td>HP 8710P, 2.2 GHz Core 2 Duao, Vista, IE, [[Flash]] 9.0.124.0, SL 2.0.30226.2</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>Processor</td><td>51.9%</td><td>52.0%</td><td>34.8%</td><td>47.3%</td></tr>
  <tr><td>Drop frames</td><td>no</td><td>no</td><td>no</td><td>no</td></tr>
  <tr><td>Estimated frame rate</td><td>full</td><td>full</td><td>full</td><td>full</td></tr>
  <tr><td>Drop audio</td><td>no</td><td>no</td><td>no</td><td>no</td></tr>
  <tr><td>Dell Precision 390, 2.9 GHz Core 2 Duo, XP, IE, [[Flash]] 9.0.124.0, SL 2.0.30226.2</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
  <tr><td>Processor</td><td>22.7%</td><td>17.5%</td><td>7.7%</td><td>26.0%</td></tr>
  <tr><td>Drop frames</td><td>no</td><td>no</td><td>no</td><td>no</td></tr>
  <tr><td>Estimated frame rate</td><td>full</td><td>full</td><td>full</td><td>full</td></tr>
  <tr><td>Drop audio</td><td>no</td><td>no</td><td>no</td><td>no</td></tr>
</table>


=== Binary or text file ===
=== Binary or text file ===
[[Flash]] stores shapes using binary shape records. In order to write shape definitions, users need to either license a third party [[Flash]] file format SDK, or build libraries by themselves. While [[Microsoft Silverlight|Silverlight]] uses text based XAML, which can be output using an [[XML]] object. So users don't need to buy special libraries or write their own libraries.
[[Flash]] stores shapes using binary shape records. In order to write shape definitions, users need to either license a third party [[Flash]] file format SDK, or build their own libraries. On the other hand, [[Microsoft Silverlight|Silverlight]] uses text based Extensible Application Markup Language (XAML), which can be output using an [[XML]] object. This means that the users do not need to have their own special libraries.


[[Flash]] stores fonts glyphs using the same exact shape definitions that are used for any other shape. The player does not understand TTF files, so users need to use the Win32 APIs to figure out intricacies of fonts in the [[Flash]] file format documentation by themselves. But in [[Microsoft Silverlight|Silverlight]], WPF/E lets users embed true type font information directly into projects, and download that information with the downloader object without doing extra work.
[[Flash]] stores fonts glyphs using the same exact shape definitions that are used for any other shape. The player does not understand the True Type Font (TTF) files, which requires users to use the Win32 APIs to figure out the intricacies of fonts in the [[Flash]] file format documentation. But in [[Microsoft Silverlight|Silverlight]], the WPF engine lets users embed True Type Font (TTF) information directly into projects, and download that information using the downloader object without doing any other extra work.


However, with the capability of compiling down into a binary, [[Flash]] can stream tasks to progress events during the runtime, which is more satisfying than the pure text files in [[Microsoft Silverlight|Silverlight]], which brings the runtime from zero to hero before one can do anything. Furthermore, [[Flash]] has plenty of functionality encapsulated in the runtime. It has its own JIT compiler, its own language [[ActionScript]] and a healthy set of controls. But [[Microsoft Silverlight|Silverlight]] uses [[JavaScript]] as the scripting language and depends on the [[Web browser|browser]] for most of the interaction processing.
However, with the capability of compiling down into the binary, [[Flash]] can actually starts executing before it is fully downloaded, which is one of the serious benefits to using binary SWF (Shockwave [[Flash]]) and more satisfying than the pure text files in [[Microsoft Silverlight|Silverlight]], which brings the runtime from zero to hero before one can do anything. Furthermore, [[Flash]] has plenty of functionality encapsulated in the runtime. It has its own just-in-time (JIT) compiler, [[ActionScript]] and a healthy set of controls. On the other hand, [[Microsoft Silverlight|Silverlight]] uses [[JavaScript]] as the scripting language and depends on the [[Web browser|browser]] for most of the interaction processing.


=== Platform support ===
=== Platform support ===
[[Flash]] integrates with multiple platforms and languages. It supports [[Windows]], [[Apple Macintosh|Max OS X]], [[Linux]] and also moblie platforms. While [[Microsoft Silverlight|Silverlight]] has some limitations on this aspect. It mainly supports [[Windows]] and [[Apple Macintosh|Max OS X]]. But a newly developed project called Moonlight allows [[Linux]] users to see [[Microsoft Silverlight|Silverlight]] content on the web, such as videos, and run rich [[Internet]] applications. Written with a combination of [[C++]] and [[C# Programming Language|C#]] code, Moonlight for [[Linux]] Supports [[Microsoft Silverlight|Silverlight]] 1.0 was first released in May, 2008.<ref>LaMonica, Martin. [http://news.cnet.com/8301-10784_3-9731410-7.html "'Moonlight' makes progress on Silverlight for Linux"]</ref>  
[[Flash]] integrates with multiple platforms and languages. It supports [[Windows]], [[Apple Macintosh|Max OS X]], [[Linux]] and also mobile platforms. While [[Microsoft Silverlight|Silverlight]] has some limitations on this aspect. It mainly supports [[Windows]] and [[Apple Macintosh|Max OS X]]. Silverlight looks to be as far as Microsoft has ever gone as a company to embrace cross-platform and yet they still fail to give full support for Linux.<ref name=ted>Ted. [http://www.onflex.org/ted/2007/04/m-silverlight-vs-adobe-flash-player.php "M$ Silverlight vs. Adobe Flash Player: 'Begun the clone war has...'"]</ref> However, a newly developed project, called Moonlight by Mono open source project sponsored by Novell, allows [[Linux]] users to run [[Microsoft Silverlight|Silverlight]] applications on [[Linux]], provide a [[Linux]] SDK to build [[Microsoft Silverlight|Silverlight]] applications and reuse the [[Microsoft Silverlight|Silverlight]] engine built by Mono for desktop applications. <ref>[http://www.mono-project.com/Moonlight "Mono-Moonlight Official Webpage"]</ref> Written with a combination of [[C++]] and [[C# Programming Language|C#]] code, Moonlight ([[Linux]] supports for [[Microsoft Silverlight|Silverlight]] 1.0) was first released in May, 2008.<ref>LaMonica, Martin. [http://news.cnet.com/8301-10784_3-9731410-7.html "'Moonlight' makes progress on Silverlight for Linux"]</ref> In the mobile sector, Silverlight is spreading to mobile platform by building various applications on mobile devices. Mobile platforms supported by [[Microsoft Silverlight|Silverlight]] are Windows Mobile and Symbian (partner with Nokia).
 


=== Programming tool ===
=== Programming tool ===
Users can reuse [[C# Programming Language|C#]] classes from their tool inside exported contents. But there is no development environment for creating desktop applications which is based on [[ActionScript]]. In [[Flash]] route, users have to write all the classes and objects twice to keep pace with the tool changes. They need [[.NET Framework |.NET]] classes to handle the author time experience and [[Flash]] classes to handle the run-time. If there are [[Web server|server]] components, users need to switch back to [[.NET Framework |.NET]] and discard all the classes that the run time is using.
Unlike [[Flash]] that is largely built for graphic designers, [[Microsoft Silverlight|Silverlight]] allows users to create contents with the same tools they use on a daily basis (such as [[.NET Framework |Visual Studio .NET]]) in order to keep all the code for the [[Web server|server]] components, the authoring tool components, and the runtime/player components inside the same project.


As for the learning curve, [[HTML]], [[Javascript]] and [[Ajax]] developers will probably feel more familiar to [[Microsoft Silverlight|Silverlight]]. WPF/E builds upon the same development paradigm that web developers have gotten accustomed to while the [[Flash]], Flex and [[ActionScript]] field requires a fair amount of re-learning. <ref>Ziade, Richard. [http://www.basement.org/archives/2007/04/flash_silverlight_the_inbetwee.html "Flash, Silverlight & The In-Between OS"]</ref>
[[Microsoft]] provides a handful amount of programming tools to support its [[Microsoft Silverlight|Silverlight]]. Visual Studio 2005 (supports [[Microsoft Silverlight|Silverlight]] 1.0) and 2008 (supports [[Microsoft Silverlight|Silverlight]] 1.0 and Silverlight 2.0), and Expression Studio are the main programming tools that developers can use to build [[Microsoft Silverlight|Silverlight]] animations/applications. Programming languages which are supported by [[Microsoft Silverlight|Silverlight]] are [[JavaScript]], Visual Basic, and [[C# programming language|C#]].  


However, compare to Adobe, who has a deep cultural understanding of the creative process and strong experience with cross-platform support, the lack of experience with designer tools and inability to truly understand creativity or designers will be [[Microsoft]]'s inevitable obstacle, which may cut out large percentage of designer market.  
Adobe also provides its own developing tools to assist developers in creating [[Flash]] animations/applications. Such tools are Adoble [[Flash]] and Adobe Flex. However, compare to [[Microsoft Silverlight|Silverlight]], [[programming language]] supported by [[Flash]] is very limited. It is only supported by [[ActionScript]].


== Market ==
== Market ==
According to a survey given by Adobe System in June 2008, 99% computer users have installed [[Flash]] Player. But until then, there was still no official statistics about [[Microsoft Silverlight|Silverlight]] given by [[Microsoft]].
According to a survey given by Adobe System in June 2008, 99% of computer users have installed [[Flash]] Player. But until then, there was still no official statistics about [[Microsoft Silverlight|Silverlight]] given by [[Microsoft]].


Although [[Microsoft Silverlight|Silverlight]] has many advantages, it pales in front of [[Flash]] in terms of availability. It is not an unique [[Microsoft]] problem but a problem for any new offering when there is an incumbent who has a majority market share. Because [[Flash]] is so ubiquitous that it pushed QuickTime, Real Player, and windows movie files right out of the web space. As a juvenile in market, [[Microsoft Silverlight|Silverlight]] may need a long time to get acceptance for itself.
This significant difference of market share between [[Flash]] and [[Microsoft Silverlight|Silverlight]] may due to following reasons:
*[[Microsoft Silverlight|Silverlight]] was released as 1.0 in 2007 while [[Flash]] 1.0 was released in 1996. [[Flash]] already has sufficient time to grow, thrive and dominate the media plug-in market before [[Microsoft Silverlight|Silverlight]] was born. One way for [[Microsoft]] to increase the number of [[Microsoft Silverlight|Silverlight]] users is to include [[Microsoft Silverlight|Silverlight]] in Internet Explorer.
*Users choose to view content built in [[Flash]] and therefore need the plug-in. Since [[Microsoft Silverlight|Silverlight]] is still new, there is relatively little knowledge of its existence (among non developers) and application created in it. [[Microsoft]] is providing more [[Microsoft Silverlight|Silverlight]] content, such as the NBC online 2008 [[Olympic Games]].


== Conclusion ==
Although [[Microsoft Silverlight|Silverlight]] has many advantages over [[Flash]], it pales in front of [[Flash]] in terms of availability. It is not a unique [[Microsoft]] problem but a problem for every new offering when there is an incumbent who has a majority market share. Because [[Flash]] is so ubiquitous that it pushed QuickTime, Real Player, and windows movie files right out of the web space. As a juvenile in market, [[Microsoft Silverlight|Silverlight]] may need a long time to get acceptance for itself.
Based on previous discussion, here is a table including technology and market comparison between Flash and Silverlight.


<table border="1px">
== See also ==
  <tr><th>&nbsp;</th><th>[[Microsoft Silverlight|Silverlight]]</th><th>[[Flash]]</th></tr>
*[[Microsoft Silverlight|Microsoft Silverlight]]
  <tr><td><b>Animation manipulation</b></td><td>time based</td><td>frame based</td></tr>
*[[Flash|Adobe Flash]]
  <tr><td><b>Video codec</b></td><td>industry standard VC-1 codec</td><td>no industry standard </td></tr>
  <tr><td><b>Audio decoder</b></td><td>MP3,WMA,WMV</td><td>MP3</td></tr>
  <tr><td><b>Binary or text file</b></td><td>XAML Text based & [[XML]] object</td><td>SWF binary shape records</td></tr>
  <tr><td><b>Platform support</b></td><td>[[Windows]],[[Apple Macintosh|Max OS X]],[[Linux]]</td><td>[[Windows]],[[Apple Macintosh|Max OS X]],[[Linux]], Mobile</td></tr>
  <tr><td><b>Programming tool</b></td><td>[[JavaScript]],VB.Net,[[C# programming language|C#]]</td><td>[[ActionScript]]</td></tr>
  <tr><td><b>Market</b></td><td>developing</td><td>rapid</td></tr>
</table>
 
 
At least for the short term, [[Flash]] will continue to dominate the market because designers are more comfortable and familiar with the Adobe suite and Adobe is getting better all the time. Also, advertisement platforms are likely to run [[Flash]] advertisements because they wish people to see their advertisements without having to install new software. Another aspect is distribution, [[Flash]] currently has an in-browser installer where users don’t have to restart the [[Web browser|browser]] and can refresh the web page once it’s installed. But [[Microsoft Silverlight|Silverlight]] has a downloadable installer to let users close and then restart the [[Web browser|browser]], which is not so convenient. In order to win, [[Microsoft Silverlight|Silverlight]] must own innovative technologies and excellent strategies to provide better design integration and easier distributed way to win over the design community. In short, it is a long-term battle.


== Reference ==
== Reference ==
<references/>
{{reflist}}
 
[[Category:CZ Live]]
[[Category:Stub Articles]]
[[Category:Computers Workgroup]]

Latest revision as of 23:30, 20 February 2010

This article is developing and not approved.
Main Article
Discussion
Definition [?]
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

With the rocket development of Internet, the techniques used for building web pages is improving all the time, which not only brings people more information but new experience of surfing on the Internet. Many techniques have been applied to enrich the web page these years, from totally the plaintext in early 90's, first to web page with pictures and then that with embedded sounds. Later, Sun Microsystems proposed Java Applet, which was popular for not long time until being conquered by Adobe Flash. Now Microsoft proposed Silverlight technology. Some people say that Microsoft made a wrong decision while others claim that Silverlight will kill Flash at last. According to the next step in the value chain, for Flash, it focus on building rich applications with Flex. For Silverlight, Ajax is becoming the way to add more value.

(CC) Image: Ganggang Hu
Made by Ganggang Hu, 2008

Technology

When it comes to general technology features, both Flash and Silverlight have the same functions and benefits as follows:

  • Rich 2D animation/graphics with audio and video
  • Choice of standards-based and high-performance languages
  • End-to-end server and application platform
  • Client side playlists for ad-insertion
  • Robust video publishing tools
  • High-performance, multi-core enabled lightweight client
  • Data exchange with web server
  • Easy installation support for platform requirements
  • Tools product line integrity
  • Multiple browsers support such as IE, Firefox, Safari and Opera

On the other hand, both of them have their unique features. For example, Flash has offline document support, rich set of control library and test tools. While Silverlight has hardware-assisted editing and encoding solutions, XML-based presentation for Search Engine Optimization (SEO), and content access protection, Digital Rights Management (DRM).

Below is the table of technology comparison between Flash and Silverlight.

 SilverlightFlash
Animation manipulationtime basedframe based
Video codecindustry standard VC-1 codecno industry standard
Audio decoderMP3, WMA, WMVMP3
Binary or text fileXAML text based and XML objectSWF binary shape records
Platform supportWindows, Max OS X, Linux (Moonlight), MobileWindows, Max OS X, Linux, Mobile
Programming toolsVisual Studio, Expression StudioActionScript

Animation manipulation

Flash is frame based, which requires users to compute the duration of an animation. For example, there are 12 frames per second in Flash animation model. If users want an object to move 5 seconds continuously, they need to calculate how many frames 5 seconds will take. Also, the player doesn't maintain any frame rate unless users embed blank audio tracks.

Instead of frame based, Silverlight supports the time based Windows Presentation Foundation (WPF) animation model, which allows users to define the start and end conditions without calculating positions on various frames. Then Silverlight can generate animation process automatically.[1]

Video codec and audio decoder

Flash supports multiple video formats with high quality codec and nice bandwidth usage, such as scalable full screen video up to HD(720p). The price of its media server licensing(unlimited bandwidth) is only one forth of that of Silverlight. Except for its Sorenson’s proprietary H.263 codec, Flash has no industry standard video codec yet. In addition, the audio formats supported by Flash are all proprietary, except for the MP3 and Adaptive Differential Pulse Code Modulation (ADPCM) formats, whose quality of compression are not impressive, and still require licensing fees and third party conversion libraries.

Compare to Flash, Silverlight implements industry standard VC-1 codec for video, and offers support for Windows Media Video (WMV), Windows Media Audio (WMA) and MP3. Microsoft makes available a free Encoder Software Development Kit (SDK) for producing WMA and WMV that allows developers to encode video and audio format for easier integration and cheaper cost.

The table below shows the comparison of video codec between Flash and Silverlight using different computer systems.[2]

 Flash VP6EFlash VP6SFlash H.264-HighSilverlight
PowerMac Dual 2.7 GHz PPC G5, OS 10.4.11, FireFox, Flash Player 9.0.115.0, SL 1.0.30401.0    
Processor(percentage of 2 processors)72.0%66.3%85.8%108.0%
Drop framesnonoyesyes
Estimated frame ratefullfull5-6 fps1-2 fps
Drop audiononoyesno
HP xw4100, 3.0 GHz P4 with HTT, Windows XP, FireFox Flash Player 9.0.124, SL 1.0.30401.0    
Processor87.5%97.1%NANA
Drop framesyesnoyes-stoppedyes-lost synch
Estimated frame rate2 fpsfullstopped1 frame/3 seconds
Drop audioyesnoyesyes
HP 8710P, 2.2 GHz Core 2 Duao, Vista, IE, Flash 9.0.124.0, SL 2.0.30226.2    
Processor51.9%52.0%34.8%47.3%
Drop framesnononono
Estimated frame ratefullfullfullfull
Drop audionononono
Dell Precision 390, 2.9 GHz Core 2 Duo, XP, IE, Flash 9.0.124.0, SL 2.0.30226.2    
Processor22.7%17.5%7.7%26.0%
Drop framesnononono
Estimated frame ratefullfullfullfull
Drop audionononono

Binary or text file

Flash stores shapes using binary shape records. In order to write shape definitions, users need to either license a third party Flash file format SDK, or build their own libraries. On the other hand, Silverlight uses text based Extensible Application Markup Language (XAML), which can be output using an XML object. This means that the users do not need to have their own special libraries.

Flash stores fonts glyphs using the same exact shape definitions that are used for any other shape. The player does not understand the True Type Font (TTF) files, which requires users to use the Win32 APIs to figure out the intricacies of fonts in the Flash file format documentation. But in Silverlight, the WPF engine lets users embed True Type Font (TTF) information directly into projects, and download that information using the downloader object without doing any other extra work.

However, with the capability of compiling down into the binary, Flash can actually starts executing before it is fully downloaded, which is one of the serious benefits to using binary SWF (Shockwave Flash) and more satisfying than the pure text files in Silverlight, which brings the runtime from zero to hero before one can do anything. Furthermore, Flash has plenty of functionality encapsulated in the runtime. It has its own just-in-time (JIT) compiler, ActionScript and a healthy set of controls. On the other hand, Silverlight uses JavaScript as the scripting language and depends on the browser for most of the interaction processing.

Platform support

Flash integrates with multiple platforms and languages. It supports Windows, Max OS X, Linux and also mobile platforms. While Silverlight has some limitations on this aspect. It mainly supports Windows and Max OS X. Silverlight looks to be as far as Microsoft has ever gone as a company to embrace cross-platform and yet they still fail to give full support for Linux.[3] However, a newly developed project, called Moonlight by Mono open source project sponsored by Novell, allows Linux users to run Silverlight applications on Linux, provide a Linux SDK to build Silverlight applications and reuse the Silverlight engine built by Mono for desktop applications. [4] Written with a combination of C++ and C# code, Moonlight (Linux supports for Silverlight 1.0) was first released in May, 2008.[5] In the mobile sector, Silverlight is spreading to mobile platform by building various applications on mobile devices. Mobile platforms supported by Silverlight are Windows Mobile and Symbian (partner with Nokia).

Programming tool

Microsoft provides a handful amount of programming tools to support its Silverlight. Visual Studio 2005 (supports Silverlight 1.0) and 2008 (supports Silverlight 1.0 and Silverlight 2.0), and Expression Studio are the main programming tools that developers can use to build Silverlight animations/applications. Programming languages which are supported by Silverlight are JavaScript, Visual Basic, and C#.

Adobe also provides its own developing tools to assist developers in creating Flash animations/applications. Such tools are Adoble Flash and Adobe Flex. However, compare to Silverlight, programming language supported by Flash is very limited. It is only supported by ActionScript.

Market

According to a survey given by Adobe System in June 2008, 99% of computer users have installed Flash Player. But until then, there was still no official statistics about Silverlight given by Microsoft.

This significant difference of market share between Flash and Silverlight may due to following reasons:

  • Silverlight was released as 1.0 in 2007 while Flash 1.0 was released in 1996. Flash already has sufficient time to grow, thrive and dominate the media plug-in market before Silverlight was born. One way for Microsoft to increase the number of Silverlight users is to include Silverlight in Internet Explorer.
  • Users choose to view content built in Flash and therefore need the plug-in. Since Silverlight is still new, there is relatively little knowledge of its existence (among non developers) and application created in it. Microsoft is providing more Silverlight content, such as the NBC online 2008 Olympic Games.

Although Silverlight has many advantages over Flash, it pales in front of Flash in terms of availability. It is not a unique Microsoft problem but a problem for every new offering when there is an incumbent who has a majority market share. Because Flash is so ubiquitous that it pushed QuickTime, Real Player, and windows movie files right out of the web space. As a juvenile in market, Silverlight may need a long time to get acceptance for itself.

See also

Reference