Java傳說之風雲再起
—————————獻給所有追求進步、熱愛和平、熱愛生命的朋友
胡德平(中國Java聯盟/www.javaunion.org)
一、Java語言的發展歷程
Java語言(簡稱Java)的誕生對IT產業帶來了一次變革,從某些意義上講對人們的日常生活也產生了深遠的影響。Java作為一種類C/C++,但其平台無關性和與互聯網發展緊密結合,預計未來必定成為互聯網和計算機應用的主流。Java當之無愧地被紐約時報評為1995年的十大科技成果之一,Java將作為一項重大發明載入科技史冊! 微軟總裁比爾.蓋茨曾在觀察了一段時間後,十分慚愧地說:“Java是長時間以來最卓越的程序設計語言”,並確定微軟整個軟件開發的戰略從PC單機時代向著以網絡為中心的計算時代轉移,而購買Java則是他的重大戰略決策的實施部署。當然微軟與SUN也曾為純Java對峙法庭,微軟必將直接或間接將Java技術融入到其產品體系中。SUN Microsoft公司的總裁Scott McNealy認為Java為Internet 和WWW開辟了一個嶄新的時代。
環球信息網WWW的創始人Berners-Lee說:計算機事業發展的下一個浪潮就是Java,並且將很快發生。所以,使用Java已成大勢所趨!
Microsoft和IBM兩大公司都在Internet上銷售用Java編寫的軟件,IBM著名Java開發集成環境Visual Age For Java、網站集成平台Webspere,Microsoft的VJ++都是目前主要常見的Java開發環境或產品。
另外,Apple、HP、IBM、Microsoft、Novell、SGI、SCO、Tandem等公司均在各自開發的操作系統中加入了Java開發運行環境,而負責開發並推廣Java技術的Javasoft公司(這是SUN下屬的一個子公司),通過頒發許可證的辦法來允許各家公司把Java虛擬機和Java的Applets類庫嵌入他們開發的操作系統, 這樣各類開發人員就能更容易地選擇多種平台來使用Java 語言編程, 不同的用戶也就可以脫離Web浏覽器來運行Java應用程序,這無疑是很受廣大用戶的歡迎的, 也為Java語言的應用開拓了極為廣闊的前景。
1996年6月7日,由SUN公司和台灣經濟事務部信息發展局、 台灣信息技術研究所等單位牽頭,成立了一個“台灣Java聯盟”,有多個台灣著名計算機公司參與,並在台北建立 “Java開發中心”,在新竹建立 “Java語言實驗室”,以掀起台灣開發與應用Java語言的熱潮。香港則在1996年4月就舉行了全島的Java杯比賽, 在計算機界掀起了學習Java的熱潮(尤其是在大學生中,出現了一批Java迷)。1996至1998年,SUN公司與國內清華大學、北京大學的著名高校合作,成立10個“Java教育中心”;與中軟、郵電部等機構合作成立培訓中心、開發中心;在北京、天津和上海成立研究開發基地。每年一度的JavaOne大會幾乎都會推出讓Java更受人歡迎的新技術,曾經有人預言:Java將是網絡上的“世界語”,將會被未來所證實。
1998年,由於Java在安全、性能等方面到了一個關鍵階段,甚至Java被列入了世紀末十大必然死亡的技術之一,十大科技成果被預言必將死亡實在是幽了一個默。1998至今,隨著Java2一系列新技術如JAVA2D、JAVA3D、 SWING、 JAVA SOUND、 EJB、 SERVLET、 JSP、 CORBA、XML、JNDI等等的引入以及JVM自身的安全策略完善、效率提高,新一輪Java熱潮再次被掀起。目前,國內電子商務、金融、證券、郵電、電信等行業的大部分系統幾乎都正在或者准備采用部分Java技術來實現。此外國內也出現了致力於Java技術推廣和開發的非盈利組織中國“Java陣線聯盟”(javaunion.org)以及一批作為該組織成員的個人Java技術網站,預計一兩年內Java應用將被國內廣大行業用戶所接受,Java技術水平也將逐步與世界同步。
二、Java語言的特點
Java語言具有能獨立於平台而運行、面向對象、可對動態畫面進行設計與操作、堅固性等特點,又具有多線程、內置校驗器用來防止病毒入侵等功能,所以用來在Internet上研制與開發軟件時,特別受到用戶的歡迎。
Java語言的有點主要表現在:簡單、面向對象、自動的內存管理、分布計算、穩定、安全、解釋執行、結構中立、平滑移植、多線程、以及異常處理等方面。
1、 簡單
由於Java的結構類似於C和C++,所以一般的熟悉C與C++語言的編程人員稍加學習就不難掌握Java的編程技術了。Java所具有的自動內存管理機制也大大簡化了Java程序設計開發。
2、 面向對象
簡單的說,面向對象設計是一種以數據(對象)以及其接口為重心的程序設計技術,面向對象的設計可以說是定義程序模塊如何“即插即用”的機制。Java的面向對象機制實際上可以看作是C++面向對象機制的延伸。Java提供了簡單的類機制和動態的構架模型,對象中封裝了它的狀態變量和方法(函數、過程),實現了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或者重新定義父類或者超類所提供的過程,從而實現代碼的復用。
3、 自動內存管理
Java的自動無用內存回收集(auto garbage collectino)實現了內存的自動管理,因此簡化了Java程序開發的工作,早期的gc(garbage collectino)對系統資源搶占太多而影響整個系統的運行,Java2對gc進行的改良使Java的效率有了很大提高。Gc的工作機制是周期性的自動回收無用存儲單元。Java的自動內存回收機制簡化程序開發的同時,提高了程序的穩定性和可靠性。
4、 分布計算
Java為程序開發提供了java.net包,該包提供了一組使程序開發者可以輕易實現基於TCP/IP的分布式應用系統。此外,Java還提供了專門針對互聯網應用的類庫,如URL、Java mail等等。
5、 穩定性
人們最常見的應用程序錯誤就是“非法訪問xxx內存”,其實質是程序指針使用出錯。Java擁有一種指針(pointer)模型,能夠排除發生內存被覆蓋和毀損數據的可能性。Java不采用指針算術法,而是提供真正的數組(Array),運行程序下標檢查;另外,它也不會發生有對象類型轉換將一個任意數轉換成指針的情形。Java的自動內存管理在減少編程工作的同時,大大減少了運行態錯誤。
6、 安全性
Java的設計目的是提供一個用於網絡/分布式的計算環境。因此,Java強調安全性,如確保無病毒、小應用程序運行安全控制等等。Java的驗證技術是以公鑰(public-key)加密算法為基礎,而且從環境變量、類加載器、文件系統、網絡資源和名字空間等方面實施安全策略。
7、 解釋執行
Java解釋器(interpreter)可以直接在任何已移植的解釋器的機器上解釋、執行Java字節代碼,不需重新編譯。當然,其版本向上兼容,因此如果是高版本環境下編譯的Java字節嗎到底版本環境下運行也許會有部分問題。
8、 跨異構環境
Java是網絡空間的“世界語”,編譯後的Java字節碼是一種“結構中立性(architecture neutral)的目標文件格式,可以在所有提供Java虛擬機(JVM)的多種不同主機、不同處理器上運行。
9、 平滑移植
“write once,run every where!”也許是Java最誘人的特點。用Java開發而成的系統其移植工作幾乎為零,一般情況下只需對配置文件、批處理文件作相應修改即可實現平滑移植。
10、 多線程
Java的多線程(multithreading)機制使程序可以並行運行。Java還有一組同步化基本單元,他們是以廣泛使用的C.A.R.Hoare監視器與條件變量圖為基礎的。同步機制保證了對共享數據的正確操作。多線程使程序設計者可以用不同的線程分別實現各種不同的行為,而不需要采用全局的事件循環機制,因此,使用Java語言可以非常輕松地實現網絡上的實時交互行為。
11、 異常處理
C語言程序員大都有使用goto語句來做條件跳轉,Java編程中不支持goto語句。Java采用異常模型使程序的主流邏輯變得更加清晰明了,並且能夠簡化錯誤處理工作。
12、 可擴充
Java目前發布的j2EE標准主要為采用Java技術為企業提供全面解決方案提供了一個技術規范框架,規劃了一個利用現有和未來各種java技術整合解決企業應用遠景藍圖。
三、Java語言對軟件開發技術的影響
曾有人預言:“Java語言的出現,將會引起一場軟件革命”,這是因為Java語言能在執行碼(二進制碼)上兼容,這樣以前所開發的軟件就能運行在不同的機器上,只要所用的機器能提供Java語言解釋器即可。時至今日,Java的優勢已經不再僅限於跨平台和動態頁面顯示,更多的優勢逐步在支持CORBA、WEB服務器後端處理以及應用整合等方面的到體現。
Java語言對現在以及未來軟件工程和軟件發展可能產生影響,可以從以下幾個方面分析:
1. 軟件工程
Java適用於WEB的許多特征比如平滑移植、安全、健壯和可擴展等為面向對象軟件工程設計提供了實現工具和想向空間。遵循面向對象思想,軟件生命周期的各個部分都將從面向對象的角度出發實現。比如用戶需求分析將被劃分成具有不同狀態(數據)和行為的模塊,不同模塊之間的聯系通過消息實現等等。
2.軟件的開發方法
由於Java語言的面向目標的特性,越來越多的人在用O-O開發時都在選擇使用Java技術與方法來開發,這與Java的面向對象特性、模塊化特性、安全性以及適應IT技術發展密不可分。
3.WEB技術
Java提供的CGI、ASP替代方法servlet/jsp以及EJB都是與互聯網發展需求相呼應的,由此可見Java在未來必然緊跟互聯網發展趨勢,采用Java解決企業基於WEB的應用是明智選擇。
4.分布式計算
Java對CORBA、RMI(遠程方法調用)、EJB、XML和網絡處理的支持和應用,將使未來企業分布計算向其傾斜。
5.圖形處理與多媒體效果
Java2以及以後版本提供了Swing、2D、3D、Sound等圖形、圖象和多媒體支持類庫,彌補了早期Java版本在此方面的不足。Java的媒體處理能力使程序開發在的動畫效果遠比GUI技術更加逼真,尤其是利用WWW提供的巨大動畫資源空間,可以共享全世界的動態畫面的資源。
6. 產品開發
目前Java產品主要有基於WEB的實時信息發布系