Java傳說之風(fēng)云再起
—————————獻(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ù)計(jì)未來必定成為互聯(lián)網(wǎng)和計(jì)算機(jī)應(yīng)用的主流。Java當(dāng)之無愧地被紐約時報(bào)評為1995年的十大科技成果之一,Java將作為一項(xiàng)重大發(fā)明載入科技史冊! 微軟總裁比爾.蓋茨曾在觀察了一段時間后,十分慚愧地說:“Java是長時間以來最卓越的程序設(shè)計(jì)語言”,并確定微軟整個軟件開發(fā)的戰(zhàn)略從PC單機(jī)時代向著以網(wǎng)絡(luò)為中心的計(jì)算時代轉(zhuǎn)移,而購買Java則是他的重大戰(zhàn)略決策的實(shí)施部署。當(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說:計(jì)算機(jī)事業(yè)發(fā)展的下一個浪潮是Java,并且將很快發(fā)生。所以,使用Java已成大勢所趨!
Microsoft和IBM兩大公司都在Internet上銷售用Java編寫的軟件,IBMJava開發(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ā)運(yùn)行環(huán)境,而負(fù)責(zé)開發(fā)并推廣Java技術(shù)的Javasoft公司(這是SUN下屬的一個子公司),通過頒發(fā)許可證的辦法來允許各家公司把Java虛擬機(jī)和Java的Applets類庫嵌入他們開發(fā)的操作系統(tǒng), 這樣各類開發(fā)人員能更容易地選擇多種平臺來使用Java 語言編程, 不同的用戶也可以脫離Web瀏覽器來運(yùn)行Java應(yīng)用程序,這無疑是很受廣大用戶的歡迎的, 也為Java語言的應(yīng)用開拓了極為廣闊的前景。
1996年6月7日,由SUN公司和臺灣經(jīng)濟(jì)事務(wù)部信息發(fā)展局、 臺灣信息技術(shù)研究所等單位牽頭,成立了一個“臺灣Java聯(lián)盟”,有多個臺灣計(jì)算機(jī)公司參與,并在臺北建立 “Java開發(fā)中心”,在新竹建立 “Java語言實(shí)驗(yàn)室”,以掀起臺灣開發(fā)與應(yīng)用Java語言的熱潮。香港則在1996年4月舉行了全島的Java杯比賽, 在計(jì)算機(jī)界掀起了學(xué)習(xí)Java的熱潮(尤其是在大學(xué)生中,出現(xiàn)了一批Java迷)。1996至1998年,SUN公司與國內(nèi)清華大學(xué)、北京大學(xué)的高校合作,成立10個“Java教育中心”;與中軟、郵電部等機(jī)構(gòu)合作成立培訓(xùn)中心、開發(fā)中心;在北京、天津和上海成立研究開發(fā)基地。每年一度的JavaOne大會幾乎都會推出讓Java更受人歡迎的新技術(shù),曾經(jīng)有人預(yù)言:Java將是網(wǎng)絡(luò)上的“世界語”,將會被未來所證實(shí)。
1998年,由于Java在、性能等方面到了一個關(guān)鍵階段,甚至Java被列入了世紀(jì)末十大必然死亡的技術(shù)之一,十大科技成果被預(yù)言必將死亡實(shí)在是幽了一個默。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ù)來實(shí)現(xiàn)。此外國內(nèi)也出現(xiàn)了致力于Java技術(shù)推廣和開發(fā)的非盈利組織中國“Java陣線聯(lián)盟”(javaunion.org)以及一批作為該組織成員的個人Java技術(shù)網(wǎng)站,預(yù)計(jì)一兩年內(nèi)Java應(yīng)用將被國內(nèi)廣大行業(yè)用戶所接受,Java技術(shù)水平也將逐步與世界同步。
二、Java語言的特點(diǎn)
Java語言具有能獨(dú)立于平臺而運(yùn)行、面向?qū)ο、可對動態(tài)畫面進(jìn)行設(shè)計(jì)與操作、堅(jiān)固性等特點(diǎn),又具有多線程、內(nèi)置校驗(yàn)器用來防止病毒入侵等功能,所以用來在Internet上研制與開發(fā)軟件時,特別受到用戶的歡迎。
Java語言的有點(diǎn)主要表現(xiàn)在:簡單、面向?qū)ο蟆⒆詣拥膬?nèi)存管理、分布計(jì)算、穩(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)存管理機(jī)制也大大簡化了Java程序設(shè)計(jì)開發(fā)。
2、 面向?qū)ο蠛唵蔚恼f,面向?qū)ο笤O(shè)計(jì)是一種以數(shù)據(jù)(對象)以及其接口為重心的程序設(shè)計(jì)技術(shù),面向?qū)ο蟮脑O(shè)計(jì)可以說是定義程序模塊如何“即插即用”的機(jī)制。Java的面向?qū)ο髾C(jī)制實(shí)際上可以看作是C++面向?qū)ο髾C(jī)制的延伸。Java提供了簡單的類機(jī)制和動態(tài)的構(gòu)架模型,對象中封裝了它的狀態(tài)變量和方法(函數(shù)、過程),實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機(jī)制,子類可以使用或者重新定義父類或者超類所提供的過程,從而實(shí)現(xiàn)代碼的復(fù)用。
3、 自動內(nèi)存管理Java的自動無用內(nèi)存回收集(auto garbage collectino)實(shí)現(xiàn)了內(nèi)存的自動管理,因此簡化了Java程序開發(fā)的工作,早期的gc(garbage collectino)對系統(tǒng)資源搶占太多而影響整個系統(tǒng)的運(yùn)行,Java2對gc進(jìn)行的改良使Java的效率有了很大提高。Gc的工作機(jī)制是周期性的自動回收無用存儲單元。Java的自動內(nèi)存回收機(jī)制簡化程序開發(fā)的同時,提高了程序的穩(wěn)定性和可靠性。
4、 分布計(jì)算Java為程序開發(fā)提供了java.net包,該包提供了一組使程序開發(fā)者可以輕易實(shí)現(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)存”,其實(shí)質(zhì)是程序指針使用出錯。Java擁有一種指針(pointer)模型,能夠排除發(fā)生內(nèi)存被覆蓋和毀損數(shù)據(jù)的可能性。Java不采用指針?biāo)阈g(shù)法,而是提供真正的數(shù)組(Array),運(yùn)行程序下標(biāo)檢查;另外,它也不會發(fā)生有對象類型轉(zhuǎn)換將一個任意數(shù)轉(zhuǎn)換成指針的情形。Java的自動內(nèi)存管理在減少編程工作的同時,大大減少了運(yùn)行態(tài)錯誤。
6、 性Java的設(shè)計(jì)目的是提供一個用于網(wǎng)絡(luò)/分布式的計(jì)算環(huán)境。因此,Java強(qiáng)調(diào)性,如確保無病毒、小應(yīng)用程序運(yùn)行控制等等。Java的驗(yàn)證技術(shù)是以公鑰(public-key)加密算法為基礎(chǔ),而且從環(huán)境變量、類加載器、文件系統(tǒng)、網(wǎng)絡(luò)資源和名字空間等方面實(shí)施策略。
7、 解釋執(zhí)行Java解釋器(interpreter)可以直接在任何已移植的解釋器的機(jī)器上解釋、執(zhí)行Java字節(jié)代碼,不需重新編譯。當(dāng)然,其版本向上兼容,因此如果是高版本環(huán)境下編譯的Java字節(jié)嗎到底版本環(huán)境下運(yùn)行也許會有部分問題。
8、 跨異構(gòu)環(huán)境Java是網(wǎng)絡(luò)空間的“世界語”,編譯后的Java字節(jié)碼是一種“結(jié)構(gòu)中立性(architecture neutral)的目標(biāo)文件格式,可以在所有提供Java虛擬機(jī)(JVM)的多種不同主機(jī)、不同處理器上運(yùn)行。
9、 平滑移植“write once,run every where!”也許是Java最誘人的特點(diǎn)。用Java開發(fā)而成的系統(tǒng)其移植工作幾乎為零,一般情況下只需對配置文件、批處理文件作相應(yīng)修改即可實(shí)現(xiàn)平滑移植。
10、 多線程Java的多線程(multithreading)機(jī)制使程序可以并行運(yùn)行。Java還有一組同步化基本單元,他們是以廣泛使用的C.A.R.Hoare監(jiān)視器與條件變量圖為基礎(chǔ)的。同步機(jī)制保證了對共享數(shù)據(jù)的正確操作。多線程使程序設(shè)計(jì)者可以用不同的線程分別實(shí)現(xiàn)各種不同的行為,而不需要采用全局的事件循環(huán)機(jī)制,因此,使用Java語言可以非常輕松地實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時交互行為。
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),將會引起一場軟件革命”,這是因?yàn)镴ava語言能在執(zhí)行碼(二進(jìn)制碼)上兼容,這樣以前所開發(fā)的軟件能運(yùn)行在不同的機(jī)器上,只要所用的機(jī)器能提供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è)計(jì)提供了實(shí)現(xiàn)工具和想向空間。遵循面向?qū)ο笏枷耄浖芷诘母鱾部分都將從面向?qū)ο蟮慕嵌瘸霭l(fā)實(shí)現(xiàn)。比如用戶需求分析將被劃分成具有不同狀態(tài)(數(shù)據(jù))和行為的模塊,不同模塊之間的聯(lián)系通過消息實(shí)現(xiàn)等等。
2.軟件的開發(fā)方法由于Java語言的面向目標(biāo)的特性,越來越多的人在用O-O開發(fā)時都在選擇使用Java技術(shù)與方法來開發(fā),這與Java的面向?qū)ο筇匦、模塊化特性、性以及適應(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.分布式計(jì)算Java對CORBA、RMI(遠(yuǎn)程方法調(diào)用)、EJB、XML和網(wǎng)絡(luò)處理的支持和應(yīng)用,將使未來企業(yè)分布計(jì)算向其傾斜。
5.圖形處理與多媒體效果Java2以及以后版本提供了Swing、2D、3D、Sound等圖形、圖象和多媒體支持類庫,彌補(bǔ)了早期Java版本在此方面的不足。Java的媒體處理能力使程序開發(fā)在的動畫效果遠(yuǎn)比GUI技術(shù)更加逼真,尤其是利用WWW提供的巨大動畫資源空間,可以共享全世界的動態(tài)畫面的資源。
6. 產(chǎn)品開發(fā)目前Java產(chǎn)品主要有基于WEB的實(shí)時信息發(fā)布系統(tǒng)、WEB郵件系統(tǒng)、用于企業(yè)分布式計(jì)算的消息傳輸系統(tǒng)、基于servlet/jsp/ejb開發(fā)的電子商務(wù)平臺、提供servlet/jsp/ejb開發(fā)和運(yùn)行環(huán)境的應(yīng)用服務(wù)器、結(jié)合CORBA/XML等技術(shù)開發(fā)的分布計(jì)算支撐平臺等等。另外用Java開發(fā)的多媒體軟件可以實(shí)現(xiàn)集可視化、可聽化、可操作化于一體的效果。
四、Java未來前景 由于Java語言具有上述特性,所以其應(yīng)用前景必然美好,未來發(fā)展肯定會與互聯(lián)網(wǎng)的發(fā)展需求綁定: 1. 所有面向?qū)ο蟮膽?yīng)用開發(fā); 2. 軟件工程中需求分析、系統(tǒng)設(shè)計(jì)、開發(fā)實(shí)現(xiàn)和維護(hù);3. 中小型多媒體系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn); 4. 消息傳輸系統(tǒng);5. 分布計(jì)算交易管理應(yīng)用(JTS/RMI/CORBA/JDBC等技術(shù)應(yīng)用);6. Internet的系統(tǒng)管理功能模塊的設(shè)計(jì),包括Web頁面的動態(tài)設(shè)計(jì)、網(wǎng)站信息提供管理和交互操作設(shè)計(jì)等。7. Intranet(企業(yè)內(nèi)部網(wǎng))上完全基于Java和WEB技術(shù)的應(yīng)用開發(fā);8. WEB服務(wù)器后端與各類數(shù)據(jù)庫連接管理器(隊(duì)列、緩沖池);9. 掃描系統(tǒng)(包括網(wǎng)絡(luò)掃描、數(shù)據(jù)庫掃描、用戶掃描等);10. 網(wǎng)絡(luò)/應(yīng)用管理系統(tǒng);11. 其它應(yīng)用類型的程序。
五、學(xué)習(xí)建議因?yàn)槎喾N原因,目前我國對于Internet的研究與開發(fā)工作還是與國外尤其實(shí)美國有相對差距,但用Java語言進(jìn)行開發(fā)的成功案例在各行各業(yè)還是有些,尤其實(shí)目前較為火熱的電子商務(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虛擬機(jī)規(guī)范、編程規(guī)范以及常用開發(fā)工具使用等。
2、 了解Java高級技術(shù)概貌了解Java高級技術(shù)概貌其實(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是因?yàn)閷δ承┓矫娓信d趣或者是有方面的工作需求。因此無論為了個人興趣還是更好的完成工作,幾乎都只可能精于某幾方面的技術(shù),其它方面兼顧即可。
(注:如需引用、出版、發(fā)行請與作者聯(lián)系,版權(quán)為中國Java陣線同盟所有)
胡德平公元00.08.10.21.30于北京清華園
來源:http://edu.chinaz.com