技術體系的選擇之Java篇

    經常有朋友對幾種開發語言進行爭論,有的說Java好,有的說.Net好,還有的說Php好,最後往往是變成了互相攻擊,不歡而散。關於開發語言之爭本質 上是技術體系之爭,開發語言也不過是某種技術體系裏構建應用的工具。實際上,對於一個問題往往有多種多樣的解決方案,可能每一種技術體系都能最終實現,但 “能不能”跟“好不好”是兩回事,這裏面有個性價比的問題。就象我們打蚊子一樣,我們可以用蒼蠅拍去拍,也可以用大炮去轟,最後都能把蚊子給打死。大炮威 力無比,無所不能,殺傷力極大,但對於打蚊子而言,還真不如蒼蠅拍好用。採用重量級的的Java技術去做Web2.0的網站,就跟大炮轟蚊子的效果差不 多。當然,反過來,也有的時候會出現“小馬拉大車,瘦驢拉硬屎”的情況,比如用Php去開發一個銀行結算系統,肯定也能做出來,速度倒是刷刷的,但一種弱 類型的語言可能在運行時充滿了變數,又有哪家銀行敢冒這樣的風險,他們寧可選用比較成熟的Java技術解決方案,速度雖慢,但用着心裏踏實。
    那麼我們到底應該選擇什麼樣的技術體系呢?技術體系的選擇,對於一個IT公司而言,主要取決於它的商業目標,反過來說,商業目標需要一個合適的技術體系去 推動。比如,公司是做電信項目系統集成的,那就基本確定以J2EE平臺技術爲主了;如果公司準備運營Web2.0網站,那麼LAMP就是最好的選擇,以後 開發的語言就是3P(Php/Perl/Python)了。一個IT公司只有選擇了合適的技術體系,才能更好更快地實現公司的商業目標。對於個人而言,技 術體系的選擇,可能會在很長時間內,決定了你的職業發展目標,比如以後你是做網站還是企業應用,你是做產品還是做項目。
    技術體系的選擇和確定一般是由CTO或者首架依照公司的商業目標確定,也有時候取決於客戶或者行業的要求。當然,如果只以系統實現作爲目的的話,架構師就 可以參與實現技術的確定了,一旦選定了某種技術體系的話,所有的開發活動都被限定這種技術範圍之內。作爲架構師而言,必須具備較爲寬廣的知識體系,技術體 系的基本知識便是其中之一。
    以下,我將對Java技術體系、.Net技術體系和LAMP技術體系逐一剖析,重點分析這幾種技術體系的技術特點和適應領域,技術特點是決定適應領域的重要因素。
1. Sun ONE體系架構
    Sun ONE(Sun Open Net Environment)是Sun公司爲了對抗微軟的.NET體系架構而推出的,以Java語言爲核心,並基於一系列開放和流行的標準、技術及協議的體系 架構,Sun ONE包含了J2SE、J2EE和J2ME 3個平臺,基本覆蓋了應用開發的全部領域。
J2SE(Java 2 Platform, Standard Edition)
    Java 2平臺標準版,適用於桌面系統應用程序的開發。
J2EE(Java 2 Platform, Enterprise Edition)
    Java 2平臺企業版。利用J2EE平臺可以簡化企業解決方案的開發、部署和管理。J2EE主要用於構建企業級的服務器應用和分佈式的網絡程序的開發。
J2ME(Java 2 Platform, Micro Edition)
    Java 2平臺微型版。Sun公司將J2ME定義爲“一種以廣泛的消費性產品爲目標、高度優化的Java運行環境”。J2ME平臺廣泛用於嵌入式的消費型產品中,如手機,掌上電腦,智能卡,機頂盒,汽車導航系統或其他無線設備。
    我們中的多數人從事的是基於J2EE平臺上企業應用的開發,以下重點講述的就是J2EE開發平臺和開發技術。

2. Java技術特點
2.1 安全性

    Java平臺從誕生時就充分考慮了安全性的問題。Java平臺提供了基於原始安全模式的沙箱模型。沙箱模型的實質在於信任本地代碼,使其可以完全訪問重要 的系統資源,而對於下載的遠程代碼則不被信任,因此只能訪問沙箱內提供的有限資源。對於從開放網絡中得到的不被信任的代碼,該模型提供了一個非常嚴格的使 用環境。Java引入了認證器組件,它在.class文件運行前完成該文件的安全檢查,確保Java字節碼符合Java虛擬機規範。Java平臺通過使用 認證器查看類文件的句法和詞法的正確性,檢查版本及API符合性等,以保證不突破Java語言的任何限制,可以被安全執行。這一特點.Net技術體系也都 具備,LAMP雖然不具備這麼完善的安全機制,但目前也未發現重大的安全漏洞。
2.2 健壯性
    Java語言是一種強類型的靜態語言,運行前必須進行編譯。它要求變量和對象的類型在使用前必須聲明,保證語法沒有二義性,所以生產出來的代碼的在可讀 性、可靠性和可預測性方面比較好,儘量地在運行前摒除系統中潛在的不穩定因素,極大地防止了運行期間出現錯誤。另外,在運行期間的容錯機制,也保證了系統 運行期間,不會因爲局部問題引發整體的坍塌。象LAMP技術體系中的Php這種弱類型的動態語言,比較缺乏企業級應用的所看重的要素,導致最終不能走上企 業級大型系統開發的原因之一。這一特點.Net技術體系的開發語言也都具備。
2.3 跨平臺性
    Java應用具有平臺可移植的特性,既可以運行在Unix/Linux平臺上,又可以運行在Windows平臺上。操作系統是任何應用的最基礎的支撐環 境,Java應用能夠運行在Unix/Linux平臺上這一點非常重要,幾乎決定了它的應用領域。可以這麼說,大多數的系統安全問題都基本上取決於操作系 統的安全性。Unix一直被認爲是最安全的操作系統,主要是因爲它堅持開放的策略,可以接受更多技術人員的審查和測試,而且具有非常悠久的歷史。同 時,Unix被認爲是穩定高效的操作系統,在安全性、穩定性、高效性等幾個方面要明顯高於Windows Server的。Java應用可以運行在Unix平臺上,直接繼承了這些優勢。這一點對於只能運行在Windows平臺上的.Net要遜色不少,至於像開 源的Mono能夠實現.Net在Unix/Linux上的跨平臺運行,只能具有象徵意義,並沒有經過大規模的實踐。
2.4 面向對象
    JAVA語言是徹底的面向對象的語言,軟件工程的一些最新的思想和理論,大多數都是在Java平臺和開發過程中最先實踐的,這對於解決大型系統的分析、設計和編程提供了很好的語言級別的支撐。
2.5 其它特性
    Java語言具有平臺無關性,它對每種計算機都一樣。比如,簡單的類型都是不變的:整數總是32位,長整數總是64位。令人奇怪的是,諸如C及C++等時 髦的編程語言卻不是這樣。由於這些語言定義如此自由,每種編譯器及開發環境便各有不同了,這使程序的移植成爲討厭的問題。Java程序的移植卻很容易,而 且不需要進行重新編譯。Java語言相對於傳統語言作了一些簡化,去除了諸如預處理、指針運算、結構、聯合以及運算符過載等語法,還去掉了容易面向對象中 的造成混淆的多重繼承等等。當然,這些特性與.Net開發語言C#以及LAMP中的PHP相比沒有特別明顯的優勢。

3. Java技術適合的領域
    基於J2EE平臺的開發,是比較適合於工業級別的應用開發,象金融、保險、電信、ERP以及電子商務等領域,而且大多屬於基本上屬於大中型級別的業務系統。
爲什麼Java技術適合於這樣的領域,而不是.Net或者LAMP呢?我總結了以下幾個方面的因素:
1)廠商支持
    Java技術適應領域的業務系統的特點:業務邏輯比較複雜,要求系統具有高可靠性、安全性和容錯性來保證交易事務的成功。對於這類行業來講,選擇技術路線 的時候一般採用較爲保守的策略,更傾向於選擇成熟的方案、產品和技術提供商,而不僅僅是選擇某種語言、某種技術、或者是某種應用服務器的這樣很局部的問 題,他們往往需要的是一整套的解決方案。大型軟件服務提供商,象IBM、SAP、ORACLE等等,他們售賣的正是這樣整套的解決方案,從行業諮詢到流程 優化,從數據庫到應用服務器,從開發環境到系統部署,從售前諮詢到售後服務等各個環節都非常成熟,而且有很多成功的本行業的實施案例。這些軟件服務提供商 的主流產品和對外提供的平臺多數是基於J2EE平臺的,幾乎沒有基於.Net技術體系的產品,LAMP就更不用提了。
2)操作系統
    從操作系統的角度來講,Unix的誕生要遠早於Windows操作系統,Windows Server更晚,上述業務領域的多數應用,此前就一直運行在Unix操作系統上。因此,他們基於運營連續性考慮,選擇Unix/Linux操作系統肯定 是一種比較穩妥的方案。又有哪個這類企業把以前的系統推翻,全部採用Windows平臺,其中包含的成本和風險,恐怕沒有哪個企業敢去承擔,而且也確實沒 有理由去進行更換。Java應用不僅可以在Unix/Linux上運行,而且在Unix/Linux的表現的確不錯。另外,我們上面也提到了Unix /Linux操作系統的安全性、穩定性和高效性明顯高於Windows,使得能夠運行在Unix/Linux上的Java應用成爲了最好的選擇。
3)技術特點
    Java平臺的安全性、健壯性、穩定性以及容錯性是企業級應用開發必不可少的前提。Java語言的的面向對象特性有助於實現系統的可維護性和可複用性設計,它的簡單性又能保證開發的效率和系統的健壯性,這些是C,C++等語言無法比擬的。
4)開源產品支持
    軟件工程的一些最新的思想和理論,大多數都是在Java平臺和開發過程中最先實踐的。基於JAVA的成熟的開源框架也極好地支持了大型系統的開發,比如常 用的MVC框架Struts、ORM框架Hibernate、IOC框架Spring。從系統分析、設計、編碼、測試各個環節都有非常成熟的開源框架和工 具,而且已經被成功地應用於系統開發實踐中。類似這些產品和工具在.Net技術體系和LAMP技術體系中尚未形成大規模的實踐。

4. 基於Java技術的Web開發

本文出自 “網站架構之家” 博客,請務必保留此出處http://wangzebin.blog.51cto.com/653300/140687

發佈了11 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章