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