2007 年 2 月 08 日
盡管 Web 2.0 一詞的實際含義遭到了普遍質(zhì)疑,但它仍是計算機行業(yè)內(nèi)最炙手可熱的時髦字眼。本月的 Geronimo 叛逆者將避開這些干擾,著眼于 Apache Geronimo 項目,從 Web 2.0 應(yīng)用程序的構(gòu)建程序和 Web 2.0 應(yīng)用程序本身的角度加以分析。
簡介
在 Geronimo 叛逆者專欄 中,我們已經(jīng)大量討論了業(yè)內(nèi)的新生技術(shù),以及 Geronimo 如何讓您能夠充分利用這些技術(shù)。畢竟,最熱門的新技術(shù)和實踐能吸引人去用不就是這些最新最棒的技術(shù)的意義所在么?但是若談及新事物,與任何其他術(shù)語比較而言,有一個術(shù)語會被更多地提到:Web 2.0。Web 2.0 讓公司能以標(biāo)新立異和遠(yuǎn)見卓識的形象脫穎而出,而且最重要的是,它表明這些公司絕非 Web 1.0 泡沫破裂的犧牲品。
評定 Web 2.0 就是典型地在對新生熱門事物進行探究,如果您覺得這種說法有點太過模糊因而毫無意義,那么您并不是惟一持這種想法的人。事實上,我敢說很多宣稱自己公司(或其產(chǎn)品)采用了 Web 2.0 的那些公司實際上并不理解該術(shù)語的實際含義。事實上,對該術(shù)語實際含義的爭論從它產(chǎn)生的那一天就開始了,而且到現(xiàn)在仍未停止。
因此為了避免讓我們?nèi)急粫r髦字眼搞得頭腦過熱,我認(rèn)為有必要利用這次機會來討論術(shù)語 Web 2.0 背后的概念并研究一下這些概念與 Geronimo 以及與使用 Geronimo 才得以構(gòu)建的應(yīng)用程序之間的關(guān)系。
那么,首先我們究竟該如何定義 Web 2.0 呢?最廣為接受的定義來自于 Tim O‘Reilly 對于此主題的討論(有關(guān)鏈接,請參閱本文末尾的 參考資料 部分)。讓我們結(jié)合他定義的如下這七個核心概念來審視一下 Geronimo。
Web 作為平臺
Web 2.0 應(yīng)用程序使用 Web 作為平臺,這不用動腦筋也能看出來:它的名字里不是清楚地寫著么?但這并不像看起來那么明顯。應(yīng)用程序使用 Web 作為平臺并不意味著所討論的應(yīng)用程序一定就是基于瀏覽器的應(yīng)用程序。它只是表明如果 Web 不存在,則應(yīng)用程序也不存在。
在某些情況下,有些東西還是十分明顯的。對于是 Web 站點的 Web 2.0 應(yīng)用程序,Web 肯定是它們的必備部分。但是對于那些雖不是 Web 站點但卻使用了 Web 架構(gòu)的應(yīng)用程序,又該如何呢?例如,一個經(jīng)常被提及的 Web 2.0 應(yīng)用程序是 BitTorrent,它不是 Web 站點而是一個對等文件共享應(yīng)用程序和網(wǎng)絡(luò)。BitTorrent 使用 Web 架構(gòu)來實現(xiàn)其功能。在后臺大量使用 Web 服務(wù)的應(yīng)用程序也可以被認(rèn)為是使用 Web 作為平臺。
認(rèn)為 Web 2.0 應(yīng)用程序的突出特征是以 Web 為平臺,實際上也揭示了它所不 具備的那些特征。Web 2.0 應(yīng)用程序不依賴于單獨的大型安裝或?qū)iT的硬件。事實上,雖然在這里做這樣的討論看上去有點不合適,但我還是要提一下在許多方面 Web 2.0 應(yīng)用程序這方面的特性都展示了 Web 應(yīng)用程序的民主化。換言之,Web 2.0 的目的就是要將所有人都包括進來,而不僅僅只是少數(shù)特權(quán)者。
要描述此概念往往會涉及另一個時髦字眼(或者恰當(dāng)?shù)卣f,熱門詞匯):長尾。該詞匯源于 Bell 曲線的概念,在 Bell 曲線中,從表面上看,大部分操作應(yīng)在中心巨大的凸起部分發(fā)生。然而實際上,大多數(shù)數(shù)據(jù)點會落于邊側(cè)的范圍內(nèi),遠(yuǎn)離中心(或在這種情況下,落于右側(cè),遠(yuǎn)離凸起部分),如圖 1 所示,該圖引自 Wikipedia 中的相關(guān)討論。
圖 1. 長尾
請看下面的情況:很多美國人都喜歡看足球比賽作為消遣。相對而言,喜歡其他消遣的人數(shù)很少(例如冰壺或養(yǎng)駱駝)。這樣看來,如果要尋找最大的觀眾群,您只有跟蹤喜歡看足球的人。但是,如果把所有對其他消遣(例如冰壺、養(yǎng)駱駝、參加慈善活動、看電影等等)感興趣的人數(shù)都加起來,您將會獲得更高的數(shù)字。惟一的區(qū)別是這些人群的興趣不在一處。
Web 2.0 就是要充分利用長尾理論,或者像 Tim O‘Reilly 所說的那樣,從邊緣做起而不只側(cè)重于中心。在這種環(huán)境下,即使您的興趣僅被世界上其他 13 個人共享也沒有關(guān)系,因為還有一個社區(qū)在支持您。
那么,Geronimo 又是如何回應(yīng)這些標(biāo)準(zhǔn)呢?作為 Web 應(yīng)用服務(wù)器,Geronimo 當(dāng)然要使用 Web 作為平臺。就從邊緣做起而言,Geronimo 是一個免費的 Web 應(yīng)用服務(wù)器并且任何人都可以安裝。這樣一來,您無需一個大型社區(qū)來證明其使用是否正當(dāng)。我敢說使用了 Geronimo 的大多數(shù)項目都很小,如果長尾項目要求在軟件上投入數(shù)萬美元,那么這些項目很可能永遠(yuǎn)無法得見天日。
這種概念還可推廣到由 Geronimo 啟用的應(yīng)用程序中。由于任何人都可以使用 Geronimo,因此任何人都可以基于它構(gòu)建應(yīng)用程序,而不管該應(yīng)用程序是否需要一個大型社區(qū)來證明其存在與否。
利用集體智慧
Web 2.0 應(yīng)用程序的另一個特性是利用集體智慧。這句話意味著越多的人使用應(yīng)用程序,它就會變得越好。例如,當(dāng)您注冊了 Netflix 影片租賃服務(wù)后,站點在向您推薦影片時,不僅會考慮您個人的喜好,而且還可能會參考其他訪問者的喜好。換言之,如果您說自己喜歡星球大戰(zhàn) 系列影片,則站點可以根據(jù)大多數(shù)喜歡星球大戰(zhàn) 系列影片的人也喜歡印第安納.瓊斯 系列影片這一事實,向您推薦印第安納.瓊斯 系列影片。當(dāng)然,參與到此系統(tǒng)中的用戶越多,您獲得的數(shù)據(jù)就越好。
實際上,Web 2.0 的另一個原則是默認(rèn)參與的理念。換言之,只有少量與站點進行交互的人會積極地參與。這是事實。以 Amazon.com 上的評論為例。它們對于網(wǎng)站和用戶都很有幫助,但只有少量訪問者會撰寫這些評論。另一方面,您每執(zhí)行一次搜索或者(甚至更好)在站點每購買一次商品,都在加深站點對購買模式及其背后的集體智慧的理解。
在某種意義上講,開源項目想當(dāng)然就可以利用此概念。越多的人使用,項目就運行得越好,因為 bug 會被找到并修正。作為一個開源項目,Geronimo 滿足此標(biāo)準(zhǔn)。您可以將 Geronimo 用于核心內(nèi)容而無需修正任何 bug。
就使應(yīng)用程序可以利用集體智慧并與 Java? 2 Platform, Enterprise Edition (J2EE) 完全兼容而言,Geronimo 為此類應(yīng)用程序提供了所需的全部功能,因此在這方面,Geronimo 也沒問題。
數(shù)據(jù)作為下一個 Intel Inside
如果經(jīng)過先前的討論,您現(xiàn)在有了這樣一種概念:數(shù)據(jù)對整個 Web 2.0 概念十分重要,那么您是絕對正確的。實際上,有時候 Web 2.0 看上去好像更關(guān)注于數(shù)據(jù)本身而不是對數(shù)據(jù)采取的操作。這也許是整體靈活性的問題,也可能是 Web 2.0 應(yīng)用程序利用集體智慧的結(jié)果。在任何一種情況下,這些標(biāo)準(zhǔn)背后的理念是 Web 2.0 應(yīng)用程序在很大程度上依賴數(shù)據(jù),而且數(shù)據(jù)最好對于應(yīng)用程序來說是惟一的,這使市場的各個領(lǐng)域(例如個人身份、公共日歷)都陷入了絕境。
O‘Reilly 舉了圖書和產(chǎn)品信息的示例。Amazon.com 和 Barnesandnoble.com 都從同一個數(shù)據(jù)集開始 —— 行業(yè)書籍?dāng)?shù)據(jù)庫 —— 但是 Amazon.com 不斷直接和間接地向該數(shù)據(jù)集中添加信息。不僅如此,Amazon 還添加了幾十萬的非書籍產(chǎn)品,因此如果某天您需要在您的博客上引用某一產(chǎn)品,您很可能就會包括一個指向 Amazon.com 的鏈接。應(yīng)用程序?qū)?Amazon 標(biāo)準(zhǔn)識別碼(Amazon Standard Identification Number,ASIN)即 Amazon 版本的國際標(biāo)準(zhǔn)書號(International Standard Book Number,ISBN)作為標(biāo)準(zhǔn)產(chǎn)品標(biāo)識符的日子應(yīng)該也不遠(yuǎn)了吧。
就這條標(biāo)準(zhǔn)而言,Geronimo 本身并不太多關(guān)注于數(shù)據(jù),因此它在這個范疇內(nèi)的表現(xiàn)不佳。但是 Geronimo 的確具有直接在應(yīng)用服務(wù)器內(nèi)創(chuàng)建 Apache Derby 數(shù)據(jù)庫的功能,因此我認(rèn)為在幫助啟用這類應(yīng)用程序方面,Geronimo 還是值得贊揚的。
軟件發(fā)布周期的終結(jié)
Web 應(yīng)用程序的優(yōu)點之一是能夠即時做出更改。換言之,如果您在某個中午發(fā)現(xiàn)應(yīng)用程序有 bug,就可以修正它。您可以在開發(fā)環(huán)境中測試修補程序,然后部署,到下班之前,即可完成這一切。就這么簡單!如果您習(xí)慣于 Web 環(huán)境而不是傳統(tǒng)的桌面應(yīng)用程序,那么對您來說,這樣的處理順序和過程非常自然。但是,如果您具有傳統(tǒng)的軟件編程背景,則這種隨意編碼的態(tài)度將是您所不能容忍的。
現(xiàn)在,在傳統(tǒng)的軟件開發(fā)環(huán)境中,更改都是通過不斷推出發(fā)布版來實現(xiàn)的。發(fā)布版可能每幾個星期、每幾個月就有一個,如果是特別大型的軟件,可能每幾年發(fā)布一次 —— 但不管怎樣,發(fā)布新版本都是大事。事實上沒必要一定要這樣做事,Web 2.0 就利用了這一點。如果開發(fā)了一個新功能并且已準(zhǔn)備好投入使用,為什么還要等,而不讓用戶立即使用呢?事實上,Web 2.0 應(yīng)用程序在一天內(nèi)發(fā)布若干次新功能的情況十分常見(因此有了永久測試版 的說法)。
在這一方面,Geronimo 打了個擦邊球。由于它實際上不是基于 Web 的應(yīng)用程序并且用戶必須不斷地下載新應(yīng)用程序才能獲得其益處,因此它需要有一個實際的軟件發(fā)布周期。在一個 Web 應(yīng)用程序(包括通過 Geronimo 構(gòu)建的那些應(yīng)用程序)中,只要 Geronimo 一有新的發(fā)布,所有用戶就會自動收到新代碼的優(yōu)點。但是這并不意味著 Geronimo 用戶受限于其發(fā)布周期;作為一個開源項目,專業(yè)用戶隨時可以到 apache.org 查看源代碼的最新版本。
輕量級編程模型
如前所述,數(shù)據(jù)是 Web 2.0 應(yīng)用程序的重要部分,與之有關(guān)的一個概念是要能夠訪問該數(shù)據(jù)且訪問不必非要通過主應(yīng)用程序。mashup 是從 Web 2.0 得來的,一個應(yīng)用程序包含其他應(yīng)用程序的數(shù)據(jù),而這個應(yīng)用程序又可被并入第三個應(yīng)用程序。例如,如果您有一個提供各種酒店信息的站點,您可能會在網(wǎng)站中包括一張配有用戶注釋的該區(qū)域的 Google 地圖。一個旅游站點可以通過利用輕量級協(xié)議 —— 例如基于 Representational State Transfer(REST)的 Web 服務(wù) —— 來利用您的酒店信息。
這種能夠混合搭配應(yīng)用程序的能力是 Web 2.0 的特點之一。事實上,如果您認(rèn)為用戶無論通過您的網(wǎng)站還是通過他人網(wǎng)站使用您的數(shù)據(jù)對您來說都是件好事,那么您可能就需要設(shè)計應(yīng)用程序使其易于其他用戶介入。
Geronimo 通過兩種不同的方法來滿足這個條件:就應(yīng)用程序本身而言,應(yīng)當(dāng)采用模塊化設(shè)計,從而使每個人都可以添加擴展、GBean 等等,即使應(yīng)用程序并不提供可在其他地方使用的數(shù)據(jù)。另一方面,Geronimo 能夠運行 Apache Axis2 軟件包,它讓您可以輕松地提供簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)和數(shù)據(jù)的 REST Web 服務(wù),因此能夠很好地讓您在自己的應(yīng)用程序中使用此功能。
軟件可超越單一設(shè)備的級別
Web 2.0 的另一個原則是雖然應(yīng)用程序可能使用 Web 作為平臺,但這些應(yīng)用程序并不受限于臺式機上的瀏覽器,甚至根本不受限于任何瀏覽器。O‘Reilly 給出了 iTunes 作為示例,它不但是 Web 上的一個應(yīng)用程序,而且還是從音樂文件擴展到 iPod 的整個架構(gòu)。請記住,Web 2.0 致力于技術(shù)的民主化;這種概念既然適用于人,就沒有理由不適用于設(shè)備(是的,您需要有一個 iPod 才能脫離瀏覽器運行 iTunes,因此這與民主化觀點有點背道而馳,但從技術(shù)的角度來看,至少它是可行的)。
將來將數(shù)據(jù)擴展到無所不能的程度的另一個術(shù)語是無所不在的 Web 或無縫 Web。個人來講,我更傾向于我在此提出的術(shù)語分布信息,歸類到分布式計算中。
本質(zhì)上,這些術(shù)語意味著 Web 2.0 應(yīng)用程序應(yīng)當(dāng)在任何可能的位置(可以是瀏覽器、移動電話或汽車的儀表板)都可用。作為一個 Web 應(yīng)用服務(wù)器,Geronimo 當(dāng)然是被設(shè)計用于運行在比移動電話大的設(shè)備上的,但是理論上它可以運行于具有足夠容量的任何設(shè)備(使用 1.1 版,您可以下載 Geronimo 的 Little G 發(fā)布版,它占用的空間更小,但沒有 J2EE 證書)。這已經(jīng)是幸事了,因為它能夠使自己嵌入到非 Web 應(yīng)用程序中,但是以這種方法實現(xiàn)應(yīng)用程序違反了用 Web 作為平臺的要求。
豐富的用戶體驗
最后一個標(biāo)準(zhǔn)是豐富的用戶體驗。熱門詞匯 Web 2.0 和 Ajax (Asynchronous JavaScript + XML) 幾乎是同時開始流行起來的,因此可能很多人應(yīng)當(dāng)會很自然地認(rèn)為它們完全是一回事。Ajax 可提高 Web 頁面的交互性,方法是使用戶可以請求新信息而不刷新整個頁面。這些技術(shù)實際上已經(jīng)存在多年,但直到去年它們才差不多能夠方便地被使用。Google 用 Google Maps 應(yīng)用程序證明了 Ajax 技術(shù)的有效性,展示了當(dāng)整個應(yīng)用程序可以顯示在單個頁面內(nèi)(進而在貌似單個的瀏覽器請求的內(nèi)容內(nèi))時所能進行的操作。
但是創(chuàng)建 Web 2.0 應(yīng)用程序不僅需要啟用了 Ajax 的 Web 頁面。關(guān)鍵是要能以最簡單的方法創(chuàng)建有價值的應(yīng)用程序。比如,在頁面的一側(cè)創(chuàng)建列表并在用戶單擊該列表中的鏈接時更新頁面的另一側(cè)。又如,在用戶需要數(shù)據(jù)之前先透明地請求數(shù)據(jù)并使用戶可以在頁面內(nèi)任意移動,正如在 Google Maps 中所做的那樣。不管怎樣,這都將意味著提供一種能讓用戶參與的用戶體驗。
Geronimo 在根本上是一個服務(wù)器端應(yīng)用程序,因此除了管理頁面以外,沒有客戶機前端需要評估。在另一方面,Geronimo 提供了創(chuàng)建 Web 服務(wù)的功能,這些服務(wù)可由這些豐富的用戶體驗來調(diào)用。
結(jié)束語
現(xiàn)在,讓我們來回顧一下這次討論在評估 Geronimo 及可用 Geronimo 構(gòu)建的應(yīng)用程序方面為我們提供了哪些提示。從能否冠以 Web 2.0 之名的角度考慮,Geronimo 可能只能得 C+。但是這很糟糕么?只有當(dāng)您指望用 Web 2.0 這一熱門字眼來吸引大眾的時侯,才會顯得十分不利。而這正是問題的關(guān)鍵。Web 2.0 是一個概念,一個有待討論的東西。它并不是所有應(yīng)用程序都必須遵守的固定內(nèi)容。如果 Geronimo 不是 Web 2.0 應(yīng)用程序會有什么差別?一點也沒有。重要的是 Geronimo 讓您可以從中構(gòu)建 Web 2.0 應(yīng)用程序。在這方面它完全可以得 A,并且這才是真正至關(guān)重要的。
Geronimo 絕不僅僅限于其概念本身,它所代表的是用 Geronimo 能夠實現(xiàn) 的功能。
|