一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

第三章 Java的簡單程序和開發(fā)工具

 ShangShujie 2007-05-27

第三章 Java的簡單程序和開發(fā)工具

  Java的程序分為兩類:可獨(dú)立解釋執(zhí)行的應(yīng)用程序(Application)和需放入HTML文件中依靠瀏覽器顯示結(jié)果的Applet。在Java的開發(fā)工具包JDK(Java Developer‘s Kit)環(huán)境中能方便地編譯、運(yùn)行和調(diào)試這兩種程序。這一章將給出應(yīng)用程序Application和Applet最簡單的程序示例,同時(shí)對(duì)JDK及其使用進(jìn)行介紹。

3.1 Java應(yīng)用程序Application

  和其它語言一樣,Java可用于創(chuàng)建獨(dú)立的應(yīng)用程序,稱為Application。所謂獨(dú)立,是相對(duì)于Applet對(duì)瀏覽器的依賴而言。實(shí)際上它的執(zhí)行離不開JDK中的編譯器Javac和解釋器java。
讓我們來考察若干完整而簡單的Java應(yīng)用程序,通過它們來了解Java應(yīng)用程序的結(jié)構(gòu)和特點(diǎn)。
例3.1
1  /* WelcomeApp.java */
2  import java.lang.System;
3  class WelcomeApp{
4    public static void main(String args[]){
5      System.out.println("Welcome to Java World!");
6    }
7  }
這是一個(gè)十分簡單且完整的Java應(yīng)用程序。運(yùn)行結(jié)果,將在屏幕上顯示出:
Welcome to Java World!
已經(jīng)掌握了C和C++語言的人會(huì)發(fā)現(xiàn)Java的程序結(jié)構(gòu)看上去與C語言的形式很相似。這正Java語言設(shè)計(jì)時(shí)追求的目標(biāo)之一:讓多數(shù)程序員覺得熟悉親 切,從而容易被接受。接下來我們逐行解釋這一程序段。
程序的第1行是/*和*/標(biāo)記的注釋,給出程序的文件名WelcomeApp.java。在Java中所有的程序源文件名后綴必須是Java。第2行 通過關(guān)鍵字import引入了在程序外部定義的類System,它是在包java.lang中定義的,因而引入時(shí)必須指出完整的路徑:
import java.lang.System;
這樣可以告訴編譯器在編譯源碼時(shí),將Java.lang中有關(guān)System類的內(nèi)容調(diào)入使用。其中java.lang是Java的21個(gè)包之一,這些 包提供了大量可重用的類和方法,方便程序員編寫實(shí)用的程序。也可以使用如下語句一次性調(diào)入lang包中的所有類和方法:
import java.lang.*;
幾乎在所有Java程序的開頭,都有一個(gè)或幾個(gè)import語句。
第3行聲明了一個(gè)名為WelcomeApp的類。作為面向?qū)ο蟮恼Z言,Java要求所有的變量和方法都必須封裝在一定的類(class)或接口 (interface)中。類和接口就是Java程序構(gòu)作的基礎(chǔ),也是進(jìn)行編譯和運(yùn)行的程序單位。本例中WelcomeApp類的聲明缺省了繼承關(guān)系的說 明。在Java中缺省父類說明意味著新聲明的類是對(duì)象類(Object)的一個(gè)子類。而通常完整的類聲明格式應(yīng)為:
[類修飾符] class 類名 [extends 父類名] {變量及方法}
第4至7行是類WelcomeApp的類體定義部分。該部分通常用花括號(hào)“{”和“}”起止,包括變量和方法聲明。例3.1的WelcomeApp類 中沒有定義變量,僅定義了一個(gè)方法,被聲明為
public static void main(String args[])
public表明這個(gè)方法是可被公開訪問的;void表明該方法無返回值;Static表明這是一個(gè)類方法。main是這個(gè)方法的名稱,組成方法的具體語 句也必須由花括號(hào)將它們與其它方法和變量分隔開。main方法是一個(gè)特殊的方法,它是每一個(gè)應(yīng)用程序所必須的。是應(yīng)用程序解釋執(zhí)行的入口,必須聲明為類方 法,必須帶有字符串?dāng)?shù)組類型的參數(shù),但參數(shù)名可以任意。
如若省略main方法的聲明,解釋器將在執(zhí)行時(shí)給出出錯(cuò)提示:
void main(String argv[]) is not defined
(未定義void main(String argv[]方法)
這里的argv是編譯系統(tǒng)缺省使用的參數(shù)名,實(shí)際用戶可以用任意名稱代替。
程序第5行main方法的唯一語句調(diào)用了System類中的out變量的println方法,以實(shí)現(xiàn)最終的屏幕顯示:
System.out.println("Welcome to Java World!");
println帶有一個(gè)字符串參數(shù),用來指定輸出。由于已經(jīng)在程序一開始給出import調(diào)用要求,因而這里可以直接使用類System的變量和方法。
編好一個(gè)Java應(yīng)用程序后,上機(jī)運(yùn)行步驟如下:
(1)編輯。在編輯窗口中輸入并存成后綴為.java的文件,其中文件名必須與定義的應(yīng)用程序類名一致。如例3.1的程序應(yīng)存為WelcomApp.java文件。
(2)編譯。在有效的目錄下輸入如下的命令行:
javac 文件名.java
即可啟動(dòng)編譯器。所謂有效的目錄是指設(shè)定好所需的編譯連接和調(diào)用類庫路徑的目錄。當(dāng)出現(xiàn)這方面的問題時(shí),可在DOS窗口下使用set path和set classpath命令修改和增加路徑設(shè)定,也可以增加javac的參數(shù),這在本章第三節(jié)會(huì)加以介紹。編譯通過后,將自動(dòng)生成程序中新聲明的類文件。如例 3.1的程序成功編譯的結(jié)果是生成新文件WelcomeApp.class。
(3)解釋運(yùn)行。同樣通過輸入如下的命令行:
java 類名
就可以啟動(dòng)解釋器java執(zhí)行程序。需要注意的是,這里的類名不是編譯產(chǎn)生的文件全名,需要去掉后綴.class,下面兩種寫法是不同的:
(正確)java WelcomeApp
(錯(cuò)誤) java WelcomeApp.class
后者將無法正確執(zhí)行并給出出錯(cuò)信息:
Can‘t find class WelcomeApp.class.class
因?yàn)榻忉屍鱦ava會(huì)輸入的名字整個(gè)作為類名,自動(dòng)加上.class后綴搜索類庫。

3.2 Applet

在這一節(jié)中,我們將介紹Java程序的另一種類型:Applet。Applet無法通過解釋器解釋執(zhí)行,而必須放入一個(gè)HTML文件中,再通過 appletviewer或支持Java的瀏覽器顯示執(zhí)行。HTML(HyperText Markup Language)是一種用于編寫網(wǎng)絡(luò)頁面的專用語言。對(duì)希望通過Internet網(wǎng)絡(luò)來傳送理想頁面的人來說,Applet是極度其有用的工具。它提供 了大量控制頁面外觀和處理交互事件的便利工具,能大大提高頁的生動(dòng)性和交互性。下面我們將給出一個(gè)與例3.1實(shí)現(xiàn)相似功能的Applet程序,并逐行加以 解釋。
例3.2
1 /* Welcome.java as Applet */
2 import java.awt.Graphics;
3 public class Welcome extenes java.applet.Applet{
4  public void init(){
5   resize(350,150);
6 ?。?br> 7  public void paint(Graphics g){
8   g.drawString("Welcome to Java World!",50,25);
9  }
10 }

  與例3.1類似,程序的第1行是以/*和*/標(biāo)記的注釋,給出程序的文件名Welcome.java。第2行是import語句,引用了Java的awt包(Abstract Windowing Toolkit)的Graphics類:
import java.awt.Graphics;
awt包在Applet中常被引用以控制所定義的Applet的顯示。
程序的第3行定義了一個(gè)Applet類的子類Welcome:
public class Welcome extends java.applet.Applet
與例3.1展示的應(yīng)用程序定義不同的是,所有的applet都是從基類java.applet.Applet派生出來的子類,因而聲明時(shí)都需要明確寫這一繼承關(guān)系:
class Applet 類名 extends java.applet.Applet
例3.2的程序定義了兩個(gè)方法。第4至6行是init方法。在init方法中語句
resize(350,150);
將Applet的窗口尺寸定為350象素×150象素大小,第7至9行定義paint方法。它帶有一個(gè)參數(shù)g。g是圖形類(Graphics)的實(shí)例對(duì) 象,它是由父類Applet有關(guān)處理圖形對(duì)象的方法傳遞過來的。當(dāng)Welcome被要求顯示時(shí),paint方法就會(huì)被激活調(diào)用。其中的語句
g.drawString("Welcome to Java World!",50.25);
實(shí)現(xiàn)的功能 是在窗口上坐標(biāo)為(50,25)處顯示出給定字符串:
Welcome to Java World!
與Java的應(yīng)用程序相同,一個(gè)編輯好的Applet源文件應(yīng)當(dāng)存儲(chǔ)成后綴為.java的文件,然后再通過javac編譯器編譯,成功后生成后綴為. class的類文件。然而這樣的類文件是不能像應(yīng)用程序一樣借助解釋器(interpreter) 直接運(yùn)行的,因?yàn)樵次募袥]有定義main方法作為解釋器執(zhí)行的入口。用java運(yùn)行這樣的類文件將得到出錯(cuò)信息:
void main(String arvg[]) is not defined
(未定義void main(String argv[]方法)
因此我們要看到Applet的運(yùn)行情況必須經(jīng)過以下的步驟:
(1)將Applet謝謝HTML文件中。與一般的HTML文件相比,這樣的HTML文件新添加了<applet>和< /applet>標(biāo)記來指明應(yīng)當(dāng)在何外裝入一個(gè)Applet。裝入的Applet還可附帶有運(yùn)行時(shí)的參數(shù),每一個(gè)參數(shù)都用一條< apram...>語句來指明。通常最簡單的格式是
<applet code="Applet類文件名" width=寬度值 height=長度值>
{<param name=參數(shù)名 value=參數(shù)值}
我們把例3.2創(chuàng)建的Applet放入一個(gè)HTML文件中,編寫成Welcome.html文件,它就當(dāng)具有下面的形式:
1 <HTML>
2 <HEAD>
3 <TITLE>Example:Welcome to Java world!</TITLE>
4 </HEAD>
5 <BODY>
6 Welcome Everybody:
7 <applet code="Welcome.class" width=350 height=150></applet>
8 <BODY>
9 </HTML>
整個(gè)文件共九行,第1行和第9行分別是HTML文件的固定起止標(biāo)志<HTML>和</HTML>。第2行至第4行為以 <HEAD>和</HEAD>標(biāo)記的文件頭部分,其中第3行的<TITLE>標(biāo)記給出該文件的標(biāo)題,將顯示在網(wǎng)絡(luò)頁 面窗口最上方的標(biāo)題欄上。第5行起為文件的休部分,<BODY>標(biāo)記。體部分的內(nèi)容將顯示在文件對(duì)應(yīng)構(gòu)造的網(wǎng)絡(luò)頁面中。在例3.3中,體部分 包括字符串<Welcome Everybody:>和以<applet>標(biāo)記的一個(gè)Applet:
<applet code="Welcome.class" width=350 height=50></applet>
這個(gè)Applet的類文件為Welcome,顯示寬度為350象素,長度為150象素。
(2)通過appletviewer或?yàn)g覽器來顯示結(jié)果。appletviewer是JDK提供的Applet顯示器,使用時(shí)只需輸入命令行:
appletviewer HTML 文件名
將會(huì)彈出一個(gè)Applet Viewer窗口,展示出指定的HTML文件中包含的Applet的內(nèi)容。圖3.1就是使用appletviewer顯示W(wǎng)elcome.html文件的結(jié)果。
細(xì)心的讀者會(huì)發(fā)現(xiàn)圖3.1中的Applet Viewer窗口沒有顯示W(wǎng)elcome.html在<BODY>部分定義的句子“Welcome Everybody:”,也沒有顯示<TITLE>部分定義的標(biāo)題。這是因?yàn)閍ppletviewer是JDK提供的一個(gè)比較簡單的工具,它 的主要功能是方便Applet的測試,因而是不顯示HTML文件中除了Applet之外的內(nèi)容。當(dāng)我們使用支持Java的瀏覽器如Hot Java和Netscape 3.0時(shí),才能展示出整個(gè)HTML文件的內(nèi)容。圖3.2是使用Netscape 3.0顯示W(wǎng)elcome.html文件的結(jié)果。
這一次我們就能看到整個(gè)HTML文件的內(nèi)容了,其中以灰色為底色的方框即為Welcome.class代表的Appet。使用瀏覽器的方法也很簡單, 只需要在瀏覽器的地址欄(如Netscape的Location,Hot Java的Document URL等)中取得HTML文件的有效路徑,如圖3.2中Netscape窗口所示。
這樣就完成了Java的一個(gè)編寫運(yùn)行的過程。最后為了方便裝入Appet的HTML文件的編寫,給出HTML文件中<applet...>標(biāo)記段的詳盡格式和說明。
<applet
codebase=applet類的URL址 可缺省,給出applet類文件所在URL
code=applet類文件名    不可缺省,給出應(yīng)裝入的類文件名
alt=正文文字        可缺省,當(dāng)瀏覽器無法處理相應(yīng)Java程序時(shí),
輸出定義的正文文字作為替代
name=applet名       可缺省,用于同一頁中不同applet間的交互
width=寬度值        不可缺省,給出applet所需的象素寬度
height=高度值       不可缺省,給出applet所需的像素的高度
align=位置參數(shù)       可缺省,告知瀏覽器如何排列applet
vspace=豎直空白      可缺省,給出applet與其它頁面內(nèi)容間留出的豎直空白
hspace=水平空白      可缺省,給出applet與其它頁面內(nèi)容間留出的水平空白
>

3.3 Java開發(fā)工具包

  在前兩節(jié)介紹Java的應(yīng)用程序和Applet的編寫運(yùn)行進(jìn)程時(shí),我們已經(jīng)提到Java的編譯器javac、解釋器java以及Applet顯示器appletviewer的簡單使用。這三者實(shí)際上都是Java提供的開發(fā)工具包JDK(Java Developer‘s Kit)的組成部分。這一節(jié)我們將完整地了解JDK的組成和使用。
提供JDK目的是為程序開發(fā)者提供編寫、測試、執(zhí)行程序的一套完備的工具體系??傮w說來,JDK由下面的七個(gè)部分組成:
javac編譯器
java解釋器
appletviewer applet顯示器
jdb 調(diào)試器(debugger)
javap 分解器
javadoc 文檔生成器
javah C語言頭文件生成器
■編譯器javac將源文件轉(zhuǎn)換成可執(zhí)行文件,這些可執(zhí)行文件就是以.class后綴的字節(jié)碼文件。
■解釋器java執(zhí)行編譯成功后生成的字節(jié)碼文件。在字節(jié)碼下載和執(zhí)行過程中,解釋器負(fù)責(zé)維護(hù)它的完整性、正確性和安全性。
■Applet顯示器appletviewer展示W(wǎng)eb頁面中包含的Applet,通常用于Applet開發(fā)過程中的測試。
■調(diào)試器jdb也可執(zhí)行字節(jié)碼,同時(shí)提供置斷點(diǎn)中斷執(zhí)行和顯示變量值等功能,是查找程序錯(cuò)誤的有效工具。
■分解器javap將字節(jié)碼分解還原成源文件。對(duì)于從Web上獲取的無法得到源文件的類,分解器是十分有用的。
■文檔生成器javadoc自動(dòng)生成指定的范圍內(nèi)的Java軟件文檔,內(nèi)容包括Java源文件中的類、變量、方法、接口、例外(exception)等。
■C語言頭文件生成器javah用以從Java的字節(jié)碼上生成C語言的頭文件和源文件,所生成的文件用于開發(fā)我們在后面要介紹的“源生方法”(native method)。
要使用這些JDK工具,首先需要在命令路徑(path)中加入工具程序所在的工作目錄,通常中JDK環(huán)境下的\bin子目錄。例如假設(shè)目前JDK存放在C:\Java目錄下,則命令行
set path=C:\Java\bin;
將正確設(shè)置命令路徑。若未設(shè)置好路徑而試圖使用JDK工具,將得到錯(cuò)誤信息:
Bad command or file name
(錯(cuò)誤命令或文件名)
下面將對(duì)這些工具逐一進(jìn)行介紹說明,重點(diǎn)是javac、java和appletviewer。

  3.3.1 編譯器

  編譯器javac對(duì)后綴為.java的源文件進(jìn)行翻譯轉(zhuǎn)換,生成后綴為.class的可執(zhí)行的類文件。使用編譯器的標(biāo)準(zhǔn)格式為
javac [選項(xiàng)] 源文件名
編譯過程中要解決的一個(gè)重要問題是如何將程序中需要使用而又在程序外定義的類裝入源碼,這通常是利用引入外部包來實(shí)現(xiàn)的。類路徑名(classpath) 則用來指明到何外去搜索所引用的包和類。設(shè)定需要的類路徑名的命令行格式為
set CLASSPATH=路徑名(對(duì)應(yīng)Windows系列)
set CLASSPATH 路徑名(對(duì)應(yīng)UNIX系列)
需要指出的是,使用set classpath及類似命令設(shè)定的類路徑名不但對(duì)編譯器有效,對(duì)JDK中的其它工具也同樣有效。例如命令行
set CLASSPATH=.;C:\java;C:\java\lib\classes.zip
將告知JDK中的所有工具使用當(dāng)前目錄(.)、C:\java目錄以及C:\java\lib目錄下的classes.zip文件作為尋找Java類的基 本路徑。沒有正確設(shè)定類路徑名,編譯時(shí)將得到錯(cuò)誤信息:
Can‘t find class XXX
(無法找到指定類XXX)
javac還可以帶有某些特定的選項(xiàng),主要包括:
■-classpath
這是設(shè)定編譯器類路徑名的另一種方法,使用時(shí)在-classpath后加上選定的類路徑。不同的是用-classpath選項(xiàng)設(shè)定的類路徑是暫是的,只適用于當(dāng)前被編譯的文件。
■-d
通常編譯生成的類文件放在被編譯的源文件所在目錄中,使用-d選項(xiàng)后編譯器將把類文件改放在-d后指定的目錄中。
■-g
Java調(diào)試工具需要在類文件中加入額外的幫助信息,通常是有關(guān)行數(shù)的信息。使用-g選項(xiàng)后就可以再添加有關(guān)局部變量的信息。
■-O
使用-O選項(xiàng)將優(yōu)化程序的執(zhí)行速度,同時(shí)付出的代價(jià)是文件所占空間的增大,這對(duì)要求傳送速度較高的程序,如Applet,是不利的。
■-nowarn
使用-nowarn選項(xiàng)將關(guān)閉編譯器給出的警告信息,這些警告信息是編譯器針對(duì)程序中能編譯通過但存在潛在錯(cuò)誤的部分提出的。
■-verbose
使用-verbose模式將顯示編譯器工作的詳細(xì)信息,譬如將給出編譯的源文件名,列出為了編譯這個(gè)源文件載入的類文件名。
■-deprecation
當(dāng)使用比現(xiàn)有JDK版本陳舊的API編程,如編程使用的類和方法屬性JDK1.0版,而編譯使用的JDK為1.1版,則選擇該選項(xiàng)會(huì)給出對(duì)應(yīng)的“過時(shí)”方法警告信息。
=================================
資料(來自其他材料,不是本教程的內(nèi)容)
■ javac的用法
這里所說的javac是指java程序的編譯器,是JDK包中的一個(gè)文件,文件名是javac.exe,在JDK包的bin目錄下。
Javac的命令格式如下:
javac [options] filename.java …
javac_g [options] filename.java …
javac命令將源代碼編譯成java字節(jié)碼,java字節(jié)碼由java解釋器java解釋執(zhí)行。Java的源代碼文件必須以.java結(jié)尾,在源代 碼文件中定義的每個(gè)類在javac中是獨(dú)立的編譯單元,它們在編譯時(shí)相互之間不會(huì)有影響。Javac將每個(gè)類編譯后的字節(jié)碼存放在 classname.class的文件中,如果java程序中包含了多個(gè)類,則java將生成多個(gè)class文件,每個(gè)class文件中只存入一個(gè)類的字 節(jié)碼,其文件名與類名相同,除非在javac命令中定義了-d選項(xiàng)。
可以使用CLASSPATH指定類的位置,CLASSPATH是一組由分號(hào)隔開的用來指定路徑的目錄組成,當(dāng)傳給javac的源代碼文件引用類沒有在 這些文件中定義時(shí),javac將從CLASSPATH定義的類路徑中尋找引用類,如:
.;\users\dac\classes
注意,系統(tǒng)總是將系統(tǒng)類的位置加到類路徑的后面,除非使用了-classspath選項(xiàng)指定一個(gè)路徑。
Javac_g是javac為了適應(yīng)像jdb這樣的調(diào)試器的一個(gè)非優(yōu)化版本。
Javac命令行選項(xiàng)
-classpath path
指定javac用來尋找類的路徑,它將置換隱含的和CLASSPATH環(huán)境變量中的設(shè)置,目錄之間用分號(hào)隔開,路徑的一般格式為:
.;<your_path>
例如:
.;\user\avh\classes;\jdk\classes
-d directory
定義產(chǎn)生class層次的根目錄,如下面命令;
javac -d <my_dir> MyProgram.java
由MyProgram.java產(chǎn)生的.class文件將被放在目錄my_dir下。
-g
產(chǎn)生調(diào)試表。調(diào)試表中包含有行號(hào)和局部變量的信息,這些信息由調(diào)試工具使用,默認(rèn)情況下,當(dāng)-O選項(xiàng)被置上時(shí),僅產(chǎn)生行號(hào)信息。
-nowarn
關(guān)閉警告信息。如果使用此選項(xiàng),編譯器將不輸出任何警告信息。
-O
通過嵌入static、final和private方法優(yōu)化編譯代碼。將優(yōu)化程序的執(zhí)行速度,此時(shí),生成的類文件可能大一些,這對(duì)要求傳送速度較高的程序,如applet,是不利的。
-verbose
使編譯器、裝配器打印出源代碼文件、字節(jié)代碼類文件的有關(guān)信息。
-deprecation
當(dāng)使用比現(xiàn)有JDK版本陳舊的API編程,如編程使用的類和方法屬于JDK1.0版,而編譯使用的JDK為1.1版,則選擇該選項(xiàng)會(huì)給出對(duì)應(yīng)的“過時(shí)”方法警告信息。
Javac支持通配符 如:
javac *.java
javac的缺省選項(xiàng)值尚不清楚,如哪位知道,不妨帖出來。
=============================
附:javac可能的命令選項(xiàng)
■標(biāo)準(zhǔn)格式:
javac <選項(xiàng)> <源文件>
■可能的選項(xiàng)包括:
-g 生成所有調(diào)試信息
-g:none 生成無調(diào)試信息
-g:{lines,vars,source} 生成只有部分調(diào)試信息
-O 優(yōu)化;可能妨礙調(diào)試或者增大類文件
-nowarn 生成無警告
-verbose 輸出關(guān)于編譯器正在做的信息
-deprecation 輸出使用了不鼓勵(lì)使用的API的源程序位置
-classpath <路徑> 指定用戶類文件的位置
-sourcepath <路徑> 指定輸入源文件的位置
-bootclasspath <路徑> 覆蓋自舉類文件的位置
-extdirs <目錄(多個(gè))> 覆蓋安裝的擴(kuò)展類的位置
-d <目錄> 指定輸出類文件的位置
-encoding <編碼> 指定源文件中所用的字符集編碼
-target <版本> 生成指定虛擬機(jī)版本的類文件

  3.3.2 解釋器

  解釋器java執(zhí)行編譯產(chǎn)生的后綴為.class的類文件。使用解釋器的命令行格式為:
java [選項(xiàng)] 類名 [參數(shù)]
被解釋執(zhí)行的類中必須有且僅有一個(gè)有效的main方法,相當(dāng)于C和C++中的main函數(shù)。而上述命令行中所帶的參數(shù)將在執(zhí)行時(shí)傳遞給相應(yīng)類的main方 法。java也可以帶上一定的選擇項(xiàng),主要有以下幾種:
■-classpath
這個(gè)選項(xiàng)的作用與javac中同名選項(xiàng)的作用相同,可以暫時(shí)改變Java的搜索類路徑。
■-cs或-checksource
使用這兩個(gè)選項(xiàng)中的任一個(gè),將在執(zhí)行指定類文件之前,檢查初始源文件在最近一次編譯后有無改動(dòng)。如果改動(dòng)過,則選重新編譯源文件,然后解釋執(zhí)行。
■-verify
-noverify
-verifyremote(缺省選項(xiàng))
這是一組有關(guān)檢驗(yàn)的選項(xiàng)。其中使用-verify,解釋器獎(jiǎng)檢驗(yàn)所有字節(jié)碼;使用-noverify,解釋器將不檢驗(yàn)任何字節(jié)碼;使用- verifyremote,解釋器將通過類下載器在字節(jié)碼下載時(shí)檢驗(yàn)。這一檢驗(yàn)包括對(duì)字節(jié)碼的安全性、完整性以及正確性的驗(yàn)證。這樣做的好處是提高執(zhí)行的 可靠性,而缺點(diǎn)則是增加了執(zhí)行時(shí)間。
■-noasyncgc
Java的“廢區(qū)收集”,勝于回收內(nèi)存,是一個(gè)獨(dú)立的、低優(yōu)先級(jí)的后臺(tái)線程,與其它程序“異步”執(zhí)行,也就是說當(dāng)其它線程不要求執(zhí)行時(shí),才執(zhí)行“廢區(qū) 收集”。使用-noasyncgc可以關(guān)閉這一異步自動(dòng)執(zhí)行的“廢區(qū)收集”,而只允許程序調(diào)用或因運(yùn)行系統(tǒng)缺乏內(nèi)存而調(diào)用。這一選項(xiàng)通常使用于內(nèi)存緊張而 在程序中直接調(diào)用“廢區(qū)收集”的情況。
■-verbosegc
使用該選項(xiàng)后,每次執(zhí)行廢區(qū)收集釋放一個(gè)對(duì)象所占內(nèi)存空間時(shí),都將給出提示信息,用于監(jiān)督廢區(qū)收集的進(jìn)行。
■-v或-verbose
與javac的同名選項(xiàng)相同,將給出所有執(zhí)行指定類文件時(shí)裝入的類名。
■-debug
預(yù)備啟動(dòng)jdb,詳見3.3.4節(jié)。
■-help
給出java使用的選項(xiàng)名或作用說明。

  3.3.3 Applet顯示器

  Java的Applet顯示器appletviewer用于運(yùn)行并測試程序員開發(fā)的Applet。使用appletviewer的格式為:
appletviewer [選項(xiàng)] URL
其中URL是包含被顯示Applet的HTML文件的通用源定位(Universal Resource Locator)。當(dāng)HTML文件位于本地機(jī)上時(shí),只需寫出文件名。
appletviewer可帶一的唯一選項(xiàng)是-debug。使用這一選項(xiàng)可顯示指定Applet,同時(shí)使用調(diào)試器jdb檢驗(yàn)并調(diào)試Applet。
下面我們來說明使用appletviewer產(chǎn)生的Applet Viewer窗口的基本功能。以第二節(jié)中使用appletviewer顯示例3.3的Welcome.html文件彈出的窗口為例,用鼠標(biāo)在窗口左上角的 Applet上點(diǎn)擊,彈出一個(gè)下拉菜單,如圖3.3所示。
其中主要選項(xiàng)完成的功能如下:
■Restart  重新運(yùn)行裝入的Applet。
■Reload   重新裝入Applet,適用于前次裝入后,類文件有改動(dòng)的情況。
■Clone   拷貝生成與現(xiàn)存Applet viewer窗口相同的新窗口。
■Tag    顯示HTML文件中用于啟動(dòng)的<applet>標(biāo)記段內(nèi)容。
■Info   提供有關(guān)Applet的信息。
■Properities 顯示并允許設(shè)置appletviewer的特性,見圖3.3的窗口所示。

  3.3.4 調(diào)試器

  Java調(diào)試器jdb用于監(jiān)督檢測Java程序的執(zhí)行。jdb的調(diào)用有兩種方法:一種方法是直接調(diào)用,格式為:
jdb 類文件名
這時(shí)調(diào)試器激活解釋器裝入類文件,然后在任何實(shí)際執(zhí)行前解釋器又將控制權(quán)轉(zhuǎn)回交給調(diào)試器。調(diào)試器命令行可用以給解釋器傳遞參數(shù)。第二種方法是在某個(gè) Java程序的執(zhí)行過程中啟動(dòng)jdb。首先用java執(zhí)行某類文件,只是加上-debug選項(xiàng),格式為:
java -debug 類文件名
然后解釋器將顯示用于啟動(dòng)調(diào)試器的口令,如
Agent password=口令!
稍后可以對(duì)正在運(yùn)行的類程序使用口令啟動(dòng)jdb,
jdb -password 口令!
這樣該程序?qū)⒈粧炱?,控制?quán)轉(zhuǎn)給調(diào)試器。jdb還可調(diào)試不在本機(jī)上運(yùn)行的程序,所需輸入命令為
jdb -host 運(yùn)行機(jī)器名 -password 口令
調(diào)試器jdb對(duì)線程的調(diào)試檢測尤其有用,因而我們將在第五章有關(guān)線程的介紹中詳細(xì)闡述。

  3.3.5 分解器

  Java的分解器javap將經(jīng)編譯生成的字節(jié)碼分解,給出指定類中成員變量和方法的有關(guān)信息。使用格式為:
javap [選項(xiàng)] 類名
其中類名無.class后綴,它的用途在于:當(dāng)用戶從網(wǎng)上下載了某可執(zhí)行的類文件而又無法取得源碼時(shí),對(duì)類文件加以分解,能迅速了解該類的組成結(jié)構(gòu),以便更好的理解和使用。
javap可帶的選項(xiàng)不多,其中較重要的有:
■-c
給出指定類實(shí)際編譯生成的字節(jié)碼。
■-h
生成可放入C語言文件的代碼。
■-verbose
顯示棧的大小、局部變量個(gè)數(shù)和方法參數(shù)信息。

  3.3.6 文檔生成器

  Java的文檔生成器javadoc接受源文件(后綴為.java)輸入,然后自動(dòng)生成一個(gè)HTML文件,描述源文件的軟件結(jié)構(gòu),給出有關(guān)的類、變量和方法的信息。Sun公司使用它生成了Java的應(yīng)用程序編程接口API(Application Programming Interface)文檔。javadoc的使用格式有下面三種:
javadoc [選項(xiàng)] 包名
javadoc [選項(xiàng)] 類名
javadoc [選項(xiàng)] 源文件名
javadoc命令可帶選項(xiàng)包括-classpath和-d,其含義和作用都與前面在編譯器和解釋器中提到的相同。除此之外較重要的選項(xiàng)還有:
■-noindex
省略包(package)的索引。
■-notree
省略類和接口的層次樹顯示。
■-sourcepath路徑名
指出分析的源文件的搜索路徑,與類文件搜索路徑classpath不同,且互不影響。
有關(guān)javadoc的具體使用和示例,請查閱本書第十章Applet的有關(guān)章節(jié)。

  3.3.7 C語言頭文件生成器

  Java的C語言頭文件生成器javah產(chǎn)生C語言的類文件和源文件,這些文件用來在Java的類中融入C語言的源生方法。使用javah的格式為:
javah [選項(xiàng)] 類名
注意,javah與解釋器java一樣,接受類名(無.class后綴)而非類文件名(有.class后綴)。javah可一次輸入不止一個(gè)類名。它所帶的選項(xiàng)主要有:
■-o<輸出文件名>
該選項(xiàng)指示javah把生成的所有結(jié)果文件放在同一個(gè)輸出指定的輸出文件中。
■-td<臨時(shí)目錄名>
該選項(xiàng)指示javah將生成過程中產(chǎn)生的臨時(shí)文件放入指定的臨時(shí)目錄中。不使用該選項(xiàng)時(shí),這些臨時(shí)文件缺省地放在名為tmp的目錄中。
■-stubs
使用該選項(xiàng),javah將生成C語言的存根文件(stubfiles)。
有關(guān)源生方法和相關(guān)javah的使用,將在第十三章給出詳細(xì)的介紹。

本章小結(jié)

這一章我們介紹了Java的兩類程序Application和Applet的基本構(gòu)架,并分別給出了最簡單的程序?qū)嵗pplication是指無需 放入HTML文件中,無需依賴瀏覽器,只需Java解釋器就可獨(dú)立執(zhí)行的Java應(yīng)用程序。Applet是指無需通過解釋器執(zhí)行,而要放入一個(gè)HTML文 件中依靠瀏覽器顯示結(jié)果的程序。在最后一節(jié)中,又簡略說明了JDK的組成和使用。通過這一章的學(xué)習(xí),讀者應(yīng)當(dāng)對(duì)Java程序有了最基本的概念。以下各章將 在此基礎(chǔ)上逐漸深入的講述Java的面向?qū)ο筇攸c(diǎn)、多線程機(jī)制、異常處理等方面的內(nèi)容。
從這一章開始,讀者可以在計(jì)算機(jī)上運(yùn)行書中的示例程序,還可以試著從模仿開始,自己編制相關(guān)的Java程序,相信通過實(shí)踐能夠進(jìn)一步鞏固和提高書本中學(xué)到的內(nèi)容。
最后要提醒讀者注意的是,由于Java語言本身還處在不斷發(fā)展之中,JDK所提供工具的種類和功能也將隨之不斷擴(kuò)充和修改完善。讀者在具體使用時(shí),應(yīng)參閱更為詳盡的有關(guān)文檔。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    成人免费在线视频大香蕉 | 日本午夜免费福利视频| 欧洲自拍偷拍一区二区| 久久精品国产熟女精品| 久热人妻中文字幕一区二区| 91人妻人人揉人人澡人| 婷婷亚洲综合五月天麻豆| 日韩精品视频高清在线观看| 超碰在线播放国产精品| 免费观看一区二区三区黄片| 亚洲欧美日韩网友自拍| 亚洲中文字幕在线视频频道| 在线免费视频你懂的观看| 亚洲一区二区三区免费的视频| 观看日韩精品在线视频| 九九热在线视频精品免费| 日韩黄色一级片免费收看| 亚洲精品蜜桃在线观看| 97人妻人人揉人人躁人人| 精品人妻久久一品二品三品| 日韩精品福利在线观看| 国产精品一区二区高潮| 亚洲国产精品久久琪琪| 日本午夜一本久久久综合| 久久这里只精品免费福利| 亚洲深夜精品福利一区| 国内真实露脸偷拍视频| 国产成人av在线免播放观看av| 欧美日韩亚洲国产综合网| 九九视频通过这里有精品| 一级欧美一级欧美在线播| 日韩欧美一区二区亚洲| 亚洲五月婷婷中文字幕| 欧美午夜伦理在线观看| 欧美一级内射一色桃子| 激情五月天深爱丁香婷婷| 国产三级不卡在线观看视频| 日韩精品免费一区二区三区| 中文文精品字幕一区二区 | 欧美一区日韩一区日韩一区| 亚洲专区一区中文字幕|