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