




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2Java編程環(huán)本章重點(diǎn)在于Java虛擬機(jī)的概念和J2SDK的使用。本章首先介紹了JavaSunJ2SDK開(kāi)發(fā)工具,并且給JavaJava語(yǔ)言程序開(kāi)發(fā)的直觀認(rèn)識(shí),最后本章介紹了J2SDK工具包提供的程序調(diào)試器。JavaJavaJ2SDKJavaApplicationJava 運(yùn)行環(huán)境和開(kāi)發(fā)環(huán)境正如前文所言,Java語(yǔ)言是先編譯后解釋的。Java源程序首先被編譯成字節(jié)碼文件,然JavaJavaJava虛擬機(jī),Java虛擬機(jī)在各種Java虛擬機(jī)是一個(gè)虛擬機(jī)器,在實(shí)際的計(jì)算機(jī)上通過(guò)軟件模擬來(lái)實(shí)現(xiàn)。Java虛擬機(jī)有avaJava入JavaJava語(yǔ)言在不同平臺(tái)上運(yùn)行并不需要重新編譯。Javaava虛擬機(jī)了與具體平臺(tái)相關(guān)的信息,使得Java語(yǔ)言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼,就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。Java虛擬機(jī)是Java語(yǔ)言底層實(shí)現(xiàn)的基礎(chǔ),對(duì)Java語(yǔ)言感的人都應(yīng)對(duì)Java虛擬機(jī)Java最基本的開(kāi)發(fā)工具是Sun公司發(fā)布的Java開(kāi)發(fā)工具Java2SDKJava2SDK是免費(fèi)軟件,可以通過(guò)h 或其它取得J2Sdk。另外還有一些其他公司也實(shí)現(xiàn)了Java的開(kāi)發(fā)工具如IBM的JDK等。大型的集成開(kāi)發(fā)環(huán)境軟件有BorlandJBuilder等,這些軟件提供了完整的Java開(kāi)發(fā)環(huán)境和可視化的開(kāi)發(fā)。Java源程序可以用任何文本編輯器來(lái)編寫(xiě)。然后用Java2SDK的javac編譯生成擴(kuò)展class的字節(jié)碼文件。用java程序運(yùn)行它。對(duì)于初學(xué)者,最好不要使用Jbuilder等集成的編譯等過(guò)程,這對(duì)于初學(xué)者對(duì)Java語(yǔ)言的熟悉了理解是不利的,所以建議初學(xué)者使用一般的編輯器和Sun的Java2SDK進(jìn)行Java的學(xué)習(xí)。JDK:SunJavaJDK(JavaDevelopmentKitJRE:即Java運(yùn)行環(huán)境JRE(JavaRuntimeEnvironment。Sun的Java上就提供Java2SDK和JRE各種版本的。Java2SDK是用于開(kāi)發(fā)Java程序所用,而應(yīng)用程序的最Java的運(yùn)行時(shí)環(huán)境。JREJava程序要運(yùn)行開(kāi)發(fā)環(huán)境的安裝和Java語(yǔ)言前,必須安裝一套Java語(yǔ)言的開(kāi)發(fā)平臺(tái)。SunJava2SDK是人們最常使用的Java語(yǔ)言開(kāi)發(fā)工具。本小節(jié)將介紹對(duì)Java2SDK開(kāi)發(fā)工具的安裝和使用進(jìn)行詳Java2SDKSun免費(fèi)提供開(kāi)發(fā)工具Java2SDK,提供Windows、JavaDesktopSystem(linux)、SolarisSparc三種版本,IBMAIX、HPHP-UX、MacOSX、BSD等,都有兼容于標(biāo)準(zhǔn)Java2SDK的java2SDK。Java2SDK主要包括以下工具:javac:JavaJavajava:Javajavap:JavaJava程序的成員變量及方法等信息。javah:C代碼處理工具,用于從Java類(lèi)調(diào)用C++代碼。appletviewer:小應(yīng)用程序?yàn)g覽工具,用于測(cè)試并運(yùn)行Java小應(yīng)用程序。JavaJava程序的一個(gè)獨(dú)立運(yùn)行系統(tǒng),它以一種穩(wěn)定、高性能方式運(yùn)行,是獨(dú)立于平臺(tái)的Java字節(jié)碼。Java編譯器javac則用于生成這些字節(jié)碼。Java2SDKWindows版本的Java2SDK可以在SUN公司的Java主頁(yè)h 的安裝文件是一個(gè)可執(zhí)行文件。運(yùn)行這個(gè)文件,按照安裝程序的指導(dǎo),很容易就能把Java2SDK安裝上。安裝完畢之后,需要設(shè)置兩個(gè)環(huán)境變量:PATH和CLASSPATH。這兩個(gè)變量在Windows98和Windows2000(WindowsXP、Windows2003)下的設(shè)置方法不同。為了便于說(shuō)明,假設(shè)Java2SDK的安裝路徑是D:\USR\j2sdk1.4.2\bin。Windows98autoexec.batsetPATH=%PATH%;setCLASSPATH=.\;D:\USR\j2sdk1.4.2\lib\; D:\USR\j2sdk1.4.2\lib\dt.jar;D:\USR\j2sdk1.4.2\lib\tools.jar;第一行的作用是把D:\USR\j2sdk1.4.2\bin目錄加到系統(tǒng)路徑下,如果裝在 中則應(yīng)寫(xiě)成E:\j2sdk1.4.2\bin,第二行的作用是設(shè)定Java2SDK的CLASS路徑。autoexec.bat,設(shè)置才會(huì)生效,Win98啟動(dòng)時(shí)會(huì)自Windows2000、WindowsXPWindows2003,則應(yīng)該按以下步驟MyComputer(我的電腦)選中Properties(屬性),在屬性框上選擇Advanced(高級(jí))一項(xiàng)2-1添加環(huán)境變此時(shí)環(huán)境變量中已經(jīng)有 一項(xiàng),首先單擊選中,然后點(diǎn)擊Edit(編輯在彈出的EditUserVariable(編輯用戶(hù)變量)框中的VariableValue(變量值)Java2SDK2-22-2path變?cè)凇碍h(huán)境變量”框中單擊New(新建)按鈕,在彈出的NewUserVariable(新建用戶(hù)變量)框的VariableName(變量名)一項(xiàng)中填入CLASSPATH,在“變量值”2-3單擊確
2-3CLASSPATH變echo看看classJava2SDK的使在Java2SDK開(kāi)發(fā)工具包中,要經(jīng)常使用的兩個(gè)工具是:javac和java,javacJavajava則用于運(yùn)行編譯好的字節(jié)碼。下面分別對(duì)它們進(jìn)行詳細(xì)的介編譯器Javajavac.exe。javacJavajava解釋器來(lái)解釋執(zhí)行這些Java字節(jié)碼。Java程序源代碼必須存放在后綴為.java的文件里。對(duì)于Java程序里的每一個(gè)類(lèi),javac都將生成與類(lèi)名稱(chēng)相同但后綴為.class的文件。編譯器把.class文件放在.java文件的同一個(gè)里,除非用了-d選項(xiàng)。當(dāng)?shù)侥承┳约憾x的類(lèi)時(shí),必須指明它們的存放,這就需要利用環(huán)境變量參數(shù)CLASSPATH,CLASSPATH的設(shè)定方法javacjavac<options><source-classpathpathjavacCLASSPATH環(huán)境變量的設(shè)置。.;<your_path>。例如:.;C:\java\doc\classes;C:\tools\java\classes表示編譯器遇到一個(gè)新類(lèi),它先在本文件中查 下其他文件中查找它的定義,如果還沒(méi)有,則繼續(xù)搜索C:\java\doc\classes -d<directory>指明類(lèi)層次的 javac-d<my_dir>這樣將MyProgram.java程序里的生產(chǎn)的.class文件存放在 -gJava調(diào)試工具時(shí)用到的局部變量信息。如果編譯沒(méi)有加上-O優(yōu)化選項(xiàng),則只包含行號(hào)信息。- 關(guān)閉警告信息,編譯器將不顯示任何-Ostatic、final、private- 解釋器javaJavaJava字節(jié)碼進(jìn)行解釋。Javajava[-options]classjava-jar[-options]jarfile描述:javajavajavacJavaclassname參數(shù)是要執(zhí)行的類(lèi)名稱(chēng)。注意,任意在類(lèi)名稱(chēng)后的參數(shù)都將傳遞給要執(zhí)行類(lèi)的main函數(shù)。javamainmainmain函數(shù)創(chuàng)建了其他線(xiàn)程,則java總是等到最后一個(gè)線(xiàn)程退出才退出。-classpathpathjavac中-classpath-verbosejava編輯器Java語(yǔ)言之前最好選擇一個(gè)好的編輯器。好的編輯器能夠有效的幫助我們進(jìn)行代碼輸入,讓我們專(zhuān)著于語(yǔ)言本身的學(xué)習(xí)。下面介紹兩個(gè)優(yōu)秀的編輯器。UltraeditUltraEdit是一套功能強(qiáng)大的文本編輯器,適合于編輯文字、Hex、ASCII碼。Ultraedit可以對(duì)Java、C等語(yǔ)言的關(guān)鍵字進(jìn)行顯示??赏瑫r(shí)編輯多個(gè)文件,支持在多個(gè)文件中進(jìn)行查找,支持正則表達(dá)式。同時(shí),Ultraedit可以集成javac、java等Java2SDK工具,使得JavaUltraedit中進(jìn)行。也就是說(shuō),Ultraedit完全可以配置成一個(gè)簡(jiǎn)單Ultraedit2-42-4Ultraedit界EmacsEacs是Unix下一個(gè)非常優(yōu)秀的編輯器,而且已經(jīng)移植到indows平臺(tái)。Emcs僅僅看作一個(gè)編輯器,Eacs所提供的不僅是一個(gè)編輯器,它所提供的是一個(gè)整合的工作環(huán)境,而這個(gè)環(huán)境是建立在編輯的基石上。一般的軟件都是將編輯器視為一個(gè)附屬功能,只有Eacs以編輯器為基石,在其上發(fā)展其它的功能。如,Eacs完成可以配置成一個(gè)具有自動(dòng)代碼補(bǔ)全,語(yǔ)法顯示,集編輯、編譯、運(yùn)行、查錯(cuò)為一體的集成開(kāi)發(fā)環(huán)境。Emacs通過(guò)lisp來(lái)進(jìn)行功能擴(kuò)展,因?yàn)镋macs擁有大量的用戶(hù),Emacs也有著大量的它來(lái)寫(xiě)Java程序是非常得心應(yīng)手的。Emacs2-5所示,如果你不喜歡它的顏色,你完全可以自己配置成其他的2-5Emacs界Java程序的結(jié)在介紹完Java語(yǔ)言的開(kāi)發(fā)環(huán)境和編輯器的選擇后,下面讓我們來(lái)看看一個(gè)Java程序 oWorld.java文件中。 o,World!"的應(yīng)用程public staticStringstr=" o,World!";publicstaticvoidmain(String[]args){ //顯 }}這個(gè)序用cass定的個(gè)oorld類(lèi),pubc指明這是一個(gè)公共類(lèi),一個(gè)Java程序中可以定義多個(gè)類(lèi),但最多只能有一個(gè)公共類(lèi)。存放公共類(lèi)的文件名必須和公共類(lèi)的名字一致。oWorld中有一個(gè)String類(lèi)型的類(lèi)變量和一個(gè)main()方法,所有的Java應(yīng)用程序(Application)main()方法,Java解釋器沒(méi)有生成任何實(shí)例時(shí),main()是程序運(yùn)行的。main()方法必須用public、void、static來(lái)修飾。main(它用來(lái)實(shí)現(xiàn)字符串的輸出,這條語(yǔ)句實(shí)C語(yǔ)言printf語(yǔ)句C++cout<<語(yǔ)args[]是傳遞 main()方法的參數(shù)“/*”和“*/”之間的內(nèi)容的注釋?zhuān)?**”和“*/java編譯時(shí)被編譯器忽略,這和“/*…*/”一樣,在用javadoc生成文檔的時(shí)候,“/**”和“*/”的文字會(huì)被 javac o,importjava.awt.*;importjava.applet.*;public oWorldAppletextends{publicvoidg){g.drawString o}}這是一個(gè)簡(jiǎn)單的Applet(小應(yīng)用程序)。程序中,首先用import語(yǔ)句輸入java.awt和 oWorldApplet,用extends指明它是Applet的子類(lèi)。在類(lèi)中,我們重寫(xiě)父類(lèi)Applet的paint()方法,其中參數(shù)g為Graphics類(lèi),它表明當(dāng)前作畫(huà)的上下文。在paint()方法中,調(diào)用g的方法drawString(),在坐標(biāo)(20,20)處輸出字符串“ oWorld!”,其這個(gè)程序中沒(méi)有實(shí)現(xiàn)main()方法,這是Applet與應(yīng)用程序Application的區(qū)別之一。為了運(yùn)行該程序,首先我們也要把它放在文件oWorldApplet.java中,然后對(duì)它進(jìn)行編譯: 得到字節(jié)碼文件oWorldApplet.class。由于Applet中沒(méi)有main()方法作為Java解釋器的,須編寫(xiě)HTML文件,把該Applet嵌入其中,然后用appletviewer來(lái)運(yùn)行,或在支持Java的瀏覽器上運(yùn)行。它的<HTML>文件如下:<TITLE>AnApplet<applet oWorldApplet.class"width=200其中用<Applet>標(biāo)記來(lái)啟動(dòng)oWorldApplet,code指明字節(jié)碼所在的文件,widthheightappletHTMLExample.htmlD:\>appletviewer這時(shí)屏幕上彈出一個(gè)窗口,其中顯示oWorld!,顯示結(jié)果如圖2-5所示2-6Java從上述兩個(gè)例子中可以看出,Java程序是由類(lèi)構(gòu)成的,對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),必須有一個(gè)類(lèi)中定義main()AppletApplet一個(gè)子類(lèi)。在類(lèi)的定義中,應(yīng)包含類(lèi)變量的和類(lèi)中方法的實(shí)現(xiàn)。Java在基本數(shù)據(jù)類(lèi)型、運(yùn)算符、表達(dá)式、控制語(yǔ)句等方面與C、C++基本上是相同的,但它同時(shí)也增加了一些新的內(nèi)容,在以后的各章中會(huì)有詳細(xì)的介紹。本節(jié)中的例子只是使大家對(duì)Java程序有一個(gè)初步的了解。程序調(diào)Java2SDK提供了一個(gè)名為jdb的調(diào)試工具,jdb令行選項(xiàng)如下jdb[options][class]其中,class是開(kāi)始調(diào)試的類(lèi)的名稱(chēng)。argumentsclass的main()Javajdb用于調(diào)試Java類(lèi)。它利用Java調(diào)試程序API來(lái)檢查和調(diào)試本地或Java解釋器。jdbjdbJava解釋器。這可以通過(guò)在命令行中用命令jdb代替java來(lái)做到。例如,要在jdb下啟動(dòng)D:\>jdbD:\>jdb-classpath$INSTALL_DIR/classes采用這種方法啟動(dòng)時(shí),jdb用指定參數(shù)來(lái)調(diào)用另一個(gè)Java解釋器,加載指定的類(lèi)并在使用jdb的第二種方法是將它附接到某個(gè)已在運(yùn)行的ava解釋器上。出于安全方面用-Xdebug選項(xiàng)來(lái)啟動(dòng)ava用-Xdebug選項(xiàng)啟動(dòng)ava解釋器時(shí),ava解釋器將輸出一口令供db使。外,試的釋決不能用JIT編譯器來(lái)運(yùn)行。用 pier=NONE選項(xiàng)來(lái)JIT編譯器的加載。專(zhuān)門(mén)的調(diào)試程序類(lèi)必須能為調(diào)試后的解釋器所使用。這些類(lèi)不是缺省運(yùn)行環(huán)境類(lèi)庫(kù)的組成部分。用-Xbootclasspath;$INSALL_DIR\jre\lib\rt.jar;$INSALL_DIR\lib\tools.jar選項(xiàng)使調(diào)試后的解釋器能夠定位所有必需的類(lèi)??傊?,啟動(dòng)ava解釋器令如下: - -要將jdb附接到某個(gè)正在運(yùn)行的Java解釋器上(在知道了會(huì)話(huà)口令后),按如下命D:\>jdb-host<主機(jī)名>-password<口令下面列出的是基本的jdb命令。Java調(diào)試程序也支持某些其它命令,可用jdbhelp注意:要瀏覽局部(堆棧)變量,必須先用-ghelp或?:最重要的jdb命令,help命令列出可識(shí)別令及其簡(jiǎn)要說(shuō)明print:瀏覽Java對(duì)象。print命令調(diào)用對(duì)象的toString()方法,因此其輸出格式將根表示的java.lang.Threadprint支持Java表達(dá)式,如printMyClass.clsVar的java.lang.Thread。如果類(lèi)未被加載,則必須指定其全名,該類(lèi)將作為副作用加載。appletdump命令支持Java表達(dá)式,如dump0x threads:列出線(xiàn)程。線(xiàn)程由其對(duì)象標(biāo)識(shí)來(lái)where:不帶參數(shù)的where轉(zhuǎn)儲(chǔ)當(dāng)前線(xiàn)程的堆棧(用thread命令來(lái)設(shè)置whereall轉(zhuǎn)儲(chǔ)當(dāng)前線(xiàn)程組中所有線(xiàn)程的堆棧。where線(xiàn)程標(biāo)識(shí)轉(zhuǎn)儲(chǔ)指定線(xiàn)程的堆棧。線(xiàn)程標(biāo)識(shí)的形式為t@<索引>,如t@3。如果所請(qǐng)求的線(xiàn)程被掛起(由于位于斷點(diǎn)處或通過(guò)suspend命令來(lái)掛起)print和dump命令來(lái)瀏覽局部(堆棧)和實(shí)例變量。up和down命令用于斷點(diǎn):在jdb中可以在類(lèi)中設(shè)置斷點(diǎn),例如:stopatMyClass:45。必須指定源文件的行號(hào)或方法名(斷點(diǎn)此時(shí)設(shè)在該方法的第一個(gè)指令處。clear命令使用clearMyClass:45Class:45語(yǔ)法來(lái)刪除斷點(diǎn)。用不帶參數(shù)的clear命令可列出當(dāng)前設(shè)置的所有斷點(diǎn)。cont命令將使執(zhí)行繼續(xù)。用step命令可進(jìn)行單步操作。異常:當(dāng)發(fā)生異常而Java程序的堆棧之上又沒(méi)有捕獲這種異常的語(yǔ)句時(shí),Java運(yùn)行環(huán)境通常將轉(zhuǎn)儲(chǔ)該異常,然后退出。然而,在jdb下運(yùn)行時(shí),該異常被當(dāng)作不可恢復(fù)的斷點(diǎn)處理,jdb將停止在拋出異常的指令上。如果該類(lèi)是用-g選項(xiàng)編譯的,則可輸出實(shí)例可用catch命令捕捉一些特殊異常,例如:catchFileNotFoundException或catchmypackage.BigTroubleException。Java調(diào)試工具保留有這些異常的列表,當(dāng)其中的一種被拋出時(shí),則看作在拋出該異常的指令上有斷點(diǎn)。ignore命令將從該列表中刪除異常類(lèi)。注意:ignore命令不會(huì)使Java解釋器忽略特殊異常,它只使調(diào)試程序忽略它們。選項(xiàng):當(dāng)在命令行中用jdb取代Java解釋器時(shí),jdb接受的選項(xiàng)與java當(dāng)將jdb附接到正在運(yùn)行的Java解釋器會(huì)話(huà)上時(shí),jdb-host<主機(jī)名-password<口令-XdebugJava解釋器輸出環(huán)境變量:CLASSPATH用于為系統(tǒng)提供用戶(hù)定義類(lèi)的路徑
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)儲(chǔ)搬遷活動(dòng)方案
- 倉(cāng)庫(kù)春節(jié)活動(dòng)方案
- 仙林平安夜活動(dòng)方案
- 代縣餐飲活動(dòng)策劃方案
- 代賬公司引流活動(dòng)方案
- 以大帶小活動(dòng)方案
- 以茶會(huì)友活動(dòng)策劃方案
- 仲夏之夜活動(dòng)方案
- 企業(yè)七夕活動(dòng)策劃方案
- 企業(yè)親情服務(wù)日活動(dòng)方案
- 2024年慶陽(yáng)市交通投資建設(shè)集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 斯拉夫送行曲合唱簡(jiǎn)譜
- 巴蜀文化-知到答案、智慧樹(shù)答案
- 管材、管件包裝運(yùn)輸方案
- 勘察設(shè)計(jì)服務(wù)實(shí)施方案勘察設(shè)計(jì)方案質(zhì)量
- 工業(yè)污水處理廠項(xiàng)目經(jīng)濟(jì)效益和社會(huì)效益分析報(bào)告
- TCALC 003-2023 手術(shù)室患者人文關(guān)懷管理規(guī)范
- 臭氧發(fā)生器安全操作規(guī)程及維護(hù)保養(yǎng)
- 第16課《看病用藥有學(xué)問(wèn)》 課件
- 新上煉油廠商業(yè)計(jì)劃書(shū)
- 航攝應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論