首先申明:我不是adobe雇傭的槍手,我也從不認識adobe的人。我只是一名被C/S和B/S長期困擾希望尋找一套解決方案的人。
昨天去參加了adobe AIR 發(fā)布會
adobe是業(yè)界著名的客戶端展現(xiàn)工具和展現(xiàn)設(shè)計工具 提供商。
展現(xiàn)工具:PDF、FLASH。展現(xiàn)設(shè)計工具:photoshop、Dreamwaver、FLASH。
很多人都疑問AIR有什么用。昨天在會場也有同學提出了這個問題。既然有了AJAX 純的JS的客戶端表現(xiàn)組件包,如最近剛獲得金牛獎的ZK組件包,那為何要有AIR?
我給大家解釋解釋。大家都能看到現(xiàn)在的趨勢:互聯(lián)網(wǎng)軟件在向客戶端融合,客戶端在向互聯(lián)網(wǎng)融合。
互聯(lián)網(wǎng)企業(yè)發(fā)源于WEB世界,那么它要延伸互聯(lián)網(wǎng),必須要基于現(xiàn)在自己的優(yōu)勢和根。JS技術(shù),這種根植于網(wǎng)絡(luò)世界的技術(shù)就是最理想的選擇。使用慣了WEB應用軟件的用戶,對于本地安裝一個軟件,本地軟件那樣的操作習慣就感到很奇怪。
而對于習慣了使用本地軟件的用戶,現(xiàn)在開始有了互聯(lián)網(wǎng)跨出局域網(wǎng)的業(yè)務(wù)需求了,怎么辦?一種辦法當然是給他們另外開發(fā)一套B/S企業(yè)管理軟件,但他們怎么使用都不順手。
于是AIR產(chǎn)生。讓他們能滿足互聯(lián)網(wǎng)處理,又能像本地軟件一樣操作。
又有客官問了,聽過微軟也推出了一種客戶端跨互聯(lián)網(wǎng)處理的技術(shù),叫WPF和WCF。微軟是客戶端的霸主,而且微軟的
開發(fā)工具也是一流的,adobe既不熟悉開發(fā)工具這行當,也沒有客戶端優(yōu)勢,微軟在OS層面做點手腳,就像當年給netscape下點藥做點限制一
樣,AIR就沒前途了。
但是,但是。這個世界總有但是。
要知道,做企業(yè)管理軟件應用,很重要的就是數(shù)據(jù)安全。要把自己的數(shù)據(jù)和業(yè)務(wù)處理放到公網(wǎng)上,就有擔憂。但是企業(yè)發(fā)展
必須跨互聯(lián)網(wǎng),有需求啊。那怎么辦?用微軟的?太不安全了。于是挑選了JAVA。但JAVA一直雄霸于服務(wù)器端,客戶端JAVA也沒有經(jīng)驗啊。從早期的
Applet,到Swing,都以失敗告終。不能讓JAVA的服務(wù)器端配合WPF的客戶端吧?于是AIR出場了。
adobe也很聰明,知道微軟這個長年想擴展到互聯(lián)網(wǎng)卻屢屢受挫的困獸,必然拼了老命也要推自己的WPF和WCF技術(shù),這是微軟未來的命啊。想在這個霸主的肩膀上吃肉,是比登天難。于是祭出微軟最害怕的一招:開源、免費、基于開放技術(shù)標準、跨平臺。
adobe不擅長開發(fā)工具的開發(fā),那就不開發(fā)。況且這個世界上除了微軟世界的visual
studio工具外,微軟的對立陣營就有最開放的eclipse。eclipse已經(jīng)不僅僅是一個JAVA的開發(fā)IDE,現(xiàn)在Ruby、PHP、C++、
Python都在它上面有插件。于是adobe也把自己插在上面。跟著程序員大潮走,讓程序員使用自己最熟悉的IDE開發(fā)AIR。
adobe一直擅長客戶端表現(xiàn),所以adobe也沒有必要提供一個從服務(wù)器到客戶端一整套技術(shù)方案。說白了,AIR
就是一個和AJAX組件包一個層次的解決方案。主要用于客戶端表現(xiàn)。這點非常重要。許多同學沒有看清這一點,和DELPHI比,和JAVA比,和.net
比。其實AIR就專注客戶端表現(xiàn)。你的業(yè)務(wù)層完全可以用PHP、JAVA、C#來寫。再說了,AIR技術(shù),內(nèi)在其實就是HTML+JAVAScript,
只不過改進了一些,換了個名字,叫MXML和ActionScript。微軟的WPF技術(shù),也是這兩個技術(shù)組成。大家都是一路子。
PDF抓住了PC時代,F(xiàn)LASH抓住了瀏覽器時代,AIR是要抓住瀏覽器和PC融合的時代。這也是adobe的命
根,所以兩家公司都拼了命。微軟有其強大的現(xiàn)實客戶和研究開發(fā)中心和營銷手段,adobe則采用了最開放最聯(lián)盟來對抗,讓微軟一家公司之力來對抗全球開放
的程序員。
WPF僅限于微軟平臺,雖然sliverlight號稱以后也要垮MAC和LINUX平臺。但我說的比較是AIR和WPF,而非FLEX和Sliverlight這兩種技術(shù)。
我對FLEX和Sliverlight這兩種技術(shù)一直心存懷疑。他們到底是給什么用戶用的呢?習慣于瀏覽器的用戶?人家有AJAX組件包啊,優(yōu)秀開源的N多,商業(yè)的也N多。習慣于本地運行軟件的用戶?人家有AIR和WPF這兩種技術(shù)啊。
FLEX和Sliverlight這兩種技術(shù)產(chǎn)生,我來解釋一下我自己的觀點。
adobe的AIR還沒有煉成。FLASH是adobe現(xiàn)在的優(yōu)勢。要想走到目的地,F(xiàn)LASH必須是自己的跳板,于是FLEX必須作為過渡。
而微軟呢?VISTA本來就是微軟最寄予希望的操作系統(tǒng),原生的.net framework
3.0,而且全部用.net重寫,一流的面向service的操作系統(tǒng),圓了當年微軟COM之夢。而且.net framework
3.0最主要的技術(shù)WPF、WCF,還有一個夫死胎中的WF,其實都是很有未來前瞻的技術(shù),但由于技術(shù)難度太大,當然也由于太多人看透了微軟在互聯(lián)網(wǎng)戰(zhàn)略
的陌生和遲疑和舊有EXE技術(shù)思想,所以都跑到了純正的互聯(lián)網(wǎng)公司,給VISTA形成了難產(chǎn)。微軟希望能無縫且毫無體驗差異的整合互聯(lián)網(wǎng)和本地。但是這個
過程太漫長了。眼看著adobe利用FLASH做跳板,以占領(lǐng)自己未來想占領(lǐng)的位置,自己能不能到達目的地還不好說,于是在急匆匆中推出了
sliverlight。其實微軟本來沒有sliverlight研究計劃,希望借助VISTA一舉掀開未來大幕,但VISTA不爭氣,沒掀好,于是必須
應急。
所以,奉勸開發(fā)慣了網(wǎng)站的程序員,繼續(xù)拿起你們的AJAX,因為你們不理解人們?yōu)槭裁匆肁IR。
對于開發(fā)慣了EXE的程序員,繼續(xù)使用AIR或WPF來開發(fā)你們的下一代產(chǎn)品,別想著用FLEX。習慣用微軟技術(shù)的就用WPF,習慣用非微軟技術(shù)的,就選擇AIR。就這么簡單。
我給大家列了一個對比列表,大家可以理解這個新技術(shù)和過去技術(shù)的相似和關(guān)聯(lián)。
AIR runtime=.net framework=JVM
AIR=WPF=JAVA Application
FLEX=Sliverlight=JAVA Applet
至于Google
Gears,是互聯(lián)網(wǎng)向桌面融合的產(chǎn)物,而我們今天討論的是桌面向互聯(lián)網(wǎng)融合。雖然Google Gears、JAVA JSF、Adobe
AIR/FLEX、微軟WPF/Sliverlight都是RIA的解決方案。但都是各自從各自的優(yōu)勢出發(fā)發(fā)展的技術(shù)方案
最后結(jié)尾總結(jié)關(guān)鍵幾句:
1 AIR是給習慣開發(fā)EXE程序員準備的非微軟技術(shù)的互聯(lián)網(wǎng)解決方案。習慣微軟技術(shù)的請離開,習慣網(wǎng)站的請離開
2
AIR工作在表現(xiàn)層。AIR只是一個客戶端表現(xiàn),和AJAX是一樣的。都是HTML+JAVASCIRPT。不要奢望它能做各種業(yè)務(wù)處理和運算。你的業(yè)務(wù)
可以包裝成webservice,也可以是PHP或JSP或asp.net頁面,調(diào)用方式可以是webservice,可以是httpservice,可
以是remoting。這樣你的業(yè)務(wù)層就可以和表現(xiàn)層AIR交流數(shù)據(jù)了
3 AIR IDE只是HTML+AVACRIPT設(shè)計和調(diào)試工具,所以你也別奢望AIR IDE能象JAVA和C#的IDE環(huán)境那樣強大。你過去怎么設(shè)計和調(diào)試HTML+JAVASCRIPT,那么你現(xiàn)在仍然保持那種心態(tài)。
4
AIR不是FLASH。他們是兩種不同的應用目的和技術(shù)發(fā)展方向。不要用FLASH開發(fā)企業(yè)管理軟件,也不要用AIR開發(fā)多媒體。雖然能,但不擅長(就如
你拿C來開發(fā)WEB)。AIR不需要運行在瀏覽器中,不需要使用FLASH容器。AIR有自己的容器和運行環(huán)境。AIR和你的EXE是一樣的安裝和執(zhí)行。
5AIR和WPF都處于不成熟期,可以作項目,但不要把寶押在他們上面做下一代產(chǎn)品線(預計下下版應該可以進行企業(yè)
下一代產(chǎn)品線開發(fā),一般都是軟件3個版本后才強壯穩(wěn)定起來,按照競爭的激烈程度,這個第三個正式版本時間會在明年的上半年)。不過你也不要等待他們成熟后
再做再研究,這樣的等待就如同2001年等待JAVA成熟一樣。現(xiàn)在JAVA是成熟了,但是你還有機會么?
6不要懷疑AIR和WPF是不是未來。業(yè)界早有共識,這就是未來。不要在GOOGLE
WEBOS和客戶端OS之間選擇來選擇去,如果你是網(wǎng)站開發(fā)人員,安心研究你的GOOGLE
RIA技術(shù)。不要懷疑是跟微軟還是跟adobe。如果你一直在微軟的技術(shù)圈子中行走,那么你安心用你的WPF好了,都是未來。
7有許多人問起來了SEO在AIR和FLEX上的缺陷。說slivelight支持SEO和搜索友好。我想說的一句是:開發(fā)企業(yè)管理軟件,怕的就是搜索,怕的就是企業(yè)數(shù)據(jù)被搜索引擎搜索到。不能搜索到才好呢
8AIR為過去的EXE程序員提供了自動版本檢測和自動升級的API,這是讓C/S程序員非常興奮的一件事。回想當
年,客戶端版本不一致,出了不少怪異的事情。AIR也提供了離線后暫時保存數(shù)據(jù)到本地內(nèi)嵌在AIR
runtime中的sqlite(操作和平常SQL一樣),繼續(xù)操作軟件,連線后同步數(shù)據(jù)。OK
9
你如果沒有開發(fā)過MVC架構(gòu),沒有用過COM多層開發(fā),那么你不會明白業(yè)務(wù)層和表現(xiàn)層的分工和通訊的。你會一直想弄清楚怎么在AIR中寫SQL語句或
JAVA語句。你也一直會想在servlet中寫JAVASCRIPT和HTML代碼。你還處在漿糊代碼階段,建議給自己的代碼技術(shù)升升級。
想問我為什么關(guān)注AIR嗎?
因為我一直戰(zhàn)斗在行業(yè)管理軟件的開發(fā)上。我對于開發(fā)一套C/S,一套B/S,這樣極耗費開發(fā)成本開發(fā)時間和維護成本
的開發(fā)方式煩透了,要讓兩者操作習慣和功能都保持一致,難。如果有了BUG,兩個產(chǎn)品是兩個開發(fā)團隊,BUG都出在不同的地方,分別修改。讓一個公司維護
兩套人馬兩個產(chǎn)品,在中國大部分都是小軟件作坊的現(xiàn)狀下,哪個都做不好。不如做一個既是C/S又是B/S的軟件。
那是多么美好的事情啊。