整理一下技術(shù)路線--載至Robbin原文
一、軟件開發(fā)技術(shù)
1)服務(wù)器端
在最近5年內(nèi),Java還是主流,不光是因為當前的普及程度和遺留系統(tǒng)問題,而且除Microsoft幾乎所有大公司都投資到Java上面的原因,此外開源也是一股無法忽略的力量:除了Java方面的開源框架在推動Java,也有Linux在帶動java企業(yè)應(yīng)用在普及(別忘記dotnet只能在 Windows Server上面運行)
dotnet有自己的優(yōu)勢,但是在五年內(nèi)無法和Java取得均勢,不光是因為Java普及帶來的優(yōu)勢,也不光因為開源界對java的推動,也不光因為其他大公司在java上面的投資,而是很多公司的行業(yè)性質(zhì)決定了dotnet的出局,例如電信行業(yè),金融行業(yè),電子政務(wù)行業(yè)等等,是根本沒有可能采用 dotnet的。
Python和Ruby算不上后起,但是很有競爭實力,不過基于上面的原因,仍然不能成為主流。
在Java服務(wù)器端技術(shù)中,清晰的分為兩條路線:高端的商業(yè)路線,這條路線是EJB3,J2EE5.0;低端的開源路線,這條路線是Hibernate, Spring。這兩條路線也有重疊的地方,例如開源的Struts幾乎成為J2EE Web層的標準,開源的Hibernate奠定了EJB3的基礎(chǔ)。但是劃分路線不是基于技術(shù)上的區(qū)別,而是基于商業(yè)運作上的區(qū)別。注重技術(shù)支持和商業(yè)服務(wù)的公司會選擇前者,注重成本控制和選擇自由的公司會選擇后者。
商業(yè)路線的技術(shù)方案是:EJB3+Struts;
開源路線的技術(shù)方案是:Spring+Hibernate+Struts/Webwork
Struts是一個很成功的開源框架,它的地位短期內(nèi)還無法動搖,JavaEye有一項使命,就是動搖Struts在Java Web領(lǐng)域的地位,把它趕下王座,把Webwork扶上位!
商業(yè)的Web層技術(shù),JSTL算是一個不錯的東西,但是和靈活的模板語言如FreeMarker相比,卻有很大的差距。JSF基本上是一個沒有前途的東西。商業(yè)Web層技術(shù)因為一直沒有出現(xiàn)好的應(yīng)用,這樣也導致了Struts的上位。
服務(wù)器端業(yè)務(wù)層和持久層框架,我非常看好EJB3,原因也不用多談了,從商業(yè)上來說,需要這樣一個東西,跨國公司們也需要這樣一個產(chǎn)品來賣,來取代糟糕的 EJB2。開源的方案里面,Spring+Hibenrate是一個很好的商業(yè)方案的開源替代,他們不存在很直接的競爭,而是一個互補的關(guān)系。這里比較尷尬的反而是JDO:JDO是商業(yè)產(chǎn)品(目前沒有好的開源實現(xiàn)),造成開源應(yīng)用不會對它感興趣,JDO沒有一個像EJB容器那樣的脫管環(huán)境,造成商業(yè)方案對它不感興趣。不過有了JDO,我覺得是對EJB3,對Hibernate形成一個良好的競爭環(huán)境,這一點是非常有利的。
2)客戶端技術(shù)
準確的說是RIA應(yīng)用。雖然我前面對XAML進行了正面的評價,但是我認為我前面有些結(jié)論給錯了。經(jīng)過這段時間,我覺得,XAML即時在多年之后,也未必能夠成為一個非常成功的解決方案。道理很二:
1、XAML會帶來比ActiveX更嚴重的安全性問題。
XAML本質(zhì)上就是一個本地應(yīng)用程序,雖然號稱可以在IE瀏覽器里面運行,但IE就是一個皮而已,XAML應(yīng)用具備對本地資源完全的訪問能力(就算IE限制也沒有用,IE限制就喪失功能,那樣的話,功能并不會比Javascript來得更多;不限制的話,就為所欲為了),因此只要IE具備了運行XAML的能力,黑客將可以非常輕易的通過IE進行入侵,這僅僅需要引導用戶在不知不覺中訪問一個惡意的網(wǎng)頁就搞定了!用戶必須面臨選擇:要么禁止IE對XAML的運行能力,要么接受隨時被攻擊的危險。
2、XAML應(yīng)用本質(zhì)上也是RIA應(yīng)用,因此必須進行大量的RPC調(diào)用
當前XAML采用XML Web Services進行通訊,這是一種低效的RPC。當前的XAML案例中并沒有注意到RPC領(lǐng)域,實際上根據(jù)我現(xiàn)在做RIA的體驗來說,RPC絕對不是一個簡單的事情,要考慮的問題非常多。
從當前的階段來說,最實際可用的方案有兩個:
1、AJAX
實際上就是基于XMLHTTP的JS異步交互,這個東西已經(jīng)出現(xiàn)很多年了,最近隨著Google應(yīng)用和Sun Blueprint的推出開始火熱。我原來對這個東西持否定態(tài)度,但是后來轉(zhuǎn)變了。我原來否定態(tài)度的一個前提就是:XMLHTTP缺乏成熟的組件庫!但是沒有想到的是,現(xiàn)在XMLHTTP從去年下半年開始,如雨后春筍般冒出來。AJAX應(yīng)用最大的好處就是充分利用現(xiàn)有資源,我認為應(yīng)成為RIA應(yīng)用的首選。
2、Flash
Flash的優(yōu)勢也很明顯,強大的AS支持,強大的組件可視化設(shè)計,強大的交互能力和很炫的用戶體驗,并且Flash Remoting也已經(jīng)非常成熟了。Flash的缺點就是Flash雖然嵌入網(wǎng)頁,但是和網(wǎng)頁沒有數(shù)據(jù)交互能力,F(xiàn)lash另一個缺點就是不適合處理大量文本內(nèi)容(HTML最適合)。現(xiàn)在有些人開始濫用Flash了。
因此比較好的方式可能是兩種混用,一般不過度復雜的交互交給AJAX,非常復雜,甚至需要托拽操作的,交給Flash。
總結(jié)一下:
軟件開發(fā)領(lǐng)域服務(wù)器端技術(shù)Java是主流,兩個技術(shù)路線,一個是EJB3,一個是Spring+Hibernate,此外iBATIS也有一席之地;客戶端技術(shù)就是AJAX和Flash。
二、數(shù)據(jù)庫技術(shù)
基本上格局不會發(fā)生多大變化,Oracle還是高高在上,SQL Server進一步蠶食NT平臺其他數(shù)據(jù)庫的領(lǐng)地。開源方面,MySQL將一枝獨秀,但是開源數(shù)據(jù)庫在很多方面還是和商業(yè)數(shù)據(jù)庫有無法拉近的巨大差距。這也使得商業(yè)數(shù)據(jù)庫的地位不可替代。我會比較關(guān)注Oracle,MySQL這兩個數(shù)據(jù)庫。面向?qū)ο髷?shù)據(jù)庫仍然不會有什么起色。
三、桌面編程技術(shù)
我還是相信一點,對于桌面應(yīng)用來說,本地代碼的位置永遠無法被取代,所以我總覺得XAML那樣的東西效率實在很成問題。Longhorn要像成熟,也不是第一個版本就可以達到的。當前桌面應(yīng)用開發(fā)技術(shù),還是首推Delphi,不過我覺得Python是后起之秀,非常有可能在未來取代Delphi。
初探在下一代 Windows 中編寫和部署應(yīng)用程序
http://www.microsoft.com/china/MSDN/library/windev/longhorn/DevelopAppLonghorn.mspx
首先,以Microsoft公司的實力和Windows操作系統(tǒng)的占有率來說,Longhorn遲早會被普及,而XAML的開發(fā)方式也有可能普及的。記得當初WindowsXP剛出來的時候,因為資源占用率和新的激活制度招致一片罵聲,但是慢慢的,現(xiàn)在也都接受了下來。由此可以推斷,Longhorn以其更加豐富的桌面功能和誘人的外觀,會在將來成為主流。
但是Longhorn什么時候才會全面普及,這是很值得琢磨的問題。WindowsXP是2001年推出的,在隨后的幾年,Microsoft采用了一些商業(yè)手段來迫使用戶升級,例如企圖取消Windows98的技術(shù)支持,不再提供WindowsNT技術(shù)支持,不再銷售 WindowsNT/Windows98,將Windows2000保持在一個比較高的售價的同時,對WindowsXP推出優(yōu)惠價格,讓 WindowsXP的售價低于Windows2000等等手段。但是直到現(xiàn)在,Windows2000仍然占據(jù)了非常高的份額,據(jù)我個人的觀察是比 WindowsXP略高。按照這種情況來推斷,Longhorn要普及,恐怕難度更大,非常多的用戶現(xiàn)在仍然是Windows2000的死忠派, WindowsXP推廣了四年還未能超過Windows2000,那么Longhorn究竟要幾年才能超過WindowsXP呢?我估計四年以上是起碼的。
XAML應(yīng)用程序不同以往,它只能跑在Longhorn上面,甚至比Java和dotnet要求更嚴格,后者僅僅下載安裝一個運行環(huán)境就可以了,但是前者要求你必須更新操作系統(tǒng)。XAML在IE瀏覽器中運行雖然肯定是下一代RIA的主流,但是不可忽視的問題是,只要Longhorn沒有徹底淘汰 Windows2000/XP,軟件開發(fā)商和網(wǎng)站開發(fā)商就不敢大面積采用XAML。而根據(jù)我的觀察,現(xiàn)在企業(yè)中,Windows98仍有少部分市場份額。因此Longhorn必須要等待到徹底的,毫不殘留的淘汰Windows98,Windows2000,WindowsXP之后,才會全面普及,而在此之前,不得不經(jīng)歷一個漫長的過渡期。
就好像現(xiàn)在,假設(shè)你開發(fā)桌面應(yīng)用程序,你敢只針對WindowsXP開發(fā)嗎?而徹底不支持98和2000嗎?我想,沒有哪個軟件開發(fā)商敢這樣做。除非 Windows2000幾乎被徹底淘汰了,你才敢這樣做,但是WindowsXP已經(jīng)推出四年了,還沒有Windows2000占用率高,哪全面淘汰究竟要幾年呢?再看看現(xiàn)在dotnet winforms應(yīng)用,推出也已經(jīng)五年時間了,但是到現(xiàn)在仍然沒有普及開來,根本的原因就是Windows2000/WindowsXP沒有預裝 dotnet framework。僅僅是需要打包安裝一個運行環(huán)境就使得winforms五年都推廣不了,更何況要求你升級操作系統(tǒng)呢?
我個人的估計是,假設(shè)2006年Longhorn如期上市,那么將需要7-9年時間來徹底淘汰Windows2000/WindowsXP。 Longhorm上面XAML應(yīng)用的初步普及也至少需要4-5年時間以后才會有軟件開發(fā)商大量去做(想向dotnet是2000年開始宣傳和推廣的,到 2004年開始普及,今年和明年才會全面普及)。因此,基于XAML應(yīng)用的普及可能是在2010年以后!上面的估計中還沒有包括MacOS 和Linux在桌面會否有什么表現(xiàn)。
先說說服務(wù)器端吧:
從可預見的未來來看,服務(wù)器和客戶端TCP通訊的主流方式一定是HTTP協(xié)議(即時通訊軟件走UDP端口,不在討論范圍)。在基于HTTP協(xié)議之上,又分為兩類:一類是SOAP協(xié)議,異構(gòu)系統(tǒng)支持良好,但是性能很差,目前Microsoft很喜歡用這種方式;一類是輕量級二進制協(xié)議,例如Flash的 AMF協(xié)議,Resin的Hessian協(xié)議。值得一提的是,不管哪種方式,他們都支持異構(gòu)的系統(tǒng),所以完全可用在客戶端采用dotnet,在服務(wù)器端采用Java或者Python。因此,XAML的流行不會對服務(wù)器端技術(shù)產(chǎn)生致命的影響(肯定會提高dotnet的服務(wù)器的市場份額)。所以我們可用拋開客戶端影響,單獨來看服務(wù)器端技術(shù):
1、Java
Java是當前服務(wù)器端技術(shù)當之無愧的王者,在未來五年內(nèi),也不會有任何動搖(受到dotnet和python的影響,市場份額會下降一些)。Java特別有利的一點是,現(xiàn)在有太多的現(xiàn)存系統(tǒng)基于Java,這些系統(tǒng)都不會輕易遷移到其他平臺上。另外還有一個決定因素是除了Microsoft之外的幾乎全部 IT大公司都在Java方面的投資巨大,放棄Java對他們來說也意味著沉重的打擊,甚至毀滅性的打擊。這些公司可以列很長很長,IBM,HP, Oracle,SAP,Sun,BEA,Macromedia等等。
2、dotnet
由于Microsoft的影響力,dotnet會成為為僅次于Java的第二大服務(wù)器端技術(shù),但是Microsoft有一個隱憂,就是Linux操作系統(tǒng)在服務(wù)器端的高速成長。雖然現(xiàn)在Linux在整個服務(wù)器端市場的出貨量只有13%左右,但是成長率驚人,根據(jù)我看到的資料顯示,到2008年,將占據(jù) 25%以上的市場份額。考慮到很多公司是自己安裝Linux,因此不會被硬件服務(wù)器廠商統(tǒng)計進來,因此Linux的服務(wù)器端的市場份額應(yīng)該比25%高一些。并且現(xiàn)在主要的服務(wù)器廠商都對Linux有非常巨大的投入和支持,這些公司包括IBM,HP,Dell(只有Sun不支持),因此Linux在未來會對Windows在服務(wù)器端的市場構(gòu)成最嚴重的威脅。
不要忘記dotnet只能在Windows平臺上面跑,雖然有mono,但是你不可能移植MTS,COM+,SQL Server etc。所以只要Linux在服務(wù)器市場對Windows構(gòu)成持續(xù)的威脅,dotnet就不可能超過Java,Java的地位還是穩(wěn)穩(wěn)的老大。從某種程度上來說,Java的命運是和Linux聯(lián)系在一起的,只要Linux在服務(wù)器端不輸于Windows,Java就穩(wěn)穩(wěn)壓制dotnet。
BTW:從未來來看,Linux和Windows會在低端和中端服務(wù)器市場成為主要競爭對手,由于各自都有其不可替代性,所以雙方都不可能徹底消滅對方,最大的可能性是Linux和Windows平分市場,或者Windows市場份額略高一點。
3、Python
我個人認為Python會成長為第三大服務(wù)器端技術(shù),Python成長于開源,但是又有商業(yè)公司來商業(yè)運作,并且背后還有大公司的支持,在歐洲普及的非常好。當然最重要的原因是我覺得Python在技術(shù)上非常先進,并且技術(shù)發(fā)展方向上比較統(tǒng)一,不會出現(xiàn)Java那種吵架的事情。
4、PHP
PHP這東西是不錯,Yahoo也在用,IBM現(xiàn)在也對他感興趣,但是我還是要說PHP沒有太廣闊的前途,原因很簡單,PHP沒有服務(wù)端中間件,例如 Java有App Server,dotnet有IIS/MTS,Python有Zope,但是PHP他就是一個腳本,沒有自己的中間件就是致命問題。Yahoo用PHP有其特定的原因,主要是從原先自己的技術(shù)遷移到PHP很方便,而IBM支持PHP,顯然醉翁之意不在酒,IBM意不在推廣PHP,而在于爭取到那些使用 PHP的商業(yè)大客戶們,向他們賣服務(wù)。
BTW:感覺歐洲用Python/PHP的很多,似乎開源在歐洲非常深入人心。
從服務(wù)器端技術(shù)來說,Java還是我們最需要下功夫去學習和掌握的,此外,我會比較傾向于鉆研和應(yīng)用Python,而不是dotnet。原因也很簡單,跟隨Micorsoft的技術(shù)會很辛苦,Microsoft產(chǎn)生的新概念多,他總是會猛的推出n多種技術(shù),然后讓他們在市場上自己生存,最后根據(jù)市場反饋,無情的拋棄某些東西,大力推進有市場前景的東西,這樣的例子太多了,舉不勝舉了。我的感覺就是這種方式會讓Microsft經(jīng)過市場嘗試在技術(shù)競爭中篩選最優(yōu)秀的技術(shù),但是對于Microsoft技術(shù)的跟隨者來說,未免有點太不公平,整天吭哧吭哧被Microsoft拿來當免費的試驗品來用。我特別不理解的是MSDN宇宙版,Microsoft總是把無窮無盡的文檔灌給你,讓你永遠學不完,但實際上我真的不需要那么多概念,我只需要能夠很好的完成我工作的技術(shù),并且這個技術(shù)可以持續(xù)的完善就好了。而不是今天給我這樣一個東西,明天灌給我無窮的文檔,后天當我用順手以后,又告訴我這東西作廢了,你給我重新學習新東西,然后又是無窮的文檔,總之很惱火。
所以就是:重點學習Java,有時間去學習Python,保持對dotnet的關(guān)注即可。
客戶端:
前面說了那么多XAML的東西,都是和這有關(guān),七年以后肯定是XAML的天下,但是五到七年之內(nèi)還不是:
1、Java
Java在客戶端真的是扶不起的阿斗,這都怪Sun。Sun造就了Java的成功,又一手毀了Java在客戶端的市場。那些個Swing和SWT的死忠團也不要和我爭什么,我也懶得和你們爭,你們覺得好就好吧,道不同不相與謀,你覺得好你就用你的,我覺得不好我就用別的。用不著纏著我非逼我說Java做客戶端好,沒必要,況且就算你逼我承認又怎樣?我就是玉皇大帝金口玉言了?得到我的承認,Java就有前途了?我好像還沒有那么大本領(lǐng)吧?就是IBM, Sun也沒有那么大本領(lǐng),所以好不好也不是我說了算,用不著逼我。
2、dotnet winforms
由于Windows2000/WindowsXP不帶dotnet CLR,所以winforms一直沒有能夠普及得很好,等Longhorn一出來,又變成了XAML了,winforms又被淘汰了,所以 winforms的地位特別尷尬,但是在這5-7年中,你想開發(fā)既能夠在Windows2000/WindowsXP,又能夠在Longhorn上面跑的桌面程序,winforms好像又是Microsoft技術(shù)中最好的選擇。所以只好一直尷尬下去。
3、VC,VB
dotnet出來以后就開始尷尬了,說用吧,好像很落伍了,都dotnet時代了,說不用吧,又沒有好的替代品,現(xiàn)階段開發(fā)桌面程序,還真得不得不用,而且還挺好用的。所以VC6SP5,VB6的死忠團也比較多。
4、Delphi
dotnet出來以后Borland就開始跟風了,這一跟風,連老本都跟沒有了。未來的XAML時代,我也不知道Borland怎樣找自己的定位,但不管怎么說,從歷史來看,本地代碼的應(yīng)用程序永遠有它一席之地!就算XAML又如何如何做得漂亮了,關(guān)鍵的地方,和特定資源處理相關(guān)的部分,還是本地代碼的程序管用。你看VB出來多少年了,用VB開發(fā)的都是一些上層的項目級別的應(yīng)用軟件,一旦涉及產(chǎn)品領(lǐng)域,還是VC和Delphi管用。所以現(xiàn)在大家還是不得不用Delphi7阿。
BTW:XAML應(yīng)用致力于快速開發(fā)項目級別的應(yīng)用,特別是可以跑在IE瀏覽器里面的,因此是RIA的首選。但是畢竟也有很多不適合用RIA的場所,特別是例如我要備份某些文件,你用XAML?那性能就不用提了。所以Delphi如果好好發(fā)展VCL,封裝Windows32 API,我覺得也是一條路,未必比現(xiàn)在跟隨dotnet差。
5、Flash RIA
其實我覺得Flash不適合做RIA的,但是Flash普及率太高,XAML又離普及太遙遠,而Flash現(xiàn)在就可以用了,所以是當前RIA的首選。不過我對Macromedia公司比較失望,如果Macromedia能夠公布Flash實現(xiàn)細節(jié),作為一個公開的標準向ISO提交,同時免費開源Flex,我敢說,F(xiàn)lash RIA會迅速普及的。等5-7年XAML的時代,由于Flash的市場占有率,XAML就未必能拼得過Flash。可惜的是Macromedia公司目光過于短淺,只知道賺眼前的小錢。
6、Python
這5-7年內(nèi),RIA應(yīng)用和RCP應(yīng)用不會統(tǒng)一,XAML才具備將RIA和RCP統(tǒng)一的實力。從這5-7年來看,F(xiàn)lash是RIA的首選,而RCP的首選,我要推薦Python。原因前面已經(jīng)提過,簡單總結(jié)一下:
1)wxWidgets是一個比MFC優(yōu)雅的庫,TortoiseCVS用wxWidges而不用MFC,就是因為wxWidgets好用,而不是為了可以移植。
2)Python的面向?qū)ο竽_本語言編程適合快速界面開發(fā)
3)Python在服務(wù)器端和客戶端都非常有前途,可以形成一個統(tǒng)一的解決方案,這一點明顯比Java有優(yōu)勢
4)Python桌面應(yīng)用程序可以完全編譯為本地代碼,脫離Python運行環(huán)境,這一點比dotnet winforms都有優(yōu)勢
5)Python可以不受限制的任意調(diào)用Windows32 API,所以凡是VC6可以做的事情,Python就可以做
試想一下,現(xiàn)在我們開發(fā)桌面應(yīng)用程序有什么要求?
一、不要附帶一個JRE或者CLR的累贅
二、可以快速開發(fā)
三、性能要有保證
四、方便的遠程方法調(diào)用支持
此外如果能夠跨平臺就最好了
Java前三點都不符合;dotnet winforms不符合一;VC6不符合二和四,VB6不符合三和四;Delphi7符合前四點;Flash RIA不符合三;Python全部都符合!并且請記住Python是一個完全開源免費的方案!
客戶端技術(shù)在這5-7年中,在RIA領(lǐng)域我會學習一下Flash,在RCP領(lǐng)域我會重點學習Python,此外會觀望一下XAML。
1)服務(wù)器端
在最近5年內(nèi),Java還是主流,不光是因為當前的普及程度和遺留系統(tǒng)問題,而且除Microsoft幾乎所有大公司都投資到Java上面的原因,此外開源也是一股無法忽略的力量:除了Java方面的開源框架在推動Java,也有Linux在帶動java企業(yè)應(yīng)用在普及(別忘記dotnet只能在 Windows Server上面運行)
dotnet有自己的優(yōu)勢,但是在五年內(nèi)無法和Java取得均勢,不光是因為Java普及帶來的優(yōu)勢,也不光因為開源界對java的推動,也不光因為其他大公司在java上面的投資,而是很多公司的行業(yè)性質(zhì)決定了dotnet的出局,例如電信行業(yè),金融行業(yè),電子政務(wù)行業(yè)等等,是根本沒有可能采用 dotnet的。
Python和Ruby算不上后起,但是很有競爭實力,不過基于上面的原因,仍然不能成為主流。
在Java服務(wù)器端技術(shù)中,清晰的分為兩條路線:高端的商業(yè)路線,這條路線是EJB3,J2EE5.0;低端的開源路線,這條路線是Hibernate, Spring。這兩條路線也有重疊的地方,例如開源的Struts幾乎成為J2EE Web層的標準,開源的Hibernate奠定了EJB3的基礎(chǔ)。但是劃分路線不是基于技術(shù)上的區(qū)別,而是基于商業(yè)運作上的區(qū)別。注重技術(shù)支持和商業(yè)服務(wù)的公司會選擇前者,注重成本控制和選擇自由的公司會選擇后者。
商業(yè)路線的技術(shù)方案是:EJB3+Struts;
開源路線的技術(shù)方案是:Spring+Hibernate+Struts/Webwork
Struts是一個很成功的開源框架,它的地位短期內(nèi)還無法動搖,JavaEye有一項使命,就是動搖Struts在Java Web領(lǐng)域的地位,把它趕下王座,把Webwork扶上位!
商業(yè)的Web層技術(shù),JSTL算是一個不錯的東西,但是和靈活的模板語言如FreeMarker相比,卻有很大的差距。JSF基本上是一個沒有前途的東西。商業(yè)Web層技術(shù)因為一直沒有出現(xiàn)好的應(yīng)用,這樣也導致了Struts的上位。
服務(wù)器端業(yè)務(wù)層和持久層框架,我非常看好EJB3,原因也不用多談了,從商業(yè)上來說,需要這樣一個東西,跨國公司們也需要這樣一個產(chǎn)品來賣,來取代糟糕的 EJB2。開源的方案里面,Spring+Hibenrate是一個很好的商業(yè)方案的開源替代,他們不存在很直接的競爭,而是一個互補的關(guān)系。這里比較尷尬的反而是JDO:JDO是商業(yè)產(chǎn)品(目前沒有好的開源實現(xiàn)),造成開源應(yīng)用不會對它感興趣,JDO沒有一個像EJB容器那樣的脫管環(huán)境,造成商業(yè)方案對它不感興趣。不過有了JDO,我覺得是對EJB3,對Hibernate形成一個良好的競爭環(huán)境,這一點是非常有利的。
2)客戶端技術(shù)
準確的說是RIA應(yīng)用。雖然我前面對XAML進行了正面的評價,但是我認為我前面有些結(jié)論給錯了。經(jīng)過這段時間,我覺得,XAML即時在多年之后,也未必能夠成為一個非常成功的解決方案。道理很二:
1、XAML會帶來比ActiveX更嚴重的安全性問題。
XAML本質(zhì)上就是一個本地應(yīng)用程序,雖然號稱可以在IE瀏覽器里面運行,但IE就是一個皮而已,XAML應(yīng)用具備對本地資源完全的訪問能力(就算IE限制也沒有用,IE限制就喪失功能,那樣的話,功能并不會比Javascript來得更多;不限制的話,就為所欲為了),因此只要IE具備了運行XAML的能力,黑客將可以非常輕易的通過IE進行入侵,這僅僅需要引導用戶在不知不覺中訪問一個惡意的網(wǎng)頁就搞定了!用戶必須面臨選擇:要么禁止IE對XAML的運行能力,要么接受隨時被攻擊的危險。
2、XAML應(yīng)用本質(zhì)上也是RIA應(yīng)用,因此必須進行大量的RPC調(diào)用
當前XAML采用XML Web Services進行通訊,這是一種低效的RPC。當前的XAML案例中并沒有注意到RPC領(lǐng)域,實際上根據(jù)我現(xiàn)在做RIA的體驗來說,RPC絕對不是一個簡單的事情,要考慮的問題非常多。
從當前的階段來說,最實際可用的方案有兩個:
1、AJAX
實際上就是基于XMLHTTP的JS異步交互,這個東西已經(jīng)出現(xiàn)很多年了,最近隨著Google應(yīng)用和Sun Blueprint的推出開始火熱。我原來對這個東西持否定態(tài)度,但是后來轉(zhuǎn)變了。我原來否定態(tài)度的一個前提就是:XMLHTTP缺乏成熟的組件庫!但是沒有想到的是,現(xiàn)在XMLHTTP從去年下半年開始,如雨后春筍般冒出來。AJAX應(yīng)用最大的好處就是充分利用現(xiàn)有資源,我認為應(yīng)成為RIA應(yīng)用的首選。
2、Flash
Flash的優(yōu)勢也很明顯,強大的AS支持,強大的組件可視化設(shè)計,強大的交互能力和很炫的用戶體驗,并且Flash Remoting也已經(jīng)非常成熟了。Flash的缺點就是Flash雖然嵌入網(wǎng)頁,但是和網(wǎng)頁沒有數(shù)據(jù)交互能力,F(xiàn)lash另一個缺點就是不適合處理大量文本內(nèi)容(HTML最適合)。現(xiàn)在有些人開始濫用Flash了。
因此比較好的方式可能是兩種混用,一般不過度復雜的交互交給AJAX,非常復雜,甚至需要托拽操作的,交給Flash。
總結(jié)一下:
軟件開發(fā)領(lǐng)域服務(wù)器端技術(shù)Java是主流,兩個技術(shù)路線,一個是EJB3,一個是Spring+Hibernate,此外iBATIS也有一席之地;客戶端技術(shù)就是AJAX和Flash。
二、數(shù)據(jù)庫技術(shù)
基本上格局不會發(fā)生多大變化,Oracle還是高高在上,SQL Server進一步蠶食NT平臺其他數(shù)據(jù)庫的領(lǐng)地。開源方面,MySQL將一枝獨秀,但是開源數(shù)據(jù)庫在很多方面還是和商業(yè)數(shù)據(jù)庫有無法拉近的巨大差距。這也使得商業(yè)數(shù)據(jù)庫的地位不可替代。我會比較關(guān)注Oracle,MySQL這兩個數(shù)據(jù)庫。面向?qū)ο髷?shù)據(jù)庫仍然不會有什么起色。
三、桌面編程技術(shù)
我還是相信一點,對于桌面應(yīng)用來說,本地代碼的位置永遠無法被取代,所以我總覺得XAML那樣的東西效率實在很成問題。Longhorn要像成熟,也不是第一個版本就可以達到的。當前桌面應(yīng)用開發(fā)技術(shù),還是首推Delphi,不過我覺得Python是后起之秀,非常有可能在未來取代Delphi。
初探在下一代 Windows 中編寫和部署應(yīng)用程序
http://www.microsoft.com/china/MSDN/library/windev/longhorn/DevelopAppLonghorn.mspx
首先,以Microsoft公司的實力和Windows操作系統(tǒng)的占有率來說,Longhorn遲早會被普及,而XAML的開發(fā)方式也有可能普及的。記得當初WindowsXP剛出來的時候,因為資源占用率和新的激活制度招致一片罵聲,但是慢慢的,現(xiàn)在也都接受了下來。由此可以推斷,Longhorn以其更加豐富的桌面功能和誘人的外觀,會在將來成為主流。
但是Longhorn什么時候才會全面普及,這是很值得琢磨的問題。WindowsXP是2001年推出的,在隨后的幾年,Microsoft采用了一些商業(yè)手段來迫使用戶升級,例如企圖取消Windows98的技術(shù)支持,不再提供WindowsNT技術(shù)支持,不再銷售 WindowsNT/Windows98,將Windows2000保持在一個比較高的售價的同時,對WindowsXP推出優(yōu)惠價格,讓 WindowsXP的售價低于Windows2000等等手段。但是直到現(xiàn)在,Windows2000仍然占據(jù)了非常高的份額,據(jù)我個人的觀察是比 WindowsXP略高。按照這種情況來推斷,Longhorn要普及,恐怕難度更大,非常多的用戶現(xiàn)在仍然是Windows2000的死忠派, WindowsXP推廣了四年還未能超過Windows2000,那么Longhorn究竟要幾年才能超過WindowsXP呢?我估計四年以上是起碼的。
XAML應(yīng)用程序不同以往,它只能跑在Longhorn上面,甚至比Java和dotnet要求更嚴格,后者僅僅下載安裝一個運行環(huán)境就可以了,但是前者要求你必須更新操作系統(tǒng)。XAML在IE瀏覽器中運行雖然肯定是下一代RIA的主流,但是不可忽視的問題是,只要Longhorn沒有徹底淘汰 Windows2000/XP,軟件開發(fā)商和網(wǎng)站開發(fā)商就不敢大面積采用XAML。而根據(jù)我的觀察,現(xiàn)在企業(yè)中,Windows98仍有少部分市場份額。因此Longhorn必須要等待到徹底的,毫不殘留的淘汰Windows98,Windows2000,WindowsXP之后,才會全面普及,而在此之前,不得不經(jīng)歷一個漫長的過渡期。
就好像現(xiàn)在,假設(shè)你開發(fā)桌面應(yīng)用程序,你敢只針對WindowsXP開發(fā)嗎?而徹底不支持98和2000嗎?我想,沒有哪個軟件開發(fā)商敢這樣做。除非 Windows2000幾乎被徹底淘汰了,你才敢這樣做,但是WindowsXP已經(jīng)推出四年了,還沒有Windows2000占用率高,哪全面淘汰究竟要幾年呢?再看看現(xiàn)在dotnet winforms應(yīng)用,推出也已經(jīng)五年時間了,但是到現(xiàn)在仍然沒有普及開來,根本的原因就是Windows2000/WindowsXP沒有預裝 dotnet framework。僅僅是需要打包安裝一個運行環(huán)境就使得winforms五年都推廣不了,更何況要求你升級操作系統(tǒng)呢?
我個人的估計是,假設(shè)2006年Longhorn如期上市,那么將需要7-9年時間來徹底淘汰Windows2000/WindowsXP。 Longhorm上面XAML應(yīng)用的初步普及也至少需要4-5年時間以后才會有軟件開發(fā)商大量去做(想向dotnet是2000年開始宣傳和推廣的,到 2004年開始普及,今年和明年才會全面普及)。因此,基于XAML應(yīng)用的普及可能是在2010年以后!上面的估計中還沒有包括MacOS 和Linux在桌面會否有什么表現(xiàn)。
先說說服務(wù)器端吧:
從可預見的未來來看,服務(wù)器和客戶端TCP通訊的主流方式一定是HTTP協(xié)議(即時通訊軟件走UDP端口,不在討論范圍)。在基于HTTP協(xié)議之上,又分為兩類:一類是SOAP協(xié)議,異構(gòu)系統(tǒng)支持良好,但是性能很差,目前Microsoft很喜歡用這種方式;一類是輕量級二進制協(xié)議,例如Flash的 AMF協(xié)議,Resin的Hessian協(xié)議。值得一提的是,不管哪種方式,他們都支持異構(gòu)的系統(tǒng),所以完全可用在客戶端采用dotnet,在服務(wù)器端采用Java或者Python。因此,XAML的流行不會對服務(wù)器端技術(shù)產(chǎn)生致命的影響(肯定會提高dotnet的服務(wù)器的市場份額)。所以我們可用拋開客戶端影響,單獨來看服務(wù)器端技術(shù):
1、Java
Java是當前服務(wù)器端技術(shù)當之無愧的王者,在未來五年內(nèi),也不會有任何動搖(受到dotnet和python的影響,市場份額會下降一些)。Java特別有利的一點是,現(xiàn)在有太多的現(xiàn)存系統(tǒng)基于Java,這些系統(tǒng)都不會輕易遷移到其他平臺上。另外還有一個決定因素是除了Microsoft之外的幾乎全部 IT大公司都在Java方面的投資巨大,放棄Java對他們來說也意味著沉重的打擊,甚至毀滅性的打擊。這些公司可以列很長很長,IBM,HP, Oracle,SAP,Sun,BEA,Macromedia等等。
2、dotnet
由于Microsoft的影響力,dotnet會成為為僅次于Java的第二大服務(wù)器端技術(shù),但是Microsoft有一個隱憂,就是Linux操作系統(tǒng)在服務(wù)器端的高速成長。雖然現(xiàn)在Linux在整個服務(wù)器端市場的出貨量只有13%左右,但是成長率驚人,根據(jù)我看到的資料顯示,到2008年,將占據(jù) 25%以上的市場份額。考慮到很多公司是自己安裝Linux,因此不會被硬件服務(wù)器廠商統(tǒng)計進來,因此Linux的服務(wù)器端的市場份額應(yīng)該比25%高一些。并且現(xiàn)在主要的服務(wù)器廠商都對Linux有非常巨大的投入和支持,這些公司包括IBM,HP,Dell(只有Sun不支持),因此Linux在未來會對Windows在服務(wù)器端的市場構(gòu)成最嚴重的威脅。
不要忘記dotnet只能在Windows平臺上面跑,雖然有mono,但是你不可能移植MTS,COM+,SQL Server etc。所以只要Linux在服務(wù)器市場對Windows構(gòu)成持續(xù)的威脅,dotnet就不可能超過Java,Java的地位還是穩(wěn)穩(wěn)的老大。從某種程度上來說,Java的命運是和Linux聯(lián)系在一起的,只要Linux在服務(wù)器端不輸于Windows,Java就穩(wěn)穩(wěn)壓制dotnet。
BTW:從未來來看,Linux和Windows會在低端和中端服務(wù)器市場成為主要競爭對手,由于各自都有其不可替代性,所以雙方都不可能徹底消滅對方,最大的可能性是Linux和Windows平分市場,或者Windows市場份額略高一點。
3、Python
我個人認為Python會成長為第三大服務(wù)器端技術(shù),Python成長于開源,但是又有商業(yè)公司來商業(yè)運作,并且背后還有大公司的支持,在歐洲普及的非常好。當然最重要的原因是我覺得Python在技術(shù)上非常先進,并且技術(shù)發(fā)展方向上比較統(tǒng)一,不會出現(xiàn)Java那種吵架的事情。
4、PHP
PHP這東西是不錯,Yahoo也在用,IBM現(xiàn)在也對他感興趣,但是我還是要說PHP沒有太廣闊的前途,原因很簡單,PHP沒有服務(wù)端中間件,例如 Java有App Server,dotnet有IIS/MTS,Python有Zope,但是PHP他就是一個腳本,沒有自己的中間件就是致命問題。Yahoo用PHP有其特定的原因,主要是從原先自己的技術(shù)遷移到PHP很方便,而IBM支持PHP,顯然醉翁之意不在酒,IBM意不在推廣PHP,而在于爭取到那些使用 PHP的商業(yè)大客戶們,向他們賣服務(wù)。
BTW:感覺歐洲用Python/PHP的很多,似乎開源在歐洲非常深入人心。
從服務(wù)器端技術(shù)來說,Java還是我們最需要下功夫去學習和掌握的,此外,我會比較傾向于鉆研和應(yīng)用Python,而不是dotnet。原因也很簡單,跟隨Micorsoft的技術(shù)會很辛苦,Microsoft產(chǎn)生的新概念多,他總是會猛的推出n多種技術(shù),然后讓他們在市場上自己生存,最后根據(jù)市場反饋,無情的拋棄某些東西,大力推進有市場前景的東西,這樣的例子太多了,舉不勝舉了。我的感覺就是這種方式會讓Microsft經(jīng)過市場嘗試在技術(shù)競爭中篩選最優(yōu)秀的技術(shù),但是對于Microsoft技術(shù)的跟隨者來說,未免有點太不公平,整天吭哧吭哧被Microsoft拿來當免費的試驗品來用。我特別不理解的是MSDN宇宙版,Microsoft總是把無窮無盡的文檔灌給你,讓你永遠學不完,但實際上我真的不需要那么多概念,我只需要能夠很好的完成我工作的技術(shù),并且這個技術(shù)可以持續(xù)的完善就好了。而不是今天給我這樣一個東西,明天灌給我無窮的文檔,后天當我用順手以后,又告訴我這東西作廢了,你給我重新學習新東西,然后又是無窮的文檔,總之很惱火。
所以就是:重點學習Java,有時間去學習Python,保持對dotnet的關(guān)注即可。
客戶端:
前面說了那么多XAML的東西,都是和這有關(guān),七年以后肯定是XAML的天下,但是五到七年之內(nèi)還不是:
1、Java
Java在客戶端真的是扶不起的阿斗,這都怪Sun。Sun造就了Java的成功,又一手毀了Java在客戶端的市場。那些個Swing和SWT的死忠團也不要和我爭什么,我也懶得和你們爭,你們覺得好就好吧,道不同不相與謀,你覺得好你就用你的,我覺得不好我就用別的。用不著纏著我非逼我說Java做客戶端好,沒必要,況且就算你逼我承認又怎樣?我就是玉皇大帝金口玉言了?得到我的承認,Java就有前途了?我好像還沒有那么大本領(lǐng)吧?就是IBM, Sun也沒有那么大本領(lǐng),所以好不好也不是我說了算,用不著逼我。
2、dotnet winforms
由于Windows2000/WindowsXP不帶dotnet CLR,所以winforms一直沒有能夠普及得很好,等Longhorn一出來,又變成了XAML了,winforms又被淘汰了,所以 winforms的地位特別尷尬,但是在這5-7年中,你想開發(fā)既能夠在Windows2000/WindowsXP,又能夠在Longhorn上面跑的桌面程序,winforms好像又是Microsoft技術(shù)中最好的選擇。所以只好一直尷尬下去。
3、VC,VB
dotnet出來以后就開始尷尬了,說用吧,好像很落伍了,都dotnet時代了,說不用吧,又沒有好的替代品,現(xiàn)階段開發(fā)桌面程序,還真得不得不用,而且還挺好用的。所以VC6SP5,VB6的死忠團也比較多。
4、Delphi
dotnet出來以后Borland就開始跟風了,這一跟風,連老本都跟沒有了。未來的XAML時代,我也不知道Borland怎樣找自己的定位,但不管怎么說,從歷史來看,本地代碼的應(yīng)用程序永遠有它一席之地!就算XAML又如何如何做得漂亮了,關(guān)鍵的地方,和特定資源處理相關(guān)的部分,還是本地代碼的程序管用。你看VB出來多少年了,用VB開發(fā)的都是一些上層的項目級別的應(yīng)用軟件,一旦涉及產(chǎn)品領(lǐng)域,還是VC和Delphi管用。所以現(xiàn)在大家還是不得不用Delphi7阿。
BTW:XAML應(yīng)用致力于快速開發(fā)項目級別的應(yīng)用,特別是可以跑在IE瀏覽器里面的,因此是RIA的首選。但是畢竟也有很多不適合用RIA的場所,特別是例如我要備份某些文件,你用XAML?那性能就不用提了。所以Delphi如果好好發(fā)展VCL,封裝Windows32 API,我覺得也是一條路,未必比現(xiàn)在跟隨dotnet差。
5、Flash RIA
其實我覺得Flash不適合做RIA的,但是Flash普及率太高,XAML又離普及太遙遠,而Flash現(xiàn)在就可以用了,所以是當前RIA的首選。不過我對Macromedia公司比較失望,如果Macromedia能夠公布Flash實現(xiàn)細節(jié),作為一個公開的標準向ISO提交,同時免費開源Flex,我敢說,F(xiàn)lash RIA會迅速普及的。等5-7年XAML的時代,由于Flash的市場占有率,XAML就未必能拼得過Flash。可惜的是Macromedia公司目光過于短淺,只知道賺眼前的小錢。
6、Python
這5-7年內(nèi),RIA應(yīng)用和RCP應(yīng)用不會統(tǒng)一,XAML才具備將RIA和RCP統(tǒng)一的實力。從這5-7年來看,F(xiàn)lash是RIA的首選,而RCP的首選,我要推薦Python。原因前面已經(jīng)提過,簡單總結(jié)一下:
1)wxWidgets是一個比MFC優(yōu)雅的庫,TortoiseCVS用wxWidges而不用MFC,就是因為wxWidgets好用,而不是為了可以移植。
2)Python的面向?qū)ο竽_本語言編程適合快速界面開發(fā)
3)Python在服務(wù)器端和客戶端都非常有前途,可以形成一個統(tǒng)一的解決方案,這一點明顯比Java有優(yōu)勢
4)Python桌面應(yīng)用程序可以完全編譯為本地代碼,脫離Python運行環(huán)境,這一點比dotnet winforms都有優(yōu)勢
5)Python可以不受限制的任意調(diào)用Windows32 API,所以凡是VC6可以做的事情,Python就可以做
試想一下,現(xiàn)在我們開發(fā)桌面應(yīng)用程序有什么要求?
一、不要附帶一個JRE或者CLR的累贅
二、可以快速開發(fā)
三、性能要有保證
四、方便的遠程方法調(diào)用支持
此外如果能夠跨平臺就最好了
Java前三點都不符合;dotnet winforms不符合一;VC6不符合二和四,VB6不符合三和四;Delphi7符合前四點;Flash RIA不符合三;Python全部都符合!并且請記住Python是一個完全開源免費的方案!
客戶端技術(shù)在這5-7年中,在RIA領(lǐng)域我會學習一下Flash,在RCP領(lǐng)域我會重點學習Python,此外會觀望一下XAML。
posted on 2006-08-24 15:10 Binary 閱讀(255) 評論(0) 編輯 收藏 所屬分類: 雜七雜八