




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章Java語(yǔ)言概述
1.1計(jì)算機(jī)與程序設(shè)計(jì)語(yǔ)言1.2Java的發(fā)展歷史1.3跨平臺(tái)的Java1.4面向?qū)ο蟮腏ava1.5Java程序的開(kāi)發(fā)環(huán)境1.6最簡(jiǎn)單的Java程序 1.1計(jì)算機(jī)與程序設(shè)計(jì)語(yǔ)言
1946年2月15日,第一臺(tái)通用電子數(shù)字計(jì)算機(jī)ENIAC在美國(guó)研制成功。它由1.8萬(wàn)個(gè)電子管組成,重達(dá)30多噸。ENIAC無(wú)論功能還是運(yùn)算速度都無(wú)法跟今天的家用電腦相比,但它的出現(xiàn)卻開(kāi)啟了一個(gè)新的時(shí)代。
計(jì)算機(jī)作為一種通用工具,與人類歷史上發(fā)明的各種工具相比,一個(gè)突出的不同就是可以編程控制,通過(guò)執(zhí)行不同的程序,計(jì)算機(jī)可以實(shí)現(xiàn)不同的功能。程序是計(jì)算機(jī)能夠執(zhí)行的指令序列,程序員可以使用不同的程序設(shè)計(jì)語(yǔ)言來(lái)編寫(xiě)程序,其中有一些語(yǔ)言計(jì)算機(jī)能夠直接識(shí)別,而另一些程序設(shè)計(jì)語(yǔ)言需要經(jīng)過(guò)翻譯才能為計(jì)算機(jī)所執(zhí)行。程序設(shè)計(jì)語(yǔ)言的發(fā)展,經(jīng)歷了從機(jī)器語(yǔ)言、匯編語(yǔ)言到高級(jí)語(yǔ)言的歷程。
1)機(jī)器語(yǔ)言
計(jì)算機(jī)所使用的是由“0”和“1”組成的二進(jìn)制數(shù),計(jì)算機(jī)發(fā)明之初,人們只能使用一串串由“0”和“1”組成的指令序列來(lái)編寫(xiě)程序,這種語(yǔ)言稱為機(jī)器語(yǔ)言。機(jī)器語(yǔ)言難以使用,程序調(diào)試修改十分困難。而且,由于不同型號(hào)計(jì)算機(jī)的指令系統(tǒng)往往不同,在一臺(tái)計(jì)算機(jī)上執(zhí)行的程序,要想在另一臺(tái)計(jì)算機(jī)上執(zhí)行,必須另編程序,造成了重復(fù)工作。
2)匯編語(yǔ)言
針對(duì)機(jī)器語(yǔ)言的缺點(diǎn),人們進(jìn)行了一種有益的改進(jìn),采用一些類似于英語(yǔ)單詞的縮寫(xiě)代替計(jì)算機(jī)的各種二進(jìn)制指令,如“ADD”代表加法,“MOV”代表數(shù)據(jù)傳遞等等。這樣一來(lái),程序變得易于理解和維護(hù)。這些縮寫(xiě)便構(gòu)成了基本的匯編語(yǔ)言。用匯編語(yǔ)言編寫(xiě)的程序不能直接由計(jì)算機(jī)執(zhí)行,需要一個(gè)翻譯程序?qū)⑦@些符號(hào)翻譯成二進(jìn)制的機(jī)器語(yǔ)言,這種翻譯程序被稱為匯編程序。
3)高級(jí)語(yǔ)言
雖然利用匯編語(yǔ)言編寫(xiě)程序的效率遠(yuǎn)高于其他語(yǔ)言,但是對(duì)于一項(xiàng)簡(jiǎn)單的任務(wù),仍需要大量的指令才能完成,所以使用匯編語(yǔ)言編程調(diào)試來(lái)實(shí)現(xiàn)一個(gè)復(fù)雜應(yīng)用依然是一件很痛苦的事情。
“痛”則思變,高級(jí)語(yǔ)言應(yīng)運(yùn)而生。1954年,第一個(gè)完全脫離機(jī)器硬件的高級(jí)語(yǔ)言——FORTRAN問(wèn)世了,它采用接近于數(shù)學(xué)語(yǔ)言或人的自然語(yǔ)言的語(yǔ)法形式,同時(shí)又不依賴于計(jì)算機(jī)硬件,編程效率和程序的通用性得到很大的提高。50多年來(lái),已出現(xiàn)的高級(jí)語(yǔ)言有幾百種,影響較大的也有幾十種。高級(jí)語(yǔ)言程序本身不能直接為計(jì)算機(jī)所執(zhí)行,必須由專門的編譯程序?qū)⒏呒?jí)語(yǔ)言編寫(xiě)的程序轉(zhuǎn)換為一個(gè)或多個(gè)包含了機(jī)器語(yǔ)言的文件。高級(jí)程序經(jīng)過(guò)編譯后,鏈接程序?qū)藱C(jī)器語(yǔ)言的文件鏈接成一個(gè)計(jì)算機(jī)可以運(yùn)行的程序,采用這種方式工作的高級(jí)語(yǔ)言稱為編譯型語(yǔ)言。
高級(jí)語(yǔ)言的另一種工作方式是由解釋器直接執(zhí)行高級(jí)語(yǔ)言程序,與編譯型方式相比,解釋器方式的執(zhí)行效率比較低。 1.2Java的發(fā)展歷史
1995年5月,Sun公司在“SunWorld95”大會(huì)上推出了Java語(yǔ)言。Java語(yǔ)言作為一種網(wǎng)絡(luò)編程語(yǔ)言,隨著國(guó)際互聯(lián)網(wǎng)的飛速發(fā)展,很快得到了廣泛的支持和實(shí)際的應(yīng)用。
其實(shí),Java語(yǔ)言最初并不是為互聯(lián)網(wǎng)設(shè)計(jì)的,它來(lái)自于Sun公司的一個(gè)叫Green的項(xiàng)目,目的是為家用消費(fèi)電子產(chǎn)品開(kāi)發(fā)一個(gè)分布式代碼系統(tǒng),這樣,用戶可以把E-mail發(fā)給電冰箱、電視機(jī)等家用電器,對(duì)它們進(jìn)行控制和信息交流。該項(xiàng)目小組開(kāi)始準(zhǔn)備采用C++,但他們很快意識(shí)到C++?太復(fù)雜,安全性差,后來(lái)基于C++?開(kāi)發(fā)了一種新的語(yǔ)言——Oak(Java的前身)。
Oak是一種用于網(wǎng)絡(luò)的精巧而安全的語(yǔ)言,Sun公司曾以此投標(biāo)一個(gè)交互式電視項(xiàng)目,但未獲成功,使得Oak幾乎夭折。MarkArdreesen開(kāi)發(fā)的Mosaic和Netscape啟發(fā)了Oak項(xiàng)目組成員,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執(zhí)行官ScottMcNealy的支持,Java得以進(jìn)軍互聯(lián)網(wǎng)。為此Sun公司引入了一個(gè)稱之為Applet的Java程序創(chuàng)建機(jī)制,用以在Web頁(yè)上執(zhí)行并通過(guò)Web瀏覽器進(jìn)行顯示,使得原本靜態(tài)的網(wǎng)頁(yè)“活躍起來(lái)”。
Java的取名也有一段趣聞。有一天,幾位Oak項(xiàng)目組成員正在討論給這個(gè)新的語(yǔ)言取什么名字,當(dāng)時(shí)他們正在咖啡館喝著Java咖啡,有一個(gè)人靈機(jī)一動(dòng)說(shuō),就叫Java怎么樣,結(jié)果得到了其他人的贊同,于是,Java這個(gè)名字就這樣傳開(kāi)了。
目前通常所說(shuō)的Java有三層含義:先是指一種編程語(yǔ)言;其次是一種開(kāi)發(fā)環(huán)境;再者是一種應(yīng)用環(huán)境。如今的Java語(yǔ)言不再只是將Web網(wǎng)頁(yè)“活躍起來(lái)”的一門語(yǔ)言,它已成為許多機(jī)構(gòu)編程時(shí)的首選語(yǔ)言。
Java作為新一代面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,特別適合于Internet應(yīng)用程序開(kāi)發(fā),它的平臺(tái)無(wú)關(guān)性使Java作為軟件開(kāi)發(fā)的一種革命性技術(shù)地位得到確立。計(jì)算機(jī)產(chǎn)業(yè)的許多大公司購(gòu)買了Java的許可證,包括IBM、Microsoft、Apple、Oracle等。Java開(kāi)發(fā)工具軟件日漸豐富,如Borland公司的JBuilder、Sun公司的JavaWorkshop、IBM公司的VisualAge、Microsoft公司的VisualJ++等。數(shù)據(jù)庫(kù)廠商如Sysbase、Versant、Oracle都在開(kāi)發(fā)CGI接口,支持HTML和Java。
Sun公司于1996年年初發(fā)布了Java的第一個(gè)版本,1998年召開(kāi)的JavaOne大會(huì)上發(fā)布了Java1.2版。1999年,Sun公司發(fā)布了以Java2平臺(tái)為核心的J2SE、J2EE和J2ME三大平臺(tái)。●?J2SE(Java2Platform,StandardEdition)
J2SE含有基本的Java2SDK工具和運(yùn)行時(shí)API,開(kāi)發(fā)者可以用它們來(lái)編寫(xiě)、部署和運(yùn)行Java應(yīng)用程序和Applet(在Web瀏覽器如IE中運(yùn)行的Java小程序)。
●?J2EE(Java2Platform,EnterpriseEdition)
J2EE建立在J2SE的基礎(chǔ)上,它是JSP(JavaServerPage)、Servlet、EJB、JTS(JavaTransactionService)、Javamail以及JMS(JavaMessageService)等多項(xiàng)技術(shù)的混合體,主要用于開(kāi)發(fā)分布式的、服務(wù)器端的多層結(jié)構(gòu)的應(yīng)用系統(tǒng),如電子商務(wù)網(wǎng)站?!?J2ME(Java2Platform,MicroEdition)
J2ME主要用于開(kāi)發(fā)電子產(chǎn)品,如移動(dòng)電話、數(shù)字機(jī)頂盒、汽車導(dǎo)航系統(tǒng)等。
本書(shū)介紹的內(nèi)容基本都屬于J2SE的范疇,僅第9章涉及J2EE的部分內(nèi)容。
2002年2月,Sun公司發(fā)布了J2SE1.4版,該版本為目前應(yīng)用最為廣泛的Java版本。2004年10月J2EE1.5版發(fā)布,該版引入了一些新的特性,Sun將其正式稱為Java5,相應(yīng)的三個(gè)平臺(tái)分別改稱為JavaSE、JavaEE、JavaME。目前,Sun公司網(wǎng)站已正式發(fā)布了Java6。
本書(shū)內(nèi)容主要基于Java2,少量程序使用了Java5的一些新特性。 1.3跨平臺(tái)的Java
與常見(jiàn)的編譯型高級(jí)程序設(shè)計(jì)語(yǔ)言不同,Java語(yǔ)言編譯器產(chǎn)生的二進(jìn)制代碼是一種與具體機(jī)器指令無(wú)關(guān)的指令集合,只要有Java運(yùn)行時(shí)系統(tǒng)存在,編譯后的代碼便可在許多處理器上運(yùn)行。Java運(yùn)行時(shí)系統(tǒng)被稱為Java虛擬機(jī)(JavaVirtualMachine,JVM),Java編譯器產(chǎn)生的代碼由Java虛擬機(jī)解釋執(zhí)行,如圖1.1所示。由此,Java語(yǔ)言實(shí)現(xiàn)了平臺(tái)獨(dú)立性——一次編寫(xiě),隨處運(yùn)行(Writeonce,Runanywhere)。圖1.1Java的平臺(tái)無(wú)關(guān)性
Java編譯器產(chǎn)生的二進(jìn)制代碼稱為字節(jié)碼(ByteCode),字節(jié)碼與任何具體計(jì)算機(jī)結(jié)構(gòu)都無(wú)關(guān)。實(shí)際上,這并不是一個(gè)新想法,多年前的UCSDPascal系統(tǒng)就在一個(gè)商業(yè)產(chǎn)品中做了同樣的努力,甚至比這更早,NiklausWirth的Pascal的最初實(shí)現(xiàn)也使用了同樣的方法。
不過(guò)這種技術(shù)存在著一個(gè)很大的缺點(diǎn),即與通常高級(jí)語(yǔ)言采用的編譯為機(jī)器指令相比,其程序執(zhí)行效率相差很多。為此,Java系統(tǒng)采用了一些獨(dú)特的方法來(lái)改善其執(zhí)行效率。例如,采用即時(shí)編譯技術(shù)(JustInTime,JIT),在程序執(zhí)行前將字節(jié)碼轉(zhuǎn)換為本地指令,避免了對(duì)某些指令段的重復(fù)解釋;精心設(shè)計(jì)Java字節(jié)碼,使其既可容易地在任何機(jī)器上解釋,又可容易地被快速翻譯為本地機(jī)器代碼。
Java系統(tǒng)的基本數(shù)據(jù)類型不依賴于具體實(shí)現(xiàn),在任何硬件平臺(tái)上均保持一致。而通常的高級(jí)語(yǔ)言數(shù)據(jù)類型是與平臺(tái)相關(guān)的,如C語(yǔ)言在Windows3.1中整數(shù)(int)為16位,在Windows95中整數(shù)為32位,在DECAlpha中整數(shù)為64位,在Intel486中整數(shù)為32位。
這種與體系結(jié)構(gòu)無(wú)關(guān)的特性使得Java應(yīng)用程序可以在配備了Java虛擬機(jī)的任何計(jì)算機(jī)系統(tǒng)上運(yùn)行,這成為Java應(yīng)用軟件便于移植的良好基礎(chǔ)。 1.4面向?qū)ο蟮腏ava
20世紀(jì)60年代,軟件開(kāi)發(fā)技術(shù)發(fā)展緩慢,隨著硬件技術(shù)的發(fā)展,出現(xiàn)了“軟件危機(jī)”。在軟件開(kāi)發(fā)過(guò)程中,所做的工作常常落后于預(yù)先的計(jì)劃,成本大幅提高,超過(guò)預(yù)算,而得到的最終產(chǎn)品卻并不可靠,不能滿足實(shí)際的需要。
為了解決“軟件危機(jī)”,20世紀(jì)60年代末70年代初人們提出了結(jié)構(gòu)化程序設(shè)計(jì)的思想,按照結(jié)構(gòu)化程序設(shè)計(jì)的原則和方法,設(shè)計(jì)出結(jié)構(gòu)清晰、容易理解、容易修改、容易驗(yàn)證的程序。結(jié)構(gòu)化程序設(shè)計(jì)方法采用自頂向下、逐步細(xì)化的方法將復(fù)雜的過(guò)程分解成由三種基本控制結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu))構(gòu)成的程序。到了20世紀(jì)70年代末期,隨著計(jì)算機(jī)科學(xué)的發(fā)展和應(yīng)用領(lǐng)域的不斷擴(kuò)大,對(duì)計(jì)算機(jī)技術(shù)的要求越來(lái)越高。結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言和結(jié)構(gòu)化分析與設(shè)計(jì)已無(wú)法滿足用戶需求的變化,面向?qū)ο蠹夹g(shù)開(kāi)始嶄露頭角。
面向?qū)ο蟪绦蛟O(shè)計(jì)方法起源于Simula67語(yǔ)言,它本身雖因比較難學(xué)、難用而未能廣泛流行,但在它的影響下所產(chǎn)生的面向?qū)ο蠹夹g(shù)卻迅速傳播開(kāi)來(lái),并在全世界掀起了一股OO(ObjectOriented)熱潮,至今盛行不衰。面向?qū)ο蟪绦蛟O(shè)計(jì)在軟件開(kāi)發(fā)領(lǐng)域引起了大的變革,極大地提高了軟件開(kāi)發(fā)的效率,為解決軟件危機(jī)帶來(lái)了一線光明。結(jié)構(gòu)化程序設(shè)計(jì)方法將要實(shí)現(xiàn)的系統(tǒng)描述為一個(gè)過(guò)程,而一些復(fù)雜的系統(tǒng)如Windows的窗口系統(tǒng)、一個(gè)大型機(jī)構(gòu)的管理信息系統(tǒng)等,我們則很難將其運(yùn)作規(guī)律描述成一個(gè)單一的過(guò)程。面向?qū)ο蟮幕舅枷胝J(rèn)為系統(tǒng)是由若干對(duì)象構(gòu)成的,每個(gè)對(duì)象都有各自的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間通過(guò)消息傳送相互作用和聯(lián)系。使用面向?qū)ο蟮姆椒?,我們可以通過(guò)分別描述系統(tǒng)中的每個(gè)對(duì)象的特性和這些對(duì)象之間的聯(lián)系來(lái)描述整個(gè)系統(tǒng)。
Java語(yǔ)言的設(shè)計(jì)完全是面向?qū)ο蟮?。在Java語(yǔ)言編寫(xiě)的程序中,使用類class來(lái)描述一組對(duì)象的共同特性,類可以看成是創(chuàng)建對(duì)象的藍(lán)圖,對(duì)象之間通過(guò)方法調(diào)用來(lái)實(shí)現(xiàn)相互間的聯(lián)系。
Java語(yǔ)言程序的基本單位是類class,一個(gè)完整的Java語(yǔ)言程序一般由多個(gè)類構(gòu)成。Java語(yǔ)言運(yùn)行環(huán)境還提供了功能強(qiáng)大的類庫(kù)(或稱為應(yīng)用程序接口API),可以幫助應(yīng)用程序很容易地實(shí)現(xiàn)一些復(fù)雜的功能。
1.5Java程序的開(kāi)發(fā)環(huán)境
1.5.1Java程序的開(kāi)發(fā)過(guò)程
Java程序的開(kāi)發(fā)過(guò)程與其他高級(jí)語(yǔ)言相似。首先編寫(xiě)程序,然后采用文本編輯軟件輸入源程序,再使用Java語(yǔ)言編譯器進(jìn)行編譯,生成字節(jié)碼文件。
與C/C++?等其他高級(jí)語(yǔ)言不同的是,一個(gè)Java程序由若干個(gè)字節(jié)碼文件構(gòu)成,Java虛擬機(jī)直接執(zhí)行字節(jié)碼文件,沒(méi)有連接生成獨(dú)立的可執(zhí)行文件的過(guò)程。Java類庫(kù)代碼也不像C/C++?的函數(shù)庫(kù)或類庫(kù)那樣需要連接到執(zhí)行文件中,用戶要執(zhí)行Java程序必須安裝相應(yīng)的Java運(yùn)行環(huán)境(JavaRuntimeEnvironment,JRE),這些類庫(kù)在安裝Java運(yùn)行環(huán)境時(shí)已安裝在用戶的系統(tǒng)中了。1.5.2Java開(kāi)發(fā)工具
Java語(yǔ)言最基本的開(kāi)發(fā)環(huán)境是由Sun公司免費(fèi)提供的JDK(JavaDevelopmentKit),它的開(kāi)發(fā)環(huán)境比較簡(jiǎn)單,使用命令行編譯源代碼,編譯調(diào)試程序都不是很方便。
目前很多廠商推出了Java語(yǔ)言的集成開(kāi)發(fā)工具,這些開(kāi)發(fā)工具集源代碼的編輯、編譯及調(diào)試于一體,而且可以幫助程序員生成應(yīng)用程序框架,減少程序員的重復(fù)勞動(dòng),提高軟件開(kāi)發(fā)的效率。常見(jiàn)的集成開(kāi)發(fā)工具有Microsoft公司的VisualJ++、Borland公司的JBuilder、IBM公司的VisualAgeforJava和Eclipse等。由于Microsoft公司與Sun公司的Java標(biāo)準(zhǔn)之爭(zhēng),VisualJ++后續(xù)版本已不再支持Java的一些新特性,也不再作為Java應(yīng)用的開(kāi)發(fā)工具。大部分的Java集成開(kāi)發(fā)環(huán)境均需要JDK的支持,某些廠商的集成開(kāi)發(fā)環(huán)境在安裝過(guò)程中會(huì)自動(dòng)安裝特定版本的JDK,并允許用戶自行安裝其他版本的JDK,以便用戶能夠使用Java語(yǔ)言新版本的一些特性。
目前,Sun公司網(wǎng)站提供JDK6以及J2SE5.0、J2SE1.4.2等版本的下載,用戶可根據(jù)需要選擇下載。從J2SE1.4開(kāi)始,Sun公司提供了帶集成開(kāi)發(fā)環(huán)境的JDK版本,其所使用的集成開(kāi)發(fā)環(huán)境為NetBeansIDE。Sun公司于2000年6月創(chuàng)建了NetBeans開(kāi)放源碼計(jì)劃,并繼續(xù)充當(dāng)該計(jì)劃的主贊助商。NetBeansIDE是一個(gè)開(kāi)發(fā)環(huán)境,也即一個(gè)供程序員編寫(xiě)、編譯、調(diào)試和部署程序的工具。它是用Java編寫(xiě)的,但卻可以支持任何編程語(yǔ)言。另外也有巨大數(shù)量的模塊來(lái)擴(kuò)展NetBeansIDE,它是一個(gè)免費(fèi)產(chǎn)品,不限制其使用形式。
JBuilder是Borland公司提供的跨平臺(tái)Java開(kāi)發(fā)環(huán)境,可以用于構(gòu)建符合工業(yè)標(biāo)準(zhǔn)的Java應(yīng)用系統(tǒng),開(kāi)發(fā)各類應(yīng)用程序。雙向、可視化設(shè)計(jì)工具使得用戶可以快速地構(gòu)建和部署各種J2EE應(yīng)用程序。JBuilder功能強(qiáng)大,易于使用,本書(shū)將其作為實(shí)驗(yàn)環(huán)境推薦給讀者使用。 1.6最簡(jiǎn)單的Java程序
Java程序主要有Java應(yīng)用程序(JavaApplication)和Applet兩種。下面給出兩個(gè)最簡(jiǎn)單的Java程序,從中可以了解Java語(yǔ)言程序的基本結(jié)構(gòu)。
1.6.1最簡(jiǎn)單的Java應(yīng)用程序
【程序1.1】
最簡(jiǎn)單的Java應(yīng)用程序。
/*HelloWorldApp.java*/
classHelloWorldApp{
/***Traditional“HelloWorld!”program.
*/
publicstaticvoidmain(Stringargs[]){
//Writetostdout.
System.out.println(“HelloWorld!”);
}
}
程序1.1是一個(gè)JavaApplication,它的功能很簡(jiǎn)單,向標(biāo)準(zhǔn)輸出設(shè)備輸出字符串“HelloWorld!”,運(yùn)行該程序可以在顯示器上看到該字符串。從程序1.1中首先看到的是注釋語(yǔ)句,編譯器在編譯時(shí)將跳過(guò)該部分內(nèi)容。Java語(yǔ)言的注釋語(yǔ)句有兩種基本形式:
(1)以/*開(kāi)始,以*/結(jié)束。其中的所有字符在編譯時(shí)被忽略。
(2)行注釋。以//開(kāi)始到本行結(jié)束。
程序1.1定義了一個(gè)類HelloWorldApp,其中定義了一個(gè)方法main。有關(guān)類和方法的概念本書(shū)第3章將詳細(xì)描述。
main方法是程序的入口點(diǎn),Java應(yīng)用程序從main方法開(kāi)始執(zhí)行,main方法執(zhí)行結(jié)束則該程序退出運(yùn)行。因此,如果一個(gè)程序由多個(gè)類構(gòu)成,則只能有一個(gè)類有main方法。程序1.1使用了JavaAPI完成字符串的輸出功能,System.out為標(biāo)準(zhǔn)輸出流對(duì)象,用于訪問(wèn)操作系統(tǒng)的標(biāo)準(zhǔn)輸出設(shè)備,通常情況下標(biāo)準(zhǔn)輸出設(shè)備為顯示設(shè)備。println為其方法成員,其功能為輸出括號(hào)中的字符串或其他類型的數(shù)據(jù)并換行。類似的還有方法print,它與println的區(qū)別是輸出數(shù)據(jù)后不換行。
程序1.1的結(jié)構(gòu)比較簡(jiǎn)單,只定義了一個(gè)類,在后面的章節(jié)中讀者將會(huì)看到包含多個(gè)類的程序。1.6.2最簡(jiǎn)單的JavaApplet
JavaApplet的執(zhí)行環(huán)境與Java應(yīng)用程序不同,Applet不是獨(dú)立的應(yīng)用程序,它是嵌入在HTML文件中使用的,程序被放置在Web服務(wù)器上,下載到客戶端后,由Web瀏覽器如微軟的InternetExplorer執(zhí)行。
【程序1.2】
最簡(jiǎn)單的JavaApplet。
importjava.applet.Applet;
importjava.awt.Graphics;
publicclassHelloWorldextendsApplet{
publicvoidpaint(Graphicsg)
{
g.drawString(“你好,Java世界!”,2,20);
}
}
程序1.2是一個(gè)最簡(jiǎn)單的JavaApplet。下面是一個(gè)發(fā)布程序1.2的HTML文件的內(nèi)容,請(qǐng)注意其中斜黑體的內(nèi)容。
<html>
<head><title>我的第一個(gè)JavaApplet程序</title></head>
<body>
<p><appletcode=HelloWorld.classwidth=300height=200></applet>
</body>
</html>將上述HTML文件和程序1.2編譯得到的字節(jié)碼文件HelloWorld.class放在Web服務(wù)器的同一個(gè)目錄下,當(dāng)使用Web瀏覽器瀏覽該HTML文件時(shí),瀏覽器將下載HelloWorld.class,然后執(zhí)行。
因?yàn)閳?zhí)行環(huán)境與JavaApplication不同,Applet的程序結(jié)構(gòu)與JavaApplication也有所不同,當(dāng)然它們有一點(diǎn)是共同的,即都是由若干個(gè)類組成的。程序1.2的第1行表示該Applet程序需要引用JavaAPI類庫(kù)提供的Applet類。學(xué)習(xí)過(guò)C語(yǔ)言的讀者應(yīng)注意import與C語(yǔ)言中的?#inlcude類似,但Java編譯器的處理方法不同于C語(yǔ)言,它并不將該文件讀入,而且它引用的是已經(jīng)編譯過(guò)的Java字節(jié)碼文件。在編譯階段,Java編譯器將從該字節(jié)碼文件中讀取有關(guān)Applet類的信息,檢驗(yàn)程序中對(duì)Applet的使用是否正確。程序1.2編譯生成的HelloWorld.class文件中也不包含Applet類的代碼。第2行的作用與第1行類似,由于程序中用java.awt.Graphics類的功能來(lái)輸出字符串,因此引入該類。
第3行開(kāi)始定義HelloWorld類,注意后面的extendsApplet,這是Java類繼承語(yǔ)法。一個(gè)Applet程序可以由多個(gè)類構(gòu)成,其中只有一個(gè)類繼承自Applet類,這是Applet程序的入口。
Applet的執(zhí)行與JavaApplication不同,從程序中看不到像Application中main方法那樣的一個(gè)明顯的執(zhí)行流程。實(shí)際上這些都已經(jīng)在Applet中實(shí)現(xiàn)了,Applet在執(zhí)行時(shí)一直等待用戶的輸入或其他的一些事件(如關(guān)閉瀏覽器),根據(jù)不同的事件執(zhí)行不同的功能。在編寫(xiě)Applet時(shí)需要做的就是提供各種事件的處理程序,例如程序1.2類HelloWorld中定義了方法paint,該方法當(dāng)Applet需要繪制界面時(shí)被調(diào)用。
Applet類中定義了paint方法的調(diào)用形式,它有一個(gè)Graphics類的對(duì)象作參數(shù),通過(guò)它可以在Applet的界面上繪制圖形和文字。程序1.2調(diào)用drawString方法來(lái)輸出一個(gè)字符串:
g.drawString(“你好,Java世界!”,2,20);
drawString方法有三個(gè)參數(shù):第一個(gè)是要輸出的字符串;第二、三個(gè)是輸出位置,分別為x、y軸的值。
圖1.2是程序1.2在IE6.0中執(zhí)行的畫(huà)面。圖1.2Applet的運(yùn)行
實(shí)訓(xùn)一安裝與熟悉Java開(kāi)發(fā)工具
A.
JDK開(kāi)發(fā)工具
一、實(shí)訓(xùn)目的
1.學(xué)習(xí)從網(wǎng)絡(luò)上下載JDK開(kāi)發(fā)工具與幫助文檔。
2.學(xué)習(xí)安裝JDK開(kāi)發(fā)工具及其文檔。
3.掌握J(rèn)avaAppllcation程序的開(kāi)發(fā)過(guò)程并編寫(xiě)一個(gè)JavaApplication程序。
4.掌握J(rèn)avaApplet程序的開(kāi)發(fā)過(guò)程并編寫(xiě)一個(gè)JavaApplet程序。
5.學(xué)習(xí)編寫(xiě)簡(jiǎn)單的HTML文件以配合JavaApplet的使用。
6.學(xué)習(xí)使用JDK的幫助文檔。
7.給出JavaApplet、Application例子,調(diào)試程序、修改程序功能。
二、實(shí)訓(xùn)內(nèi)容
1.從網(wǎng)絡(luò)上下載JDK開(kāi)發(fā)工具與幫助文檔。
(1)訪問(wèn),瀏覽JDK下載頁(yè)面,JDK5的下載頁(yè)面為/javase/downloads/index_jdk5.jsp,如圖1.3所示。也可以訪問(wèn)其他國(guó)內(nèi)外的免費(fèi)FTP站點(diǎn)或從CD-ROM光盤中下載得到JDK開(kāi)發(fā)工具。圖1.3JDK5下載頁(yè)面
(2)選擇適合的軟件版本,點(diǎn)擊,進(jìn)入圖1.4所示的頁(yè)面,選擇其中的“AcceptLicenseAgreement”接受許可協(xié)議。圖1.4接受許可協(xié)議
(3)在圖1.5所示的頁(yè)面中選擇適合用戶的JDK版本,點(diǎn)擊下載該JDK。在Windows環(huán)境下IE將彈出如圖1.6所示的對(duì)話框,點(diǎn)擊按鈕,然后選擇保存的文件目錄,IE會(huì)將文件下載到指定的位置。圖1.5選擇適合用戶平臺(tái)的JDK版本圖1.6文件下載保存提示
(4)按同樣的方法下載JDK的幫助文檔。下載鏈接參考圖1.3。
2.安裝JDK開(kāi)發(fā)工具與幫助文檔。
(1)運(yùn)行下載的可執(zhí)行文件,安裝JDK。
(2)為方便運(yùn)行Java編譯器,設(shè)置環(huán)境變量Path。對(duì)于Windows95/98,修改計(jì)算機(jī)的C:\AUTOEXEC.BAT文件時(shí)應(yīng)在文件末增加一句:
setPath=%Path%;C:\jdk1.5.0_09\bin
這里,C:\jdk1.5.0_09為JDK的安裝目錄。對(duì)于WindowsXP及Windows2000等平臺(tái),在控制面板中選擇“系統(tǒng)”圖標(biāo),在彈出的“系統(tǒng)屬性”對(duì)話框中單擊“高級(jí)”標(biāo)簽,再在彈出的對(duì)話框中單擊按鈕,如圖1.7所示。然后在圖1.8中的“系統(tǒng)變量”列表中選擇“Path”,單擊按鈕,在出現(xiàn)的對(duì)話框中仿照上面的set命令將C:\jdk1.5.0_09\bin加入到path環(huán)境變量中。圖1.7“系統(tǒng)屬性”對(duì)話框圖1.8環(huán)境變量設(shè)置
(3)使用解壓縮工具Winzip解壓JDK幫助文檔jdk-1_5_0-doc.zip文件,該壓縮文件包含一組以HTML文件形式組織的幫助文件,把它們保存在本地的一個(gè)目錄下,例如保存在C:\jdk1.5.0_09\document\目錄下。
3.編寫(xiě)并運(yùn)行一個(gè)JavaApplicadon程序。
(1)打開(kāi)一個(gè)純文本編輯器,例如Windows記事本NotePad.exe或DOS下的edit.exe。
(2)鍵入1.2節(jié)中的程序1.1。
(3)檢查無(wú)誤后(注意大小寫(xiě)準(zhǔn)確)把文件保存起來(lái),命名為HelloWorldApp.java,可以創(chuàng)建一個(gè)目錄,如C:\Java\prog1_1,保存這個(gè)文件。
(4)進(jìn)入DOS命令行方式,用cd命令進(jìn)入(3)中創(chuàng)建的目錄,運(yùn)行Java編譯器:
javacHelloWorldApp.java
(5)如果JDK安裝正確、程序輸入無(wú)誤且保存的文件名正確,運(yùn)行編譯器將沒(méi)有任何輸出;否則會(huì)輸出錯(cuò)誤信息,一般的錯(cuò)誤都是由于拼寫(xiě)失誤引起的。運(yùn)行dir命令查看是否已在相同目錄下生成一個(gè)名為HelloWorldApp.class的文件。
(6)利用Java解釋器運(yùn)行這個(gè)JavaApplication程序,并查看運(yùn)行結(jié)果:
javaHelloWorldApp
4.編寫(xiě)并編譯一個(gè)JavaApplet程序。
(1)打開(kāi)一個(gè)純文本編輯器。
(2)鍵入1.2節(jié)中的程序1.2。
(3)創(chuàng)建一個(gè)目錄保存文件,命名為HelloWorld.java。
(4)進(jìn)入DOS命令行方式,在保存有上述Java文件的目錄下運(yùn)行Java編譯器:
javacHelloWorld.java
(5)如果程序輸入無(wú)誤且保存的文件名正確,運(yùn)行編譯器將沒(méi)有任何輸出;否則會(huì)輸出錯(cuò)誤信息。運(yùn)行dir命令查看是否已在相同目錄下生成一個(gè)名為HelloWorld.class的文件。
5.編寫(xiě)配合JavaApplet的HTML文件。
(1)打開(kāi)一個(gè)純文本編輯器。
(2)鍵入如下的HTML程序:
<html>
<head><title>我的第一個(gè)JavaApplet程序</title></head>
<body>
<p><appletcode=HelloWorld.classwidth=300height=200></applet>
</body>
</html>
(3)檢查無(wú)誤后把文件命名為Page1.htm,保存在與文件HelloWorld.java同一目錄下。
(4)直接雙擊這個(gè)HTML文件的圖標(biāo),或者打開(kāi)Web瀏覽器(例如IE),在地址欄中鍵入這個(gè)HTML文件的全路徑名,查看Applet在瀏覽器中的運(yùn)行結(jié)果。
(5)利用模擬的Applet運(yùn)行環(huán)境解釋運(yùn)行這個(gè)JavaApplet程序并觀察運(yùn)行結(jié)果。進(jìn)入DOS環(huán)境,在程序所在目錄下運(yùn)行下面的命令:
appletviewerPage1.htm
6.使用JDK幫助文檔。
在Windows中打開(kāi)JDK文檔目錄,雙擊indexhtml文件,或者在Web瀏覽器的地址欄中輸入這個(gè)文件的路徑名,打開(kāi)這個(gè)文件對(duì)應(yīng)的網(wǎng)頁(yè),查閱相關(guān)內(nèi)容。B.
JBuilder2006集成開(kāi)發(fā)環(huán)境
一、實(shí)訓(xùn)目的
1.學(xué)習(xí)安裝JBuilder2006集成開(kāi)發(fā)環(huán)境。
2.掌握集成開(kāi)發(fā)環(huán)境(IDE)的概念,了解并學(xué)習(xí)使用JBuilder2006開(kāi)發(fā)環(huán)境的基本構(gòu)成和功能。
3.了解“項(xiàng)目”的概念,掌握利用JBuilder2006開(kāi)發(fā)并編譯運(yùn)行、修改及調(diào)試JavaApplication和JavaApplet的過(guò)程。
二、實(shí)訓(xùn)內(nèi)容
1.安裝JBuilder
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年版綜合性勞動(dòng)合同樣本
- 建筑租賃銷售合同范本
- 農(nóng)村建房簽合同范本
- 大車駕校合同范本
- 2025版知名合同之居間合同
- 項(xiàng)目鋼材供應(yīng)合同范本
- 廚房包廚合同范本
- 2025學(xué)校食堂、小賣部承包合同書(shū)
- 景區(qū)游樂(lè)設(shè)施合同范本
- 2025合同法中合同試用期相關(guān)規(guī)定
- 6G多維度切片QoS保障-洞察及研究
- 2025-2026學(xué)年外研版(三起)(2024)小學(xué)英語(yǔ)四年級(jí)上冊(cè)教學(xué)計(jì)劃及進(jìn)度表
- 2025年安徽國(guó)控集團(tuán)所屬企業(yè)招聘7人筆試備考題庫(kù)及答案解析
- 2025年海南省警務(wù)輔助人員招聘考試(公共基礎(chǔ)知識(shí))歷年參考題庫(kù)含答案詳解(5套)
- 城市道路清掃保潔協(xié)議
- 人教版二年級(jí)上冊(cè)數(shù)學(xué)全冊(cè)教學(xué)設(shè)計(jì)(配2025年秋新版教材)
- 2025年醫(yī)學(xué)檢驗(yàn)在編考試題庫(kù)
- 特色食品賣場(chǎng)建設(shè)方案(3篇)
- 2025年書(shū)法級(jí)考試題及答案
- 子宮癌肉瘤護(hù)理查房
- 鄉(xiāng)村產(chǎn)業(yè)融合發(fā)展路徑與振興策略研究
評(píng)論
0/150
提交評(píng)論