【第157期 October 5, 2010】
 

研發新視界

.NET框架 vs. J2EE … 如何選擇最適技術平台?

作者/王嘉寧

[發表日期:2010/9/24]


前言

.NET框架與J2EE的爭論就如同一場激烈的政治辯論,一方代表軟體開發者,另一方代表企業 IT。雙方各堅持自己的立場,傾向在多數情況下對自己領域較有利的那一個平台。從獨立軟體供應商的角度來說,此類爭論雖看似主觀,但此兩種技術的選擇卻是供應商在評估及銷售產品時的一個關鍵決定,尤其在客戶的軟硬體環境處於多重平台的情況下。

遇到這種情形,此選擇感覺上好比一場俄羅斯輪盤的賭注,雙方皆不選,則又帶來產品開發或需求滿足上的不便。本文將替讀者從業界的角度來介紹及分析.NET框架與J2EE這兩種技術平台的優缺點,希望藉此可有效的幫助讀者在挑選時做最佳的選擇。

.NET框架

.NET框架是一套由微軟繼1990年代的Windows DNA後獨立開發的旗艦產品。跟隨Java平台的腳步,.NET框架也是採用系統虛擬機的概念來切斷程式開發與作業系統環境之間的關聯。但與Java不同的一點是.NET平台允許開發團隊在產品開發時針對不同的產品部分採用不同的語言(C#、VB.NET、Visual C++、Python、…)進行開發,因而提升現有程式再用的可能及開發團隊在組織時的彈性。

.NET框架在許多方面的表現受人稱讚。多數專家同意微軟是桌面應用軟體的領導者,其銷售的視窗作業系統系列擁有功能豐富的圖形使用者介面,而.NET這個全方面的框架中包含各種有利於前端開發的工具,例如一個可讓開發者創作高級使用者介面的整合開發環境。因與視窗作業系統緊密的整合於一,.NET框架提供開發者在使用者互動方面廣大的選擇空間。另外尚有一項優點值得一提:成本。因.NET平台本身已包含應用服務器,軟體供應商不需另向第三廠商額外購買並尋求技術支援,因此可同時降低產品及開發成本。

至今對於.NET框架所提出的爭議主要有以下幾項:
1.無法於非視窗作業系統下運作
2.強制遵循微軟的平台開發標準並依賴它所提供的程式介面與組件
3..NET平台之可擴展性和穩定性

J2EE

相較於.NET框架,J2EE是一組由昇陽電腦所推動,與多家大型資訊廠商合作,並透過Java Community Process(JCP)的提議、修正、及審查而公佈的業界標準。為什麼它是一組標準而不是一套產品?實際原因是JCP不願意重複微軟的作為,讓任何一家廠商透過J2EE“產品”成為具有壟斷能力的市場獨占者。另一原因則是JCP希望使用者在挑選J2EE產品時能夠擁有多種選擇,並希望透過不同J2EE平台供應商的互相競爭來強化J2EE產品的品質。目前提供J2EE平台產品的主要廠商包括BEA Systems(2008年被甲骨文收購)、IBM、甲骨文、Apache軟體基金會、JBoss(2006年被Red Hat收購)等。

.NET框架的缺點往往正是J2EE的優點。J2EE平台可在任何有Java支援的作業系統上運作,包含微軟視窗系列、Linux系列、及多種UNIX版本。在可擴展性方面,J2EE已在應付具有大規模交易量之應用程式的能力上獲得多數廠商的肯定。它所包含的許多專為商業應用伺服器設計之功能更是長久以來J2EE一直受到大型企業青睞的主要原因之一。這些功能包括連線管理、故障轉移、負載平衡等。絕大多數在過去十年中開發的高交易量資料轉換(ETL)或商業應用整合(EAI)產品皆是以J2EE為基礎架構所建立,供應商包含IBM、惠普、及甲骨文。

就缺點而言,架構上J2EE較.NET框架要來的複雜,圖形使用者介面的支援度也較有限。另一點值得注意的是,因市場上有多家廠商提供完整性J2EE系統實作或J2EE的子系統實作,各廠商在J2EE標準以外多少都有在自家產品內加入自訂的功能。這些自訂功能往往無法與其他廠商的產品通用,以致系統相容性對J2EE來說是一項重大考驗。

.NET框架 vs. J2EE-企業買主角度

在購買軟體前,幾乎所有企業買主皆會針對所考慮之產品做詳細研究。通常五項議題構成此研究的重點:部署環境、可擴展性、可擴增性、技術支援需求之多寡、及整體擁有成本。

一、部署環境

這部分通常取決於企業內部現有技能及企業的規模。若某中小企業之現有IT資源偏重於微軟產品,該企業想必不願意花費大量時間與資金來進行一套UNIX系統及非SQL Server資料庫的部署及管理。對大多數中小企業來說,技術人力既有限且代表一份不小的負擔。即使培訓預算足夠,企業的現有軟硬體資源往往無法同時應付多個平台的管理。對大型企業而言,多種不同系統及平台的投資的確因需求而並存,但企業規範可能限制所有系統需部署於單一指標環境。若此環境是基於微軟視窗,則無論.NET框架或J2EE皆可考慮,但若環境是基於UNIX或Linux,則系統架構非J2EE莫屬。

二、可擴展性

一家企業是否能夠有效經營它的業務,其關鍵之一在於所採用的軟體系統是否可輕易地擴展並同時維持效能上的水平。大部分商業應用系統之生命期大約為八至十年。一套系統除了在最初上線時需符合當時之商業需求外,在生命期間內能夠應付各種商業上的變革也極為重要。倘若一家企業所採用的軟硬體設備可同時支援50位使用者但無法有效處理500位,該企業在擴增時將面臨嚴重系統減緩,甚至造成癱瘓,而招致無可避免的系統更換及其所帶來的人力與費用支出。研究指出,.NET框架所提供的方案最適用於用戶群低於100人的商業系統;當用戶群超過300人時,J2EE被視為唯一可行的選擇。在100至300人的用戶群的情況下則視其他需求作最終決定。

三、可擴增性

隨著企業IT資源不斷複雜化,應用系統與其他系統相互整合的能力也越受到重視。過去的系統大部分是以單一作業環境為前題而開發完成。如今此種做法很可能導致系統被邊緣化。今日大型系統開發成本中,純整合部分實際上佔相當高的比例,目的就是為了能夠加強系統的可擴增性。而可擴增性除了耗費成本,對效能也有絕對性的影響。系統若可以服務導向架構模式設計或提供Web服務,系統的複雜性及整合相關的成本則可大幅度降低。.NET框架在Web服務支援方面相當優異;採用SOAP協定來建立它的通訊層核心。J2EE標準是在Web服務崛起之前擬定的,因此在這方面較處於弱勢。但市場之後有陸續推出許多Web服務相關的工具及程式,縮短.NET框架與J2EE之間的差距。當今雙方均可完善地支援服務導向架構和Web服務,有效應對可擴增性之議題。

四、技術支援及成本

對企業IT成本影響最大的變數無非是技術支援的來源。若技術支援來自於軟體供應商,成本應不至於過高。反言之,若企業本身需自備技術支援,人力資源便成為考量的因素之一。大致上來說,同等級的.NET及J2EE之人資成本差別不大,J2EE的稍微高一些。至於軟硬體設備成本,兩者也蠻接近,關鍵在於J2EE產品所採用的應用服務器。若應用服務器為免費軟體版本,如JBoss,則J2EE方案的成本將大幅降低。若所採用的為非免費軟體版,如BEA銷售的WebLogic,則.NET方案的成本相對較低。

.NET框架 vs. J2EE-軟體供應商角度

將自我研發產品之效能及市場銷售性最優化應是所有軟體供應商努力的目標。要有效實現它,關鍵在於以下幾點:產品於目標市場及軟體業之接受度、可擴展性與效能之平衡點、開發及維護之難易度、穩定性、及成本。

一、接受度

一家軟體供應商所面對的客戶可包含大企業(總員工數逾1000人)至小公司(低於100人)。小公司較傾向於微軟出版的作業系統,而大企業主要支持UNIX平台。無論企業大小,許多廠商有針對自有商業平台的營運上制定規範。在目標市場接受度如此重要的尺度上,J2EE,藉由它跨平台的特色,顯然贏得多數廠商的喜愛。至於軟體產業本身,由於.NET框架與J2EE兩者皆獲得可觀的產業贊助,支持度上雙方看似各無明顯優勢。

二、可擴展性與效能

如之前所提及,目前一般商業系統之生命期約為八至十年。在此期間中,客戶難免會遇到業務上的擴增,因此系統對使用量增加的適應度成為另一項關鍵性議題。對此,軟體供應商必然希望它所選擇的平台能確保在客戶使用量變動的情況下,效能方面依然能維持可接受的程度。因J2EE是目前唯一能應付高使用量的平台,在需同時滿足可擴展性與效能的前提下,J2EE必然是軟體供應商的最佳選擇。

三、開發難易度及穩定性

目前市場上針對.NET框架及J2EE兩者皆提供各種多功能的整合開發環境,協助開發團隊迅速完成產品製作。多數廠商發現J2EE在後端開發上較為完整,並允許開發者直接接觸或調整較多平台底層的資源與設定。.NET框架則是提供完整且易用的開發環境來滿足開發者的所有需求,避免開發者尋求任何第三廠商的工具。但有些廠商反應.NET在開發複雜的應用系統時欠缺穩定性。此外,許多廠商也認為.NET系統較容易被病毒影響。

四、成本

無論是.NET框架或J2EE,雙方在管理上都需要龐大的費用。兩者皆是已成熟的技術,因此在技術支援上皆擁有充分的專業人才。如上段技術支援及成本分析內提及,.NET的人資成本較J2EE來的低,但J2EE因具有較長的歷史,以致它的人才可得性相對要高一些。

總結

追根究底,.NET框架與J2EE之間的抉擇取決於幾個重點:企業大小、系統環境、業務性質、支援來源、IT預算及供應商現有人力資源。若客戶是大型企業或它的系統環境是非微軟平台,J2EE應是唯一的選擇。使用量高的商業系統也應採用J2EE來開發。相對的,.NET框架較適用於使用微軟作業系統的中小企業。從人資角度來看,若客戶具有自備的人力支援,則兩者間的選擇需考慮到該團隊對雙方的技術能力程度。若支援來源是軟體供應商,則重點在於廠商本身在哪方面具有較強的技術能力。最後,J2EE較.NET框架在成本掌控上更有彈性,主要在於提供它所有子系統實作的廠商包含免費軟體供應商及非免費軟體供應商,而微軟是.NET平台唯一的供應商。

參考資料

http://advandergraaff.com/Ad%20van%20der%20Graaff%20-%20.NET%20vs%20J2EE%20A%20comparative%20study%20from%20a%20business%20perspective.pdf

http://www-01.ibm.com/software/smb/na/J2EE_vs_NET_History_and_Comparison.pdf

http://developerandprogrammer.com/blog/?p=10

http://www.computerworld.com/s/article/71221/.Net_vs._Java