Thursday, May 17, 2007

瀏覽器平台上的戰爭,Silverlight,Flash,Flex,JavaFX

瀏覽器平台上的戰爭,Silverlight,Flash,Flex,JavaFX

Microsoft終於將SilverLight(原名WPF/E)這個終極武器運送到了網頁戰場的前線上了,首要對手當然是Flash,許多人都將SilverLight稱為Flash Killer,SilverLight中許多先進的技術及設計概念,就像是利刃般,一劍一劍的往Flash要害招呼.WMV的高解析影片撥放支援,XAML的高可讀性,向量化的圖形引擎等等,招招都是對著Flash所為人垢病的缺點而來!!對於Flash用戶來說,這些或許還不足以讓其移情別戀,但足以令她們感到Flash所佔領許久的網頁互動技術王座,已經開始搖動了.
若說SilverLight 1.0憾動了Flash的王座,令其如坐針氈,那麼SilverLight 1.1可能會讓王座缺個一兩根腳,SilverLight 1.0結合了ActiveX及JavaScript兩種技術,讓設計師可以使用JavaScript來反應控制項的事件,如Mouse,Keyboard等等.但這些程式碼畢竟是JavaScript,是由Browser來解譯及執行的,在效能及功能上都比不上真正的程式語言,因此SilverLight 1.1與.NET Framework整合,提供了一個精巧的CLR及.NET Framework 3.5的子集,這意味著幾件事,
1. SilverLight 1.1 可以執行Managed的應用程式,也就是說設計師可以使用C#,VB等Managed Language來撰寫SilverLight程式(Ruby? RubyCLR的作者已經在Microsoft了,未來或許我們會看到Visual Studio 中出現Ruby....).
2. 與WPF類似的UI類別庫,這意味著SilverLight的程式,可以輕易的移植到WPF/.NET Framework 3.0/3.5上.
3. 從.NET Framework 3.5 移植過來的LINQ Framework.
4. 強大的開發工具,設計師可以使用Visual Studio 2007(Orcas),Expression Blend 2等來開發.
5. SilverLight 1.1 提供了Python語言,這意味著SilverLight未來可能支援更多的動態語言.
6. 你以前所撰寫的.NET類別,可以幾乎無痛的在SilverLight程式中使用,當然! 你所使用的類別必須 是SilverLight CLR所支援的.
雖然Flash在面對SilverLight的挑戰下,顯得有點招架不住,但是覬覦其王座的可不只Microsoft,Sun的JavaFX也在蠢蠢欲動,或許從技術面來看,SilverLight真正的對手其實是尚未發表的JavaFX吧.
講了這麼多褒揚SilverLight及垢病Flash的話,當然也得平衡一下,SilverLight也不是沒有缺點,目前SilverLight雖然支援了多數的主流瀏覽器,但是跨平台這檔事仍然維持Microsoft一貫的作風,僅支援Windows及Mac OS,而Flash則是已經攻佔了所有主流平台,包括手機.不過我想Mono Team會對此挑戰很興奮吧?另外,SilverLight 1.1 Alpha 的體積不小,有4.3MB,要瀏覽Managed SilverLight的網頁,就得下載這個Runtime,這對於儲存空間拮据的手機系統來說,還是稍嫌龐大些. 當然,你也可以選擇SilverLight 1.0,這個版本的Runtime僅有1.3MB大小,只是程式碼部份就得使用JavaScript了.
SilverLight 與 ASP.NET Ajax
不管你看過聽過多少臆測WPF/E將取代ASP.NET或是ASP.NET Ajax,目前看來這個情況並沒有發生,SilverLight不但不會取代ASP.NET,反而與ASP.NET有著整合的關係,認真想起來,這點也不難理解,雖然SilverLight的架構有著把Windows UI搬上網頁的能力,但是可想而知,那個Runtime體積會有多大了.因此目前的SilverLight 1.1中,並未提供原本ASP.NET已有的控制項,如Grid,Button(可以用Canvas,TextBlock模擬),TextBox(可以用TextBlock模擬)等.而且就目前的範例及架構看來,SilverLight與ASP.NET/ASP.NET Ajax處的蠻好的 ^_^
Microsoft UX
隨著SilverLight的出世,Microsoft也推出了新一代的UI架構,那就是Microsoft UX,UX這個名詞來自於Vista,全名是User eXperience.在這個架構中有三大元素,用來提供更好的網頁感受的ASP.NET Ajax,用來提供更強大的動畫,圖形網頁的SilverLight,及.NET Framework 3.0/3.5的WPF. 對於設計師來說,UX架構的實質意義並不大,僅是Microsoft將其技術整合所畫出來的導引圖.
後記
會寫這篇Blog的原因是,目前我正計劃撰寫幾篇Silverlight的文章,先貼上這篇,讓讀者們對Silverlight有點認識. PS:或許不需要我來寫吧,網路上多的是,哈! 也算是提醒我曾經有個寫Silverlight文章的計劃吧 ^_^