縱論5-7年內的技術發展大勢
robbin | 15 四月, 2005 12:14
注:轉載本文已征得作者同意,作者和本網站對內容不負任何責任。
出處:http://www.fankai.com/
初探在下一代 Windows 中編寫和部署應用程序
http://www.microsoft.com/china/MSDN/library/windev/longhorn/DevelopAppLonghorn.mspx
看了這篇文章以后,對XAML有了具體的初步認識了,最重要的是搞清楚了XAML的思路和方向。看完這篇文章之后,我有了如下的想法:
首先,以Microsoft公司的實力和Windows操作系統的占有率來說,Longhorn遲早會被普及,而XAML的開發方式遲早也會普及的。記得當初WindowsXP剛出來的時候,因為資源占用率和新的激活制度招致一片罵聲,但是慢慢的,現在也都接受了下來。由此可以推斷,Longhorn以其更加豐富的桌面功能和誘人的外觀,會在將來成為主流。
但是Longhorn什么時候才會全面普及,這是很值得琢磨的問題。WindowsXP是2001年推出的,在隨后的幾年,Microsoft采用了一些商業手段來迫使用戶升級,例如企圖取消Windows98的技術支持,不再提供WindowsNT技術支持,不再銷售 WindowsNT/Windows98,將Windows2000保持在一個比較高的售價的同時,對WindowsXP推出優惠價格,讓 WindowsXP的售價低于Windows2000等等手段。但是直到現在,Windows2000仍然占據了非常高的份額,據我個人的觀察是比 WindowsXP略高。按照這種情況來推斷,Longhorn要普及,恐怕難度更大,非常多的用戶現在仍然是Windows2000的死忠派, WindowsXP推廣了四年還未能超過Windows2000,那么Longhorn究竟要幾年才能超過WindowsXP呢?我估計四年以上是起碼的。
XAML應用程序不同以往,它只能跑在Longhorn上面,甚至比Java和dotnet要求更嚴格,后者僅僅下載安裝一個運行環境就可以了,但是前者要求你必須更新操作系統。XAML在IE瀏覽器中運行雖然肯定是下一代RIA的主流,但是不可忽視的問題是,只要Longhorn沒有徹底淘汰 Windows2000/XP,軟件開發商和網站開發商就不敢大面積采用XAML。而根據我的觀察,現在企業中,Windows98仍有少部分市場份額。因此Longhorn必須要等待到徹底的,毫不殘留的淘汰Windows98,Windows2000,WindowsXP之后,才會全面普及,而在此之前,不得不經歷一個漫長的過渡期。
就好像現在,假設你開發桌面應用程序,你敢只針對WindowsXP開發嗎?而徹底不支持98和2000嗎?我想,沒有哪個軟件開發商敢這樣做。除非 Windows2000幾乎被徹底淘汰了,你才敢這樣做,但是WindowsXP已經推出四年了,還沒有Windows2000占用率高,哪全面淘汰究竟要幾年呢?再看看現在dotnet winforms應用,推出也已經五年時間了,但是到現在仍然沒有普及開來,根本的原因就是Windows2000/WindowsXP沒有預裝 dotnet framework。僅僅是需要打包安裝一個運行環境就使得winforms五年都推廣不了,更何況要求你升級操作系統呢?
我個人的估計是,假設2006年Longhorn如期上市,那么將需要7-9年時間來徹底淘汰Windows2000/WindowsXP。 Longhorm上面XAML應用的初步普及也至少需要4-5年時間以后才會有軟件開發商大量去做(想向dotnet是2000年開始宣傳和推廣的,到 2004年開始普及,今年和明年才會全面普及)。因此,基于XAML應用我個人的想法是在2010年以后才會成為主流!上面的估計中還沒有包括MacOS 和Linux在桌面會否有什么表現,但是估計仍然不會成為主流,因此就不過多考慮了。
因為從現在到2010年,還有漫長的5年時間,我們不可能坐等XAML的普及,即使我們知道XAML肯定會普及,但是那也是五年以后的事情了。這五年時間我們仍然需要干自己的事情,賺自己的錢。所以審視一下這五年中會成為主流,或者說可用性極好的技術,還是很有必要的:
先說說服務器端吧:
從可預見的未來來看,服務器和客戶端TCP通訊的主流方式一定是HTTP協議(即時通訊軟件走UDP端口,不在討論范圍)。在基于HTTP協議之上,又分為兩類:一類是SOAP協議,異構系統支持良好,但是性能很差,目前Microsoft很喜歡用這種方式;一類是輕量級二進制協議,例如Flash的 AMF協議,Resin的Hessian協議。值得一提的是,不管哪種方式,他們都支持異構的系統,所以完全可用在客戶端采用dotnet,在服務器端采用Java或者Python。因此,XAML的流行不會對服務器端技術產生致命的影響(肯定會提高dotnet的服務器的市場份額)。所以我們可用拋開客戶端影響,單獨來看服務器端技術:
1、Java
Java是當前服務器端技術當之無愧的王者,在未來五年內,也不會有任何動搖(受到dotnet和python的影響,市場份額會下降一些)。Java特別有利的一點是,現在有太多的現存系統基于Java,這些系統都不會輕易遷移到其他平臺上。另外還有一個決定因素是除了Microsoft之外的幾乎全部 IT大公司都在Java方面的投資巨大,放棄Java對他們來說也意味著沉重的打擊,甚至毀滅性的打擊。這些公司可以列很長很長,IBM,HP, Oracle,SAP,Sun,BEA,Macromedia等等。
2、dotnet
由于Microsoft的影響力,dotnet會成為為僅次于Java的第二大服務器端技術,但是Microsoft有一個隱憂,就是Linux操作系統在服務器端的高速成長。雖然現在Linux在整個服務器端市場的出貨量只有13%左右,但是成長率驚人,根據我看到的資料顯示,到2008年,將占據 25%以上的市場份額。考慮到很多公司是自己安裝Linux,因此不會被硬件服務器廠商統計進來,因此Linux的服務器端的市場份額應該比25%高一些。并且現在主要的服務器廠商都對Linux有非常巨大的投入和支持,這些公司包括IBM,HP,Dell(只有Sun不支持),因此Linux在未來會對Windows在服務器端的市場構成最嚴重的威脅。
不要忘記dotnet只能在Windows平臺上面跑,雖然有mono,但是你不可能移植MTS,COM+,SQL Server etc。所以只要Linux在服務器市場對Windows構成持續的威脅,dotnet就不可能超過Java,Java的地位還是穩穩的老大。從某種程度上來說,Java的命運是和Linux聯系在一起的,只要Linux在服務器端不輸于Windows,Java就穩穩壓制dotnet。
BTW:從未來來看,Linux和Windows會在低端和中端服務器市場成為主要競爭對手,由于各自都有其不可替代性,所以雙方都不可能徹底消滅對方,最大的可能性是Linux和Windows平分市場,或者Windows市場份額略高一點。
3、Python
我個人認為Python會成長為第三大服務器端技術,Python成長于開源,但是又有商業公司來商業運作,并且背后還有大公司的支持,在歐洲普及的非常好。當然最重要的原因是我覺得Python在技術上非常先進,并且技術發展方向上比較統一,不會出現Java那種吵架的事情。
4、PHP
PHP這東西是不錯,Yahoo也在用,IBM現在也對他感興趣,但是我還是要說PHP沒有太廣闊的前途,原因很簡單,PHP沒有服務端中間件,例如 Java有App Server,dotnet有IIS/MTS,Python有Zope,但是PHP他就是一個腳本,沒有自己的中間件就是致命問題。Yahoo用PHP有其特定的原因,主要是從原先自己的技術遷移到PHP很方便,而IBM支持PHP,顯然醉翁之意不在酒,IBM意不在推廣PHP,而在于爭取到那些使用 PHP的商業大客戶們,向他們賣服務。
BTW:感覺歐洲用Python/PHP的很多,似乎開源在歐洲非常深入人心。
從服務器端技術來說,Java還是我們最需要下功夫去學習和掌握的,此外,我會比較傾向于鉆研和應用Python,而不是dotnet。原因也很簡單,跟隨Micorsoft的技術會很辛苦,Microsoft產生的新概念多,他總是會猛的推出n多種技術,然后讓他們在市場上自己生存,最后根據市場反饋,無情的拋棄某些東西,大力推進有市場前景的東西,這樣的例子太多了,舉不勝舉了。我的感覺就是這種方式會讓Microsft經過市場嘗試在技術競爭中篩選最優秀的技術,但是對于Microsoft技術的跟隨者來說,未免有點太不公平,整天吭哧吭哧被Microsoft拿來當免費的試驗品來用。我特別不理解的是MSDN宇宙版,Microsoft總是把無窮無盡的文檔灌給你,讓你永遠學不完,但實際上我真的不需要那么多概念,我只需要能夠很好的完成我工作的技術,并且這個技術可以持續的完善就好了。而不是今天給我這樣一個東西,明天灌給我無窮的文檔,后天當我用順手以后,又告訴我這東西作廢了,你給我重新學習新東西,然后又是無窮的文檔,總之很惱火。
所以就是:重點學習Java,有時間去學習Python,保持對dotnet的關注即可。
客戶端:
前面說了那么多XAML的東西,都是和這有關,七年以后肯定是XAML的天下,但是五到七年之內還不是:
1、Java
Java在客戶端真的是扶不起的阿斗,這都怪Sun。Sun造就了Java的成功,又一手毀了Java在客戶端的市場。那些個Swing和SWT的死忠團也不要和我爭什么,我也懶得和你們爭,你們覺得好就好吧,道不同不相與謀,你覺得好你就用你的,我覺得不好我就用別的。用不著纏著我非逼我說Java做客戶端好,沒必要,況且就算你逼我承認又怎樣?我就是玉皇大帝金口玉言了?得到我的承認,Java就有前途了?我好像還沒有那么大本領吧?就是IBM, Sun也沒有那么大本領,所以好不好也不是我說了算,用不著逼我。
2、dotnet winforms
由于Windows2000/WindowsXP不帶dotnet CLR,所以winforms一直沒有能夠普及得很好,等Longhorn一出來,又變成了XAML了,winforms又被淘汰了,所以 winforms的地位特別尷尬,但是在這5-7年中,你想開發既能夠在Windows2000/WindowsXP,又能夠在Longhorn上面跑的桌面程序,winforms好像又是Microsoft技術中最好的選擇。所以只好一直尷尬下去。
3、VC,VB
dotnet出來以后就開始尷尬了,說用吧,好像很落伍了,都dotnet時代了,說不用吧,又沒有好的替代品,現階段開發桌面程序,還真得不得不用,而且還挺好用的。所以VC6SP5,VB6的死忠團也比較多。
4、Delphi
dotnet出來以后Borland就開始跟風了,這一跟風,連老本都跟沒有了。未來的XAML時代,我也不知道Borland怎樣找自己的定位,但不管怎么說,從歷史來看,本地代碼的應用程序永遠有它一席之地!就算XAML又如何如何做得漂亮了,關鍵的地方,和特定資源處理相關的部分,還是本地代碼的程序管用。你看VB出來多少年了,用VB開發的都是一些上層的項目級別的應用軟件,一旦涉及產品領域,還是VC和Delphi管用。所以現在大家還是不得不用Delphi7阿。
BTW:XAML應用致力于快速開發項目級別的應用,特別是可以跑在IE瀏覽器里面的,因此是RIA的首選。但是畢竟也有很多不適合用RIA的場所,特別是例如我要備份某些文件,你用XAML?那性能就不用提了。所以Delphi如果好好發展VCL,封裝Windows32 API,我覺得也是一條路,未必比現在跟隨dotnet差。
5、Flash RIA
其實我覺得Flash不適合做RIA的,但是Flash普及率太高,XAML又離普及太遙遠,而Flash現在就可以用了,所以是當前RIA的首選。不過我對Macromedia公司比較失望,如果Macromedia能夠公布Flash實現細節,作為一個公開的標準向ISO提交,同時免費開源Flex,我敢說,Flash RIA會迅速普及的。等5-7年XAML的時代,由于Flash的市場占有率,XAML就未必能拼得過Flash。可惜的是Macromedia公司目光過于短淺,只知道賺眼前的小錢。
6、Python
這5-7年內,RIA應用和RCP應用不會統一,XAML才具備將RIA和RCP統一的實力。從這5-7年來看,Flash是RIA的首選,而RCP的首選,我要推薦Python。原因前面已經提過,簡單總結一下:
1)wxWidgets是一個比MFC優雅的庫,TortoiseCVS用wxWidges而不用MFC,就是因為wxWidgets好用,而不是為了可以移植。
2)Python的面向對象腳本語言編程適合快速界面開發
3)Python在服務器端和客戶端都非常有前途,可以形成一個統一的解決方案,這一點明顯比Java有優勢
4)Python桌面應用程序可以完全編譯為本地代碼,脫離Python運行環境,這一點比dotnet winforms都有優勢
5)Python可以不受限制的任意調用Windows32 API,所以凡是VC6可以做的事情,Python就可以做
試想一下,現在我們開發桌面應用程序有什么要求?
一、不要附帶一個JRE或者CLR的累贅
二、可以快速開發
三、性能要有保證
四、方便的遠程方法調用支持
此外如果能夠跨平臺就最好了
Java前三點都不符合;dotnet winforms不符合一;VC6不符合二和四,VB6不符合三和四;Delphi7符合前四點;Flash RIA不符合三;Python全部都符合!并且請記住Python是一個完全開源免費的方案!
客戶端技術在這5-7年中,在RIA領域我會學習一下Flash,在RCP領域我會重點學習Python,此外會觀望一下XAML。
posted on 2005-10-20 15:28
小強 閱讀(486)
評論(0) 編輯 收藏 所屬分類:
技術相關