其實Spring和EJB爭論起源于輕和重的討論,我偶爾翻起多年前的米蘭 昆德拉“生命不能承受之輕”這本書。
記得當時在大學(89年左右)時,一個高年級的“傳道士”突然以“生命不能承受之輕”為口頭禪,引起我們小輩的羨慕和納悶,挺拗口的啊。他還說:比喻是一種危險的東西,人是不能和比喻鬧著玩的。至此,我以后不敢隨便用比喻,老實用邏輯推理來說事吧。 希臘哲學家巴門尼德和中國老子一樣,把宇宙氛圍對立統(tǒng)一的二元:明與暗;厚與??;重與輕。 尼采認為永恒的輪回的想法是最沉重的負擔,最沉重的負擔壓迫著我們,讓我們屈服于它,把我們壓到在地,女人總是渴望承受一個男性身體的重量,于是最沉重的負擔同時也成了最強盛的生命力的影像。 負擔越重,我們的生命越貼近大地,它就越真切實在。 世界上重的東西很多,藝術(shù)上,貝多芬的音樂是重的;軟件上:EJB曾經(jīng)是重的,在我們心目中,重好像代表正統(tǒng),代表一種主導。 生活中承受沉重負擔;軟件開發(fā)中,過去EJB的學習開發(fā)調(diào)試都是一種沉重,在我們承受“這些”之重時,我們向往燦爛美麗的生活或軟件之輕了。 而這時,曾經(jīng)輕盈美麗的Spring走到大家面前,受到我們瘋狂的歡迎,從此可以擺脫沉重的負擔了。 巴門尼德也說:輕者為正,重者為負;我們甚至相信:輕量框架將取代重量,成為正統(tǒng)和主導地位。 但是,重的真的殘酷; 而輕的真的美麗? 其實,當EJB 3.0推出;當Spring 2.0的程序需要特別的javac進行編譯時,重和輕模糊了。 重和輕的對立是所有對立中最神秘、最模糊的。 J2EE提供了一套企業(yè)級Java應(yīng)用框架(一種標準),是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復雜問題的體系結(jié)構(gòu)。 J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個應(yīng)用組件根據(jù)他們所在的層分布在不同的機器上。J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統(tǒng)模式中,客戶端擔當了過多的角色而顯得臃腫,使用J2EE 的多層企業(yè)級應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個多層化應(yīng)用能夠為不同的每種服務(wù)提供一個獨立的層,以下是 J2EE 典型的四層結(jié)構(gòu): 運行在客戶端機器上的客戶層組件 運行在J2EE服務(wù)器上的Web層組件 運行在J2EE服務(wù)器上的業(yè)務(wù)邏輯層組件 運行在EIS或數(shù)據(jù)庫服務(wù)器上的業(yè)務(wù)信息系統(tǒng) J2EE為搭建具有可伸縮性、靈活性、易維護性的商務(wù)系統(tǒng)提供了良好的機制: 保留現(xiàn)存的IT資產(chǎn): 由于必須適應(yīng)新的業(yè)務(wù)需求,利用已有的信息系統(tǒng)方面的投資,而不是重新制定全盤方案就變得很重要。這樣,一個以漸進的(而不是激進的,全盤否定的)方式建立在已有系統(tǒng)之上的服務(wù)器端平臺機制是我們所需求的。J2EE架構(gòu)可以充分利用用戶原有的投資,如一些公司使用的BEA Tuxedo、IBM CICS, IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。這之所以成為可能是因為J2EE擁有廣泛的業(yè)界支持和一些重要的‘企業(yè)計算‘領(lǐng)域供應(yīng)商的參與。每一個供應(yīng)商都對現(xiàn)有的客戶提供了不用廢棄已有投資,進入可移植的J2EE領(lǐng)域的升級途徑。由于基于J2EE平臺的產(chǎn)品幾乎能夠在任何操作系統(tǒng)和硬件配置上運行,現(xiàn)有的操作系統(tǒng)和硬件也能被保留使用。 高效的開發(fā): J2EE允許把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成。這樣開發(fā)人員可以集中精力在如何創(chuàng)建邏輯上,相應(yīng)地縮短了開發(fā)時間。高級中間件供應(yīng)商提供以下這些復雜的中間件服務(wù): 1.狀態(tài)管理服務(wù) -- 讓開發(fā)人員寫更少的代碼,不用關(guān)心如何管理狀態(tài),這樣能夠更快地完成程序開發(fā)。(注:指有態(tài)會話Bean,而Spring目前沒有提供這樣的狀態(tài)管理服務(wù),Jdon框架則提供了) 2.持續(xù)性服務(wù) -- 讓開發(fā)人員不用對數(shù)據(jù)訪問邏輯進行編碼就能編寫應(yīng)用程序,能生成更輕巧,與數(shù)據(jù)庫無關(guān)的應(yīng)用程序,這種應(yīng)用程序更易于開發(fā)與維護。 (注:這就是說為什么說數(shù)據(jù)庫時代終結(jié)了) 3.分布式共享數(shù)據(jù)對象CACHE服務(wù) -- 讓開發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。(Spring沒有提供緩存,jdon框架提供了,而EJB提供了強大的分布式緩存,當然今天我們可以將JBoss的POJO 分布式緩存分離出來,用在Spring或Jdon框架上,但是這些需要你的定制能力) 支持異構(gòu)環(huán)境: J2EE能夠開發(fā)部署在異構(gòu)環(huán)境中的可移植程序?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計合理的基于J2EE的程序只需開發(fā)一次就可部署到各種平臺。這在典型的異構(gòu)企業(yè)計算環(huán)境中是十分關(guān)鍵的。J2EE標準也允許客戶訂購與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個方案所需的費用。 可伸縮性: 要選擇一種服務(wù)器端平臺,這種平臺應(yīng)能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進行商業(yè)運作的大批新客戶?;贘2EE平臺的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到Linux、或UNIX與大型機系統(tǒng),這種系統(tǒng)單機可支持64至256個處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺服務(wù)器集成部署。這種部署可達數(shù)千個處理器,實現(xiàn)可高度伸縮的系統(tǒng),滿足未來應(yīng)用的需要。 穩(wěn)定的可用性: 一個服務(wù)器端平臺必須能全天候運轉(zhuǎn)以滿足需求。因為INTERNET是全球化的、無處不在的,即使在夜間按計劃停機也可能造成嚴重損失。若是意外停機,那會有災難性后果。J2EE部署到可靠的操作環(huán)境中,他們支持長期的可用性。一些J2EE部署在WINDOWS、Linux環(huán)境中,也可選擇健壯性能更好的操作系統(tǒng)如Sun Solaris、IBM OS/390。最健壯的操作系統(tǒng)可達到99.999%的可用性或每年只需5分鐘停機時間。這是實時性很強商業(yè)系統(tǒng)理想的選擇。 基于構(gòu)件:它特點是編譯碼、獨立部署的單位、由第三方進行組合的單位、無持久狀態(tài)等,它具有可插入、更好的設(shè)計、更好的復用、方便的更新、實現(xiàn)與接口分離的優(yōu)點。 |
|