[摘 要] 本文主要對(duì)當(dāng)今最流行的兩大軟件開發(fā)平臺(tái),即J2EE平臺(tái)與.NET平臺(tái)進(jìn)行對(duì)比分析和應(yīng)用趨勢(shì)分析,旨在為企業(yè)級(jí)管理信息系統(tǒng)軟件開發(fā)平臺(tái)的選用指明方向#65377;
[關(guān)鍵詞] J2EE;體系結(jié)構(gòu);.NET;軟件平臺(tái)
[中圖分類號(hào)]F270.7[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2008)13-0072-04
隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展和普及程度的不斷提高,管理信息系統(tǒng)(Management Information Systems,MIS)的應(yīng)用已深入到各行各業(yè),擁有先進(jìn)高效的管理信息系統(tǒng)事實(shí)上已成為企業(yè)提高競(jìng)爭(zhēng)力的關(guān)鍵因素,開發(fā)企業(yè)級(jí)的管理信息系統(tǒng)也已成為軟件開發(fā)商的主要業(yè)務(wù)活動(dòng)之一#65377;與此同時(shí),隨著計(jì)算機(jī)硬件的快速更新和操作系統(tǒng)軟件的不斷升級(jí),以及三層/多層企業(yè)級(jí)信息系統(tǒng)結(jié)構(gòu)的深度發(fā)展和下一代分布式計(jì)算模型Web 服務(wù)的出現(xiàn),應(yīng)用軟件的架構(gòu)也經(jīng)歷了從集中式#65380;C/S結(jié)構(gòu)到B/S結(jié)構(gòu)的轉(zhuǎn)換#65377;在下一代企業(yè)管理信息系統(tǒng)的實(shí)現(xiàn)過程中,分布式架構(gòu)的部署以及開發(fā)平臺(tái)和開發(fā)工具的選擇,將是影響系統(tǒng)升級(jí)成敗的關(guān)鍵因素之一,企業(yè)應(yīng)用中關(guān)于平臺(tái)#65380;框架#65380;語言的競(jìng)爭(zhēng)也將愈演愈烈#65377;
當(dāng)前,前沿最活躍的管理信息系統(tǒng)開發(fā)平臺(tái)主要有以下4種:以Sun公司為首的若干大公司組成的聯(lián)盟大力推廣的J2EE,Microsoft公司針對(duì)J2EE開發(fā)的競(jìng)爭(zhēng)性產(chǎn)品
.NET,Borland公司(現(xiàn)在已和Inprise合并)開發(fā)的Delphi和美國數(shù)據(jù)庫應(yīng)用開發(fā)工具生產(chǎn)商PowerSoft(現(xiàn)已被數(shù)據(jù)庫廠商Sybase所收購)開發(fā)的PowerBuilder#65377;但是根據(jù)權(quán)威調(diào)查分析,到目前為止,J2EE與.NET已經(jīng)成為開發(fā)企業(yè)級(jí)管理信息系統(tǒng)的主流平臺(tái),二者的市場(chǎng)占有率約占市場(chǎng)總份額的八成#65377;然而,二者在實(shí)際的應(yīng)用中卻存在著巨大的差別,選擇哪種主流平臺(tái)對(duì)于軟件開發(fā)商和企業(yè)來說具有極其重要的意義#65377;
一#65380;J2EE與.NET的對(duì)比分析
1. J2EE與.NET的共同點(diǎn)
J2EE與.NET都是為了解決構(gòu)建企業(yè)級(jí)計(jì)算等大型平臺(tái)的問題而出現(xiàn)的,而且兩個(gè)平臺(tái)中都包含了一系列的共性技術(shù),通過這些技術(shù)可以縮短開發(fā)周期,提高開發(fā)效率,節(jié)省構(gòu)造成本;同時(shí)兩個(gè)平臺(tái)都在安全性#65380;擴(kuò)展性等方面作出了努力,都提供了一系列的技術(shù)以供選擇,從此角度來講,這兩個(gè)平臺(tái)都實(shí)現(xiàn)了它們的目標(biāo),都是成功的#65377;而且由于兩個(gè)開發(fā)平臺(tái)要解決的問題類似,所以很多技術(shù)也非常相近,有些概念甚至僅僅是名稱上的差別而已#65377;從總體來說,在技術(shù)上,這兩個(gè)平臺(tái)的相似之處遠(yuǎn)遠(yuǎn)多于相異之處[1]#65377;但是,作為當(dāng)今最流行的兩大主流開發(fā)平臺(tái),二者仍然有許多不同之處#65377;在開發(fā)企業(yè)級(jí)管理信息系統(tǒng)時(shí),如果沒有針對(duì)企業(yè)現(xiàn)狀以及企業(yè)的發(fā)展戰(zhàn)略,作出合適的選擇,往往會(huì)在將來的發(fā)展中付出沉重的代價(jià)#65377;
2. J2EE與.NET的不同點(diǎn)
(1)JVM與CLR的分析#65377;JVM(Java Virtual Machine,Java虛擬機(jī))是J2EE平臺(tái)的底層支持,CLR(Common Language Runtime,通用語言運(yùn)行時(shí))是.NET Framework 的核心[2]#65377;二者都包含了大量的新技術(shù)#65377;
JVM將Java源代碼首先編譯成bytecode,然后在運(yùn)行時(shí)對(duì)bytecode進(jìn)行解釋執(zhí)行,因此速度較慢,但是卻換來了平臺(tái)無關(guān)性的支持,實(shí)現(xiàn)了一次編寫,到處運(yùn)行#65377;跨平臺(tái)性一直是J2EE引以為豪的關(guān)鍵,這是通過JVM來實(shí)現(xiàn)的#65377;
CLR中的JIT Compiler(實(shí)時(shí)編譯器)會(huì)將C#(以及其他.NET語言,如VB.NET)翻譯成IL(Intermediate Language,中間語言),并在第一次運(yùn)行時(shí)對(duì)其進(jìn)行實(shí)時(shí)編譯,因此第一次執(zhí)行時(shí)速度很慢,但以后再次執(zhí)行時(shí)效率會(huì)很高#65377;鑒于微軟在“Windows平臺(tái)”上的代碼優(yōu)化功底,.NET代碼的執(zhí)行速度較之于Java有明顯的優(yōu)勢(shì)是不爭(zhēng)的事實(shí)#65377;但在Unix/Linux平臺(tái)上,由于.NET遲遲未能實(shí)現(xiàn)其跨平臺(tái)的承諾,J2EE幾乎成了唯一的選擇,執(zhí)行效率的比較也就無關(guān)緊要了#65377;
(2)開發(fā)語言的選擇#65377;J2EE在語言選用方面只能選擇Java語言,而.NET卻可以選擇多種開發(fā)語言,因此,.NET平臺(tái)的開發(fā)至少可以節(jié)省一筆語言培訓(xùn)費(fèi)用#65377;但是.NET的多語言開發(fā)也是有限度的,必須遵守CLR的嚴(yán)格標(biāo)準(zhǔn),才能順利轉(zhuǎn)移到.NET平臺(tái),否則就不能利用.NET的諸多優(yōu)點(diǎn)#65377;人們普遍認(rèn)為,C#是針對(duì).NET平臺(tái)開發(fā)的最好選擇,但是Java語言有著廣泛的支持者,它的一系列優(yōu)點(diǎn)使得它的表現(xiàn)絲毫不比C#遜色#65377;很多軟件開發(fā)商僅僅需要對(duì)員工進(jìn)行J2EE平臺(tái)使用技術(shù)的培訓(xùn)就可以轉(zhuǎn)向J2EE的開發(fā)#65377;
(3)垃圾收集機(jī)制的分析#65377;JVM和CLR都提供了垃圾收集機(jī)制,從而大大簡(jiǎn)化了開發(fā)人員的工作#65377;對(duì)JVM來說,除了在JVM管理的內(nèi)存空間中分配內(nèi)存之外,對(duì)于數(shù)據(jù)庫連接#65380;網(wǎng)絡(luò)連接等還要在JVM管理的空間外分配內(nèi)存#65377;如果不謹(jǐn)慎地對(duì)待這些空間,仍然可能發(fā)生內(nèi)存泄露的情況#65377;對(duì)于CLR來說,非托管資源也有可能引起內(nèi)存泄露,除此之外,不恰當(dāng)?shù)腇inalize方法也可能會(huì)阻塞CLR的專用線程,從而造成內(nèi)存資源不能回收#65377;
(4)對(duì)企業(yè)運(yùn)算的支持#65377;J2EE和.NET都非常適合開發(fā)企業(yè)計(jì)算平臺(tái),二者都為構(gòu)建完整的企業(yè)計(jì)算平臺(tái)做了大量的工作,都支持N層應(yīng)用的開發(fā),也都支持Web Service 的開發(fā),為異構(gòu)系統(tǒng)的應(yīng)用集成提供了方便[3]#65377;
J2EE是一個(gè)開放式的標(biāo)準(zhǔn),所有的標(biāo)準(zhǔn)細(xì)節(jié)都已經(jīng)對(duì)外界公布,任何廠商都可以根據(jù)這些標(biāo)準(zhǔn)來開發(fā)自己的產(chǎn)品,無論是開發(fā)工具還是應(yīng)用服務(wù)器和操作系統(tǒng)都有極大的選擇余地,這有助于降低系統(tǒng)成本,減少開發(fā)費(fèi)用#65377;而
.NET的標(biāo)準(zhǔn)并沒有完全開放,選擇了.NET就意味著完全選擇了微軟,從操作系統(tǒng)到所使用的服務(wù)器都需要選用微軟的產(chǎn)品,開發(fā)工具的選擇余地也不大#65377;
通常使用J2EE開發(fā)一個(gè)包括Web Service#65380;繼承企業(yè)遺留系統(tǒng)的并能夠滿足最新的企業(yè)計(jì)算需要的系統(tǒng),結(jié)構(gòu)示意圖如圖1所示#65377;
與之相對(duì)比,如果使用.NET開發(fā)這個(gè)系統(tǒng),那么其結(jié)構(gòu)如圖2所示#65377;
3. J2EE與.NET的對(duì)比分析


比較圖1和圖2,可以發(fā)現(xiàn):
(1)在數(shù)據(jù)層,使用J2EE可以使用JDBC或者SQL來連接各種各樣的數(shù)據(jù)庫,從免費(fèi)的MySQL到功能強(qiáng)大的DB 2或Oracle,而使用.NET則使用ADO.NET#65377;直接支持ADO.NET的僅有SQL Server和Access,如果使用非Microsoft的數(shù)據(jù)庫,則需要通過OLE DB連接#65377;
(2) 在商業(yè)邏輯層,J2EE使用EJB實(shí)現(xiàn),而.NET使用托管組件實(shí)現(xiàn)#65377;EJB是一個(gè)非常優(yōu)秀的標(biāo)準(zhǔn),全面支持事務(wù)處理#65380;對(duì)象完整性等技術(shù),而且可以使用數(shù)量龐大的中間件庫#65377;使用.NET的托管組件開發(fā),除了.NET Framework中提供的基礎(chǔ)類庫外,幾乎沒有更多的選擇余地,而且又由于.NET Framework中的很多組件對(duì)開發(fā)者而言都是一個(gè)黑盒子,只能使用而不能了解其具體工作過程,因此系統(tǒng)的健壯性受到制約#65377;
(3)使用J2EE可以運(yùn)行的操作系統(tǒng)有很多的選擇,無論是Windows還是免費(fèi)的Unix/linux或是專業(yè)的Solaris,都可以使用,而使用.NET則只能選用Windows平臺(tái)#65377;
(4)標(biāo)準(zhǔn)開放的J2EE平臺(tái)有著巨大的優(yōu)勢(shì),在可擴(kuò)展性和可移植性方面,無疑是占了上風(fēng)#65377;采用.NET平臺(tái)進(jìn)行開發(fā),從開發(fā)工具#65380;服務(wù)器產(chǎn)品到部署環(huán)境,都需要使用Microsoft的產(chǎn)品#65377;
(5)在部署方面,.Net平臺(tái)有著巨大的優(yōu)勢(shì),圖像化的工具和程序集使.NET應(yīng)用程序的部署工作簡(jiǎn)單了許多,而部署J2EE平臺(tái),配置Web服務(wù)器#65380;應(yīng)用服務(wù)器和數(shù)據(jù)庫卻需要很多的工作#65377;
(6)安全性分析#65377;J2EE和.NET都在程序的安全方面做了大量的工作#65377;二者在代碼安全#65380;安全策略#65380;安全配置#65380;信息保護(hù)#65380;用戶授權(quán)和認(rèn)證等方面都非常優(yōu)秀,但是,由于Windows的歷史比較悠久,了解微軟產(chǎn)品的人太多,幾乎所有的病毒以及大部分黑客的攻擊都是針對(duì)微軟平臺(tái)的,因此,.NET平臺(tái)更容易受到黑客的攻擊#65377;尤其是Microsoft的補(bǔ)丁經(jīng)常會(huì)比漏洞的出現(xiàn)慢一拍,一旦漏洞受到黑客的攻擊,后果會(huì)非常嚴(yán)重#65377;所以,一些客戶對(duì)微軟平臺(tái)的安全性存在疑問#65377;涉及高可靠性#65380;高安全性#65380;高訪問量的系統(tǒng),通常會(huì)謹(jǐn)慎考慮選用微軟的平臺(tái)#65377;
二#65380;J2EE與.NET的應(yīng)用趨勢(shì)分析
正因?yàn)橛辛薐2EE與.NET的平臺(tái)之爭(zhēng),才有了相關(guān)平臺(tái)技術(shù)的進(jìn)步#65377;雖然現(xiàn)在兩大陣營有點(diǎn)勢(shì)不兩立,但是最后很有可能以Web Service為基礎(chǔ)走向融合,Web Service(Web 服務(wù))是解決應(yīng)用程序之間相互通信的一項(xiàng)技術(shù),歷史和實(shí)踐都充分證明,Web Service 是計(jì)算機(jī)技術(shù)未來的一個(gè)發(fā)展趨勢(shì)[4]#65377;在Web Service 的基礎(chǔ)上,如果能夠?qū)崿F(xiàn)在一個(gè)平臺(tái)上與多種技術(shù)#65380;多種平臺(tái)#65380;多種格式實(shí)現(xiàn)全面(人員#65380;信息和流程)的互操作,通過其開放式架構(gòu)和平臺(tái)合作伙伴網(wǎng)絡(luò),能夠立即與第三方應(yīng)用集成,并且允許客戶更好地利用公司內(nèi)所有IT部門人員現(xiàn)有的技能,從而降低人才招聘#65380;留住及培訓(xùn)成本,那么這種融合必將為企業(yè)降低總體擁有成本#65377;筆者相信,這也必將是促成J2EE與.NET走向融合的動(dòng)力所在#65377;當(dāng)然,這種融合也是一個(gè)艱辛而漫長(zhǎng)的過程,需要業(yè)界付出巨大的努力#65377;
三#65380;結(jié) 論
通過以上分析,我們已經(jīng)清楚地知道了兩種主流平臺(tái)J2EE和.NET的相同點(diǎn)與不同之處#65377;對(duì)于軟件開發(fā)商來說,選擇決定著公司今后的命運(yùn)#65377;對(duì)于企業(yè)來說,選擇決定著企業(yè)未來的發(fā)展方向#65377;雖然,兩種開發(fā)平臺(tái)的選擇后果也許并沒有像市場(chǎng)炒作的那樣嚴(yán)重,但是,區(qū)別總是切實(shí)存在的,各種潛在的風(fēng)險(xiǎn)太多#65377;
如果企業(yè)過去使用的都是微軟的產(chǎn)品,大可以繼續(xù)使用,因?yàn)闊o須花費(fèi)太多學(xué)習(xí)時(shí)間#65377;不過,用戶要為微軟的頻繁升級(jí)作準(zhǔn)備#65377;一個(gè)IT項(xiàng)目的第一次投資成本可能比較低,但操作系統(tǒng)#65380;數(shù)據(jù)庫#65380;中間件等不斷升級(jí)#65380;打補(bǔ)丁的后續(xù)升級(jí)成本會(huì)很高#65377;此外,在系統(tǒng)壓力不大#65380;使用頻率不高的情況下,基于微軟平臺(tái)的維護(hù)成本可能比較低#65377;但如果業(yè)務(wù)迅速發(fā)展#65380;系統(tǒng)需要擴(kuò)展時(shí),系統(tǒng)的擴(kuò)展成本可能會(huì)突然高漲,而且多服務(wù)器的群集管理不是一般的信息管理人員能夠勝任的#65377;
如果企業(yè)使用的是多家公司的IT產(chǎn)品,還想在原有系統(tǒng)的基礎(chǔ)上進(jìn)行升級(jí),則只有選擇J2EE的產(chǎn)品,這就意味著企業(yè)要有一次大投入,而且選擇J2EE就意味著企業(yè)要擁有更多高水平的Java工作者,在系統(tǒng)部署方面也要付出巨大的努力#65377;
根據(jù)企業(yè)應(yīng)用軟件的實(shí)際需求以及各種市場(chǎng)因素,對(duì)應(yīng)用軟件開發(fā)平臺(tái)的選用可以基于以下原則做出#65377;
1. 在以下幾種情況下,宜采用J2EE平臺(tái)
(1)產(chǎn)品的用戶是大中型企業(yè),具有多種操作系統(tǒng)混合使用的特點(diǎn)#65377;為了在企業(yè)的兼并重組中使多系統(tǒng)的整合方便快捷,必須提供強(qiáng)大的異類應(yīng)用系統(tǒng)之間的整合能力#65377;
(2)軟件供應(yīng)商希望所開發(fā)產(chǎn)品的語言保持純潔性和一致性,而不是混合的多樣性和普遍性#65377;
(3)企業(yè)為了實(shí)現(xiàn)采購安全性和采購多樣性,不想長(zhǎng)期鎖定微軟產(chǎn)品,而且對(duì)微軟的長(zhǎng)期壟斷持懷疑態(tài)度#65377;
(4)企業(yè)具有足夠資源對(duì)相關(guān)員工進(jìn)行Java技術(shù)的培訓(xùn),并且樂觀認(rèn)定精通Java技術(shù)的開發(fā)人員將快速增長(zhǎng)#65377;
(5)開發(fā)商為了規(guī)避因運(yùn)行環(huán)境變更#65380;版本升級(jí)以及人員流失等風(fēng)險(xiǎn)#65377;
(6)對(duì)客戶端朝基于Web的“瘦客戶”方向發(fā)展持樂觀態(tài)度#65377;
2. 在以下幾種情況下,宜采用.NET開發(fā)平臺(tái)
(1)產(chǎn)品主要客戶群體是微軟用戶的中小企業(yè),客戶群體不具備高速成長(zhǎng)性,并且這種狀況在今后10年內(nèi)不會(huì)改變#65377;
(2)軟件供應(yīng)商擁有多種語言開發(fā)人員,缺乏充足的Java技術(shù)資源,又必須在短期內(nèi)推出產(chǎn)品#65377;
(3)對(duì)微軟的市場(chǎng)主導(dǎo)性持肯定態(tài)度#65377;
(4)在今后相當(dāng)長(zhǎng)的時(shí)間內(nèi)基于“胖客戶”的客戶端仍是十分重要的,并且緊密綁定微軟操作系統(tǒng)將給用戶提供Java客戶所不及的運(yùn)行性能#65377;
主要參考文獻(xiàn)
[1] Jim Gervang. Slicing through the. Net vs. J2EE Debate:[J]. Risk Insurance,November,2004.
[2] Sun Microsystems Inc. Web Services Performance Comparing JavaTM 2 Enterprise Edition(J2EETM platform) and. NET Framework[R]. June,2004.
[3] G Miller. The Web Services Debate:J2EE vs. NET[J]. Communications of the ACM,2003,46(6):64-67.
[4] Jongwook Woo. The Comparison of J2EE and .NET for e-Business[J]. Commuications of the Association of Information System,May,2003.