1. 程式人生 > >Java程式開發與執行環境

Java程式開發與執行環境

JDK環 境

        Java不僅提供了一個豐富的語言和執行環境,而且還提供了一個免費的Java開發工具集(Java Developers Kits,簡稱JDK)。程式設計人員和終端使用者可以利用這個工具來開發java程式或呼叫Java內容。JDK包括以下工具:
javac                                                             Java語言編譯器,輸出結果為Java位元組碼
java                                                               Java位元組碼直譯器
javap                                                             Disassembeler Java位元組碼分解程式,本程式返回Java程式的成員變數及方法等資訊。
javaprof                                                         資源分析工具,用於分析Java程式在執行過程中呼叫了哪些資源,包括類和方法的呼叫次數和時間,以及各資料型別的記憶體使用情況等。
javah                                                             C程式碼處理工具,用於從Java類呼叫C++程式碼
java Applet Viewer                                         小應用程式瀏覽工具,用於測試並執行Java小應用程式
java Debugger                                                 API Java除錯工具
API Prototype Debugger                                 Java除錯工具原型

Java開發環境還包括Java類庫(包括I/O類庫、使用者介面類庫、網路類庫等)和HotJava WWW 瀏覽器。其中,HotJava瀏覽器提供了在WWW環境下執行Java程式碼的一個執行系統,而且還為WWW開發人員提供了一個Java開發框架。Java直譯器是面向Java程式的一個獨立執行系統,它可以一種穩定、高效能方式執行那些獨立於平臺的Java位元組碼,Java編譯器則用於生成這些位元組碼。

Java程式的編譯

Java程式的編譯程式是javac.exe。javac命令將Java程式編譯成位元組碼,然後你可用java直譯器java命令來解釋執行這個Java位元組碼。Java程式原始碼必須存放在後綴為.java的檔案裡。Java程式裡的每一個類,javac都將生成與類相同名稱但字尾為.class檔案。編譯器把.class檔案放在.java檔案的同一個目錄裡,除非你用了-d選項。當你引用到某些自己定義的類時,必須指明它們的存放目錄,這就需要利用環境變數引數CLASSPATH。環境變數CLASSPATH是由一些被分號隔開的路徑名組成。如果傳遞給javac編譯器的原始檔裡引用到的類定義在本檔案和傳遞的其它檔案中找不到,則編譯器會按CLASSPATH定義的路徑來搜尋。例如:

CLASSPATH = .;C:/java/classes 則編譯器先搜尋當前目錄,如果沒搜尋到,則繼續搜尋C:/java/classes目錄。注意,系統總是將系統類的目錄預設地加在CLASSPATH後面,除非你用-classpath選項來編譯。javac_g 是一個用於除錯的未優化的編譯器,功能與用法和javac一樣。javac的用法如下:

javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-d dir] file.java...

以下是每個選項的解釋。

選項解釋:

-classpath path 定義javac搜尋類的路徑。它將覆蓋預設的CLASSPATH環境變數的設定。路徑是由一組由逗號隔開的路徑名組成,一般格式如下:.;<your_path> 例如:.;C:/java/doc/classes;C:/tools/java/classes 表示編譯器遇到一個新類,它先在本檔案中查詢它的定義,如果沒有,則在本檔案所處目錄下其它檔案中查詢它的定義,如果還沒有,則繼續搜尋C:/java/doc/classes目錄中的所有檔案,以此類推。

-d directory 指明類層次的根目錄,格式如下:

javac -d <my_dir> MyProgram.java

這樣將MyProgram.java程式裡的生產的.class檔案存放在my_dir目錄裡。

-g 帶除錯資訊編譯,除錯資訊包括行號與使用java除錯工具時用到的區域性變數資訊。如果編譯沒有加上-O優化選項,只包含行號資訊。

-nowarn 關閉警告資訊,編譯器將不顯示任何警告資訊。

-O 優化編譯static,final,private函式,注意你的類檔案可能更大。

-verbose  讓編譯器與直譯器顯示被編譯的原始檔名和被載入的類名。

環境變數

CLASSPATH 用來提供給系統搜尋使用者定義的類的預設路徑。各路徑由分號隔開,例如:

.;C:/java/doc/classes;C:/tools/java/classes 表示編譯器遇到一個新類,它先在本檔案中查詢它的定義,如果沒有,則在本檔案所處目錄下其它檔案中查詢它的定義,如果還沒有,則繼續搜尋C:/java/doc/classes目錄中的所有檔案,以此類推。

Java程式的除錯使用java偵錯程式

jdb導遊

在早期前Betal版的Java偵錯程式jdb是命令列形式的,如用Sun公司的dbx偵錯程式。用jdb來除錯Java應用程式,在除錯前,要確證你的應用程式是帶標誌-g編譯的。例如:javac -g HelloWorld.java

help命令將顯示jdb 裡的可用命令列表。

>help <命令列表>
threads [threadgroup]——列出執行緒
thread <thread id>——設定預設執行緒
Suspend [threads id(s)]——將執行緒掛起
resume [thread id(s)]——重新啟動執行緒
where [id] |a1|——列印執行緒的堆疊
threadgroups——列出執行緒組號
threadgroup <name>——設定當前執行緒組
print <id> [id(s)]——列印物件或域
dump <id> [id(s)]——列印所有物件資訊
locals——列印當前堆疊所有區域性變數
classes——列出當前所知的類
methods <class id>——列出一個類的成員函式
stop in <classid>.<method>——在一個成員函式裡設定斷點
stop at <class.id>:<line>——在一行裡設定斷點
up [n frames]——線上程堆疊裡往上移
down [n frames]——線上程堆疊裡往下移
clear <class id>:<line>——清除一個斷點
step ——執行當前行
cont——從斷點處繼續執行
catch <class.id>——為指定的情況中斷
ignor <class.id>——為指定的情況忽略
list [line number]——列印源程式
use [Sourcefile path]——顯示或改變源路徑
memeory——報告記憶體使用情況
load classname——載入Java類以便除錯
run <args>——開始執行載入的類 

Java程式的執行

java - java語言直譯器java命令解釋java位元組碼

語法: java [ options ] classname <args> java_g [ options ] classname <args>

描述: java命令由java編譯器javac輸出的Java位元組碼。

classname引數是要執行的類名稱。注意任意在類名稱後的引數都將傳遞給要執行類的main函式。

java執行完main函式後推出,除非main函式建立了一個或多個執行緒。如果main函式建立了其它執行緒,java總是等到最後一個執行緒推出才推出。

選項:

-cs, -checksource 當一個編譯過的類調入時,這個選項將比較位元組碼更改時間與原始檔更改時間,如果原始檔更改時間靠後,則重新編譯此類並調入此新類。

-classpath path 定義javac搜尋類的路徑。它將覆蓋預設的CLASSPATH環境變數的設定。路徑是由一組由逗號隔開的路徑名組成,一般格式如下:.;<your_path> 例如:.;C:/java/doc/classes;C:/tools/java/classes 表示直譯器遇到一個新類,它先在本檔案中查詢它的定義,如果沒有,則在本檔案所處目錄下其它檔案中查詢它的定義,如果還沒有,則繼續搜尋C:/java/doc/classes目錄中的所有檔案,以此類推。

-mx x 設定最大記憶體分配池,大小為x,x必須大於1000bytes。預設為16兆。

-ms x 設定垃圾回收堆的大小為x,x必須大於1000bytes。 預設為1兆。

-noasyncgc 關閉非同步垃圾回收功能。此選項開啟後,除非顯式呼叫或程式記憶體溢位,垃圾記憶體都不回收。本選項不開啟時,垃圾回收執行緒與其它執行緒非同步同時執行。

-ss x 每個Java執行緒有兩個堆疊,一個是java程式碼堆疊,一個是C程式碼堆疊。-ss選項將執行緒理C程式碼用的堆疊設定成最大為x。

-oss x 每個Java執行緒有兩個堆疊,一個是java程式碼堆疊,一個是C程式碼堆疊。-oss選項將執行緒理java程式碼用的堆疊設定成最大為x。

-v, -verbose 讓java直譯器在每一個類被調入時,在標準輸出列印相應資訊。

環境變數

CLASSPATH 用來提供給系統搜尋使用者定義的類的預設路徑。各路徑由分號隔開,例如:

.;C:/java/doc/classes;C:/tools/java/classes 表示直譯器遇到一個新類,它先在本檔案中查詢它的定義,如果沒有,則在本檔案所處目錄下其它檔案中查詢它的定義,如果還沒有,則繼續搜尋C:/java/doc/classes目錄中的所有檔案,以此類推。

JWS環 境

Java WorkShop是SUN公司的一個新產品,它是一個整合的java語言開發環境,它包括以下工具:

Portfolio 和Project管理器 、原始檔編輯器 、Build管理工具、偵錯程式、專案測試、擴充套件線上超文字連線到幫助檔案

這些工具在Java WorkShop的第一頁都有類似Web頁面的超級連線。

注意,Java WorkShop採用的是當今瀏覽器的介面風格,你想作什麼,只需找到相應的超級連線就可以了,具體編譯及除錯功能是用嵌入到HTML文件裡的Applet實現的,因此,對習慣於用internet瀏覽方式的使用者來說,這種介面很容易接受。

Portfolio 和Project管理器

Protfolios是一些應用程式或Applet的集中。它讓你更好的管理更多的projects。一個project是portfolio裡的一個子集,它包含了以下資訊:

1、怎樣編譯本專案
2、怎樣除錯和瀏覽本專案
3、怎樣執行本專案
4、怎樣釋出本專案

原始檔編輯器

原始檔編輯器可以從build管理器、偵錯程式和原始檔瀏覽器裡的超級連線進入。在這個模組裡,你可以輸入原始檔。

Build管理工具

本模組是專案的編譯器,你可以點build按鈕直接進入本模組,如果某個檔案出錯,錯誤資訊會提供一個超級連線,直接指到出錯的原始檔地點。

Visul Java(圖形介面構造)

顧名思義,本模組能讓你視覺化建造一個複雜介面,如果你用過Visual Basic,你會發現它們很相似。

偵錯程式

偵錯程式能讓你很方便地跟蹤程式的執行與發現程式的錯誤。

小結:

Java語言有兩個開發環境,一個是免費的JDK,是命令列方式的。還有一個Java WorkShop,是開發java程式的整合環境。簡要介紹了它們的使用方法。