




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 一 章 Java語 言 的 產(chǎn) 生 及 其 特 點1.1 Java產(chǎn) 生 的 歷 史 與 現(xiàn) 狀 1.1.1 Java產(chǎn) 生 的 歷 史 Java來 自于Sun公 司 的 一 個 叫Green的 項 目, 其 原 先 的 目 的 是 為 家 用 消費 電 子 產(chǎn) 品 開 發(fā) 一 個 分 布 式 代 碼 系 統(tǒng), 這 樣 我 們 可 以 把E-mail發(fā)給 電 冰 箱、 電 視 機 等 家 用 電 器, 對 它 們 進 行 控 制, 和 它 們進 行 信 息 交 流。 開 始
2、, 準 備 采 用C+,但C+太 復(fù) 雜, 安 全 性 差,最 后 基 于C+開 發(fā) 一 種 新 的 語 言O(shè)ak(Java的 前 身),Oak是 一 種 用于 網(wǎng) 絡(luò) 的 精 巧 而 安 全 的 語 言,Sun公 司 曾 依 此 投 標 一 個 交 互式 電 視 項 目, 但 結(jié) 果 是 被SGI打 敗。 可 憐 的Oak幾 乎 無 家 可 歸,恰 巧 這 時Mark Ardreesen開 發(fā) 的Mosaic和Netscape啟 發(fā) 了Oak項 目 組 成員, 他 們 用Java編 制 了HotJava瀏 覽 器, 得 到 了Sun公 司 首 席 執(zhí) 行官Scott McNealy的 支 持
3、, 觸 發(fā) 了Java進 軍Internet。 Java的 取 名 也 有一個趣 聞, 有 一 天, 幾 位Java成 員 組 的 會 員 正 在 討 論 給 這個 新 的 語 言 取 什 么 名 字, 當 時 他 們 正 在 咖 啡 館 喝 著Java(爪哇) 咖 啡, 有 一 個 人 靈 機 一 動 說 就 叫Java怎 樣, 得 到 了 其 他人 的 贊 賞, 于 是,Java這 個 名 字 就 這 樣 傳 開 了。 1.1.2 Java的 現(xiàn) 狀 Java是Sun公司
4、推 出 的 新 的 一 代 面 向 對 象 程 序 設(shè) 計 語 言, 特 別 適 合 于Internet應(yīng)用 程 序 開 發(fā), 它 的 平 臺 無 關(guān) 性 直 接 威 脅 到Wintel的 壟 斷 地 位。一 時 間,“ 連Internet, 用Java編 程”, 成 為 技 術(shù) 人 員 的 一 種 時尚。 雖 然 新 聞 界 的 報 導(dǎo) 有些言 過 其 實, 但Java作 為 軟 件 開發(fā) 的 一 種 革 命 性 的 技 術(shù), 其 地 位 已 被 確 立, 這 表 現(xiàn) 在 以 下幾 個 方 面: 1.計 算 機 產(chǎn) 業(yè) 的 許 多 大 公 司 購 買 了 Java的 許 可證, 包 括IBM
5、,Apple,DEC,Adobe,Silicon Graphics,HP,Oracel,Toshiba, 以 及最 不 情 愿 的Microsoft。 這 一 點 說 明,Java已 得 到 了 工 業(yè) 界 的 認可。 2.眾 多 的 軟 件 開 發(fā) 商 開 始 支 持Java的 軟 件 產(chǎn) 品。 例 如:Borland公司 正 在 開 發(fā) 的 基 于Java的 快 速 應(yīng) 用 程 序 開 發(fā) 環(huán) 境Latte, 預(yù) 計產(chǎn) 品 會 在1996年 中 期 發(fā) 布。Borland公 司 的 這 一 舉 措, 推 動 了Java進入PC機 軟 件 市場。Sun公 司 自 己 的Java開 發(fā) 環(huán) 境
6、Java Workshop已 經(jīng) 發(fā)布。 數(shù) 據(jù) 庫 廠 商 如:Illustra,Sysbase,Versant,Oracle都 在 開 發(fā)CGI接口, 支 持HTML和Java。 今 天 是 以 網(wǎng) 絡(luò) 為 中 心 的 計 算 時 代, 不 支持HTML和Java, 應(yīng) 用 程 序 的 應(yīng) 用 范 圍 只 能 限 于 同 質(zhì) 的 環(huán) 境(相同 的 硬 件 平 臺)。 3.Intranet正 在 成 為 企 業(yè) 信 息 系 統(tǒng) 最 佳的 解 決 方 案, 而 其 中Java將 發(fā) 揮 不 可 替 代 的 作 用。Intranet的目 的 是 把Internet用 于 企 業(yè) 內(nèi) 部 的 信
7、息 系 統(tǒng), 它 的 優(yōu) 點 表 現(xiàn)在: 便 宜, 易 于 使 用 和 管 理。 用 戶 不 管 使 用 何 種 類 型 的 機器 和 操 作 系 統(tǒng), 界 面 是 統(tǒng) 一 的Intrnet瀏 覽 器, 而 數(shù) 據(jù) 庫、Web頁面、 應(yīng) 用 程 序(用Java編 的Applet)則 存 在WWW服 務(wù) 器 上, 無 論 是 開發(fā) 人 員, 還 是 管 理 人 員, 抑 或 是 用 戶 都 可 以 受 益 于 該 解 決方 案。 Java語 言 正 在 不 斷 發(fā) 展 和 完 善,Sun公 司 是 主 要 的 發(fā) 展推 動 者, 較 通 用 的 編 譯 環(huán) 境 有JDK(Java Develop
8、 Kit)與JWS(Java Workshop)。還 有 很 多 其 他 公 司 正 在 開 發(fā)Java語 言 的 編 譯 器 與 集 成 環(huán) 境,預(yù) 計 不 久Java語 言 的 正 確 性 與 效 率 都 將 會 提 高, 用 戶 用Java編程 和 現(xiàn) 在 用C+編 程 一 樣 方 便。 1.2 Java語 言 的 特 點 Java到 底是 一 種 什 么 樣 的 語 言 呢? Java是 一 種 簡 單 的 面 象 對 象 的 分布 式 的 解 釋 的 健 壯 的 安
9、全 的 結(jié) 構(gòu) 中 立 的 可 移 植 的 性 能 很優(yōu) 異 的 多 線 程 的 動 態(tài) 的 語 言。 1.2.1 簡 單 Java最 初是 為 對 家 用 電 器 進 行 集 成 控 制 而 設(shè) 計 的 一 種 語 言, 因 此它 必 須 簡 單 明 了。Java語 言 的 簡 單 性 主 要 體 現(xiàn) 在 以 下 三 個方 面: 1. Java的 風(fēng) 格 類 似 于C+, 因 而C+程 序 員 是 非 常 熟 悉 的。從 某 種 意 義 上 講,Java語 言 是C及C+語
10、 言 的 一 個 變 種, 因 此,C+程序 員 可 以 很 快 就 掌 握Java編 程 技 術(shù)。 2. Java摒 棄 了C+中 容 易引 發(fā) 程 序 錯 誤 的 地 方, 如 指 針 和 內(nèi) 存 管 理。 3. Java提供了豐 富 的 類 庫。1.2.2 面 向 對 象 面 向 對象 可 以 說 是Java最 重 要 的 特 性。Java語 言 的 設(shè) 計 完 全 是 面 向?qū)?象 的, 它 不 支 持 類 似C語 言 那 樣 的 面 向 過 程 的 程 序 設(shè) 計技
11、術(shù)。Java支 持 靜 態(tài) 和 動 態(tài) 風(fēng) 格 的 代 碼 繼 承 及 重 用。 單 從 面向 對 象 的 特 性 來 看,Java類 似 于SmallTalk, 但 其 它 特 性、 尤 其是 適 用 于 分 布 式 計 算 環(huán) 境 的 特 性 遠 遠 超 越 了SmallTalk。1.2.3 分 布 式 Java包 括一 個 支 持HTTP和FTP等 基 于TCP/IP協(xié) 議 的 子 庫。 因 此,Java應(yīng) 用 程序 可 憑 借URL打 開 并 訪 問 網(wǎng) 絡(luò) 上 的
12、對 象, 其 訪 問 方 式 與 訪 問本 地 文 件 系 統(tǒng) 幾 乎 完 全 相 同。 為 分 布 環(huán) 境 尤 其 是Internet提供動態(tài) 內(nèi) 容 無 疑 是 一 項 非 常 宏 偉 的 任 務(wù), 但Java的 語 法 特 性 卻使 我 們 很 容 易 地 實 現(xiàn) 這 項 目 標。1.2.4 健 壯 Java致 力于 檢 查 程 序 在 編 譯 和 運 行 時 的 錯 誤。 類 型 檢 查 幫 助 檢 查出 許 多 開 發(fā) 早 期 出 現(xiàn) 的 錯 誤。Java自 已 操
13、縱 內(nèi) 存 減 少 了 內(nèi)存 出 錯 的 可 能 性。Java還 實 現(xiàn) 了 真 數(shù) 組, 避 免 了 覆 蓋 數(shù) 據(jù) 的可 能。 這種功 能 特 征 大 大 縮 短 了 開 發(fā)Java應(yīng) 用 程 序 的 周期。 Java提供: Null指 針 檢 測 數(shù) 組 邊 界 檢 測 異 常 出 口 字 節(jié)代 碼 校 驗 1.2.5 結(jié) 構(gòu) 中 立 另 外,為 了 建 立Java作 為 網(wǎng) 絡(luò) 的 一 個 整 體,Java將 它 的 程 序 編 譯 成一 種 結(jié) 構(gòu) 中 立 的 中
14、間 文 件 格 式。 只 要 有Java運 行 系 統(tǒng) 的 機器 都 能 執(zhí) 行 這 種 中 間 代 碼。 現(xiàn) 在,Java運 行 系 統(tǒng) 有Solaris2.4(SPARC),Win32系統(tǒng)(Windows95和Windows NT)等. Java源 程 序 被 編 譯 成 一 種 高 層 次 的與 機 器 無 關(guān) 的byte-code格 式 語 言, 這 種 語 言 被 設(shè) 計 在 虛 擬 機上 運 行, 由 機 器 相 關(guān) 的 運 行 調(diào) 試 器 實 現(xiàn) 執(zhí) 行。 1.2.6 安 全
15、0; Java的 安全 性 可 從 兩 個 方 面 得 到 保 證。 一 方 面, 在Java語 言 里, 象 指針 和 釋 放 內(nèi) 存 等C+功 能 被 刪 除, 避 免 了 非 法 內(nèi) 存 操 作。 另一 方 面, 當Java用 來 創(chuàng) 建 瀏 覽 器 時, 語 言 功 能 和 一?copy;瀏 覽器 本 身 提?copy;的 功 能 結(jié) 合 起 來, 使 它 更 安 全。 Java語 言 在你 的 機 器 上 執(zhí) 行 前, 要 經(jīng) 過 很 多 次 的 測 試。 它 經(jīng) 過 代 碼 校驗, 檢 查 代 碼 段 的 格 式, 檢 測 指 針 操 作, 對 象 操 作 是 否 過分
16、以 及 試 圖 改 變 一 個 對 象 的 類 型。 Byte-code校 驗 如 果byte-code通過 代 碼 校 驗, 沒 有 返 回 錯 誤, 我 們 可 知 道: 代 碼 沒 有 堆 棧上 溢 出 和 下 溢 出 所 有 操 作 代 碼 參 數(shù) 類 型 都 是 正 確 的 沒 有發(fā) 生 非 法 數(shù) 據(jù) 轉(zhuǎn) 換, 如 將 整 數(shù) 轉(zhuǎn) 換 成 指 針。 訪 問 對 象 操 作是 合 法 的 類 裝 載
17、; Class Loader通過 將 本 機 類 與 網(wǎng) 絡(luò) 資 源 類 的 名 稱 分 開, 來 保 持 安 全 性。 因為 調(diào) 入 類 時 總 要 經(jīng) 過 檢 查, 這 樣 避 免 了 特 洛 伊 木 馬 現(xiàn) 象的 出 現(xiàn)。 從 網(wǎng) 絡(luò) 上 下 載 的 類 被 調(diào) 進 一 個 與 源 相 關(guān) 的 私 有的 名 字 域。 當 一 個 私 有 類 訪 問 另 一 個 類 時,build-in(本 機 類)首先 被 檢 查, 然 后 檢 查 相 關(guān) 的 類。 這 樣 就 避 免 了 破 壞 本 機 類情 況 的 出
18、 現(xiàn)。 1.2.7 可 移 植 的 同 體 系結(jié) 構(gòu) 無 關(guān) 的 特 性 使 得Java應(yīng) 用 程 序 可 以 在 配 備 了Java解 釋 器和 運 行 環(huán) 境 的 任 何 計 算 機 系 統(tǒng) 上 運 行, 這 成 為Java應(yīng) 用 軟件 便 于 移 植 的 良 好 基礎(chǔ)。 但 僅 僅 如 此 還 不 夠。 如 果 基 本 數(shù)據(jù) 類 型 設(shè) 計 依 賴 于 具 體 實 現(xiàn), 也 將 為 程 序 的 移 植 帶 來 很大 不 便。 例 如 在Windows 3.1中 整 數(shù)(
19、Integer)為16bits, 在Windows 95中整 數(shù) 為32bits, 在DEC Alpha中 整 數(shù) 為64bits, 在Intel 486中 為32bits。通 過 定 義 獨 立 于 平 臺 的 基 本 數(shù) 據(jù) 類 型 及 其 運 算,Java數(shù) 據(jù)得 以 在 任 何 硬 件 平 臺 上 保 持 一 致。Java語 言 的 基 本 數(shù) 據(jù) 類型 及 其 表 示 方 式 如 下: byte 8-bit 二 進 制 補 碼 short 16-bit 二進 制 補 碼 int 32-bit 二 進 制 補 碼 long 64-bit 二 進 制 補 碼 float 32-bit I
20、EEE 754浮點 數(shù) double 32-bit IEEE 754浮點 數(shù) char 16-bit Unicode字符 在 任 何Java解釋 器 中, 數(shù) 據(jù) 類 型 都 是 依 據(jù) 以 上 標 準 具 體 實 現(xiàn) 的。 因 為 幾乎 目 前 使 用 的 所 有CPU都 能 支 持 以 上 數(shù) 據(jù) 類 型、864位 整 數(shù)格 式 的 補 碼 運 算 和 單/雙 精 度浮點 運 算。 Java編 譯 器 本 身 就 是用Java語 言 編 寫 的。Java運 算 系 統(tǒng) 的 編 制 依
21、 據(jù)POSIX方 便 移 植 的限 制, 用ANSI C語 言 寫 成。Java語 言 規(guī) 范 中 也 沒 有 任 何"同具 體 實 現(xiàn) 相 關(guān)"的 內(nèi) 容。 1.2.8 解 釋 的 Java解 釋器(運 行 系 統(tǒng))能 直 接 運 行 目 標 代 碼 指 令。 鏈 接 程 序 通 常 比編 譯 程 序 所 需 資 源 少, 所 以 程 序 員 可 以 在 創(chuàng) 建 源 程 序 上花 上 更 多 的 時 間。 1.2.9 高 性 能
22、 如 果 解釋 器 速 度 不 慢,Java可 以 在 運 行 時 直 接 將 目 標 代 碼 翻 譯 成機 器 指 令。Sun用 直 接 解 釋 器 一 秒 鐘 內(nèi) 可 調(diào) 用300,000個 過 程。翻 譯 目 標 代 碼 的 速 度 與C/C+的 性 能 沒 什 么 區(qū) 別。 1.2.10 多 線 程 Java提?copy;的多 線 程 功 能 使 得 在 一 個 程 序 里 可 同 時
23、執(zhí) 行 多 個 小 任 務(wù)。線 程 有 時 也 稱 小 進 程 是 一 個 大 進 程 里 分 出 來 的小 的 獨 立 的 進 程。 因 為Java實 現(xiàn) 的 多 線 程 技 術(shù), 所 以 比C和C+更鍵 壯。 多 線 程 帶 來 的 更 大 的 好 處 是 更 好 的 交 互 性 能 和 實時 控 制 性 能。 當 然 實 時 控 制 性 能 還 取 決 于 系 統(tǒng) 本 身(UNIX,Windows,Macintosh等),在 開 發(fā) 難 易 程 度 和 性 能 上 都 比 單 線 程 要 好。 任 何 用 過 當前 瀏 覽 器 的 人, 都 感 覺 為 調(diào) 一 副 圖 片 而 等 待 是
24、 一 件 很 煩惱 的 事 情。 在Java里, 你 可 用 一 個 單 線 程 來 調(diào) 一 副 圖 片, 而你 可 以 訪 問HTML里 的 其 它 信 息 而 不 必 等 它。 1.2.11 動 態(tài) Java的 動態(tài) 特 性 是 其 面 向 對 象 設(shè) 計 方 法 的擴展。 它 允 許 程 序 動態(tài) 地 裝 入 運 行 過 程 中 所 需 要 的 類, 這 是C+語 言 進 行 面 向 對象 程 序 設(shè) 計 所 無 法 實 現(xiàn) 的。 在C+程 序 設(shè) 計 過 程 中, 每
25、 當 在類 中 增 加 一 個 實 例 變 量 或 一 種 成 員 函 數(shù) 后, 引 用 該 類 的所 有 子 類 都 必 須 重 新 編 譯, 否 則 將 導(dǎo) 致 程 序 崩 潰。Java從 如下 幾 方 面 采 取 措施來 解 決 這 個 問 題。Java編 譯 器 不 是 將對 實 例 變 量 和 成 員 函 數(shù) 的 引 用 編 譯 為 數(shù) 值 引 用, 而 是 將符 號 引 用 信 息 在 字 節(jié) 碼 中 保 存 下 傳 遞 給 解 釋 器, 再 由 解釋 器 在 完 成 動 態(tài) 連 接 類 后, 將 符 號 引 用 信 息 轉(zhuǎn) 換 為 數(shù) 值偏 移 量。 這 樣, 一 個 在 存 儲
26、 器 生 成 的 對 象 不 在 編 譯 過 程 中決 定, 而 是 延 遲 到 運 行 時 由 解 釋 器 確 定 的。 這 樣, 對 類 中的 變 量 和 方 法 進 行 更 新 時 就 不 至 于 影 響 現(xiàn) 存 的 代 碼。 解釋 執(zhí) 行 字 節(jié) 碼 時, 這 種 符 號 信 息 的 查 找 和 轉(zhuǎn) 換 過 程 僅 在一 個 新 的 名 字 出 現(xiàn) 時 才 進 行 一 次, 隨 后 代 碼 便 可 以 全 速執(zhí) 行。 在 運 行 時 確 定 引 用 的 好 處 是 可 以 使 用 已 被 更 新 的類, 而 不 必 擔(dān) 心 會 影 響 原 有 的 代 碼。 如 果 程 序 連 接 了
27、網(wǎng) 絡(luò)中 另 一 系 統(tǒng) 中 的 某 一 類, 該 類 的 所 有 者 也 可 以 自 由 地 對該 類 進 行 更 新, 而 不 會 使 任 何 引 用 該 類 的 程 序 崩 潰。 Java還簡 化 了 使 用 一 個 升 級 的 或 全 新 的 協(xié) 議 的 方 法。 如 果 你 的系 統(tǒng) 運 行Java程 序 時 遇 到 了 不 知 怎 樣 處 理 的 程 序, 沒 關(guān) 系,Java能自 動 下 載 你 所 需 要 的 功 能 程 序。 1.3 與C和C+語 言 的 異 同
28、0;Java提供了一 個 功 能 強 大 語 言 的 所 有 功 能, 但 幾 乎 沒 有 一 點 含 混 特征。C+安 全 性 不 好, 但C和C+還 是 被 大 家 所 接 受, 所 以Java設(shè) 計成C+形 式, 讓 大 家 很 容 易 學(xué) 習(xí)。Java去 掉 了C+語 言 的 許 多 功能, 讓Java的 語 言 功 能 很 精 煉, 并 增 加 了 一些很 有 用 的 功能, Java去 掉 了 以 下 幾 個C和C+功 能 和 特 征: 指 針 運 算 結(jié) 構(gòu) typedefs #define 需 要 釋 放 內(nèi) 存 全 局 變 量 的 定 義 這種功 能 都 是 很容 易 引 起
29、 錯 誤 的 地 方。 1.4 Java的 應(yīng) 用 簡 介 1.4.1 Web瀏 覽 Web瀏 覽是 現(xiàn) 在 國 際 網(wǎng) 甚 至 局 域 網(wǎng) 的 主 要 使 用 方 式。 文 檔 能 很 容易 地 顯 示 文 本 和 各 種 圖 片, 他 還 能 提供超 文 本 鏈 接。 這些瀏覽 器 調(diào) 用HTML語 言 寫 的 文 檔,HTML/WWW瀏 覽 器 技 術(shù) 只 限 于 文 本和 圖 象。 如 果 你 想 播 放 一 種 聲 音 或 運 行 一 個 演 示 程 序, 你不 得
30、 不 下 載 那 個 文 件 并 用 你 本 機 上 的 能 理 解 和 運 行 那 個文 件 格 式 的 程 序 來 播 放 它。 Java程 序 和 它 的 瀏 覽 器HotJava,提供了 可 讓 你 的 瀏 覽 器 運 行 程 序 的 方 法。 你 能 從 你 的瀏 覽 器 里 直 接 播 放 聲 音。 你 還 能 播 放 頁 面 里 的 動 畫。Java還能 告 訴 你 的 瀏 覽 器 怎 樣 處 理 新 的 類 型 文 件。 當 我 們 能 在2400 baud線 上 傳 輸 視 頻 圖 象 時,HotJava將 能 顯 示 這些視 頻。 1.4.2 網(wǎng) 絡(luò) 應(yīng) 用 系 統(tǒng)
31、60; Java是 一種 與 平 臺 無 關(guān) 的 語 言, 因 此 用Java開 發(fā) 的 網(wǎng) 絡(luò) 應(yīng) 用 系 統(tǒng) 可以 在 各 種 平 臺 上 運 行, 大 大 增 加 了 開 發(fā) 效 率, 減 少 重 復(fù) 勞動。 而 且,Java集 成 的 網(wǎng) 絡(luò) 功 能充分 有 利 于 開 發(fā) 網(wǎng) 絡(luò) 應(yīng) 用系 統(tǒng)。 本 章 小 結(jié): 1.Java的產(chǎn) 生 與 流 行 是 當 今int
32、ernet發(fā) 展 的 客 觀 要 求 2.java是 一 門 各 方面 性 能 都 很 好 的 編 程 語 言, 它 的 基 本 特 點 是 簡 單、 面 象 對象、 分 布 式、 解 釋 的、健 壯 的、 安 全 的、 結(jié) 構(gòu) 中 立 的、 可 移植 的、 性 能 很 優(yōu) 異 的、 多 線 程 的、 動 態(tài) 的。?reg;分 適 合 在internet環(huán)境 上 開 發(fā) 應(yīng) 用 系 統(tǒng)。 3.java可 以 制 作 大 部 分 網(wǎng) 絡(luò) 應(yīng) 用 程 序系 統(tǒng), 而 且 與 當 今 流 行 的WWW瀏 覽 器 結(jié) 合 得 很 好。 第 二 章 Java程 序 開 發(fā) 與 運 行 環(huán) 境 2.1 J
33、DK環(huán) 境 Java不 僅 提供了 一 個 豐 富 的 語 言 和 運 行 環(huán) 境, 而 且 還提供了 一 個 免 費 的Java開 發(fā) 工 具 集(Java Developers Kits, 簡稱JDK)。 編 程 人 員 和 最 終 用 戶 可 以 利 用 這個工 具 來 開 發(fā)java程序 或 調(diào) 用Java 內(nèi) 容。JDK包 括 以 下 工 具: javac Java語 言 編 譯 器,輸 出 結(jié) 果 為Java字 節(jié) 碼 java, Java字 節(jié) 碼 解 釋 器 javap Disassembeler: Java字 節(jié) 碼 分 解 程 序, 本 程 序 返 回Java程 序 的 成
34、 員 變 量 及 方法 等 信 息。 javaprof 資 源 分 析 工 具, 用 于 分 析Java程 序 在 運 行過 程 中 調(diào) 用 了 哪些資 源, 包 括 類 和 方 法 的 調(diào) 用 次 數(shù) 和時 間, 以 及 各 數(shù) 據(jù) 類 型 的 內(nèi) 存 使 用 情 況 等。 javah C代 碼 處理 工 具, 用 于 從Java類 調(diào) 用C+代 碼 java Applet Viewer 小 應(yīng) 用 程序 瀏 覽 工 具, 用 于 測 試 并 運 行Java小 應(yīng) 用 程 序 java Debugger API Java調(diào) 試 工 具API Prototype Debugger Java調(diào)
35、試 工 具 原 型 Java開 發(fā) 環(huán) 境 還 包 括Java類 庫(包 括I/O類 庫、 用 戶 界 面 類 庫、網(wǎng) 絡(luò) 類 庫 等)和HotJava WWW 瀏 覽 器。 其 中,HotJava瀏 覽 器 提供了在WWW環(huán) 境 下 運 行Java代 碼 的 一 個 運 行 系 統(tǒng), 而 且 還 為WWW開 發(fā)人 員 提供了 一 個Java開 發(fā) 框 架。Java解 釋 器 是 面 向 Java程 序的 一 個 獨 立 運 行 系 統(tǒng), 它 可 以 一 種 穩(wěn) 定、 高 性 能 方 式 運 行那些獨 立 于 平 臺 的Java字 節(jié) 碼,Java編 譯 器 則 用 于 生 成 這種字節(jié) 碼。
36、 2.1.1 Java程 序 的 編 譯 Java程 序 的 編 譯 程 序 是javac.exe。javac命 令 將Java程 序 編 譯 成字 節(jié) 碼, 然 后 你 可 用java解 釋 器java命 令 來 解 釋 執(zhí) 行 這種Java字節(jié) 碼。Java程 序 源 碼 必 須 存 放 在 后 綴 為.java的 文 件 里。Java 程序 里 的 每 一 個 類,javac都 將 生 成 與 類 相 同 名 稱 但 后 綴 為.class文件。 編 譯 器 把.class文 件 放 在.java文 件 的 同 一 個 目 錄 里, 除 非你 用 了-d選 項。 當 你 引 用 到 某些
37、自 己 定 義 的 類 時, 必 須指 明 它 們 的 存 放 目 錄, 這 就 需 要 利 用 環(huán) 境 變 量 參 數(shù) CLASSPATH。環(huán) 境 變 量CLASSPATH是 由 一些被 分 號 隔 開 的 路 徑 名 組 成。 如果 傳 遞 給javac編 譯 器 的 源 文 件 里 引 用 到 的 類 定 義 在 本 文 件和 傳 遞 的 其 它 文 件 中 找 不 到, 則 編 譯 器 會 按 CLASSPATH定 義的 路 徑 來 搜 索。 例 如: CLASSPATH = .;C:javaclasses 則 編 譯 器 先 搜 索 當 前 目 錄, 如果 沒 搜 索 到, 則 繼
38、續(xù) 搜 索C:javaclasses目 錄。 注 意, 系 統(tǒng) 總是 將 系 統(tǒng) 類 的 目 錄 缺 省 地 加 在CLASSPATH后 面, 除 非 你 用 classpath選項 來 編 譯。 javac_g 是 一 個 用 于 調(diào) 試 的 未 優(yōu) 化 的 編 譯 器, 功能 與 用 法 和javac一 樣。 javac的 用 法 如 下: javac -g-O-debug-depend-nowarn-verbose-classpath path-nowrite-d dir file.java. 以 下 是 每 個 選 項 的 解 釋。 選 項 解 釋: -classpath path 定
39、 義javac搜 索 類 的 路 徑。 它 將 覆 蓋 缺 省 的CLASSPATH環(huán)境 變 量 的 設(shè) 置。 路 徑 是 由 一?copy;由 逗 號 隔 開 的 路 徑 名 組成, 一 般 格 式 如 下: .;<your_path> 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 編 譯 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定義, 如 果 沒 有, 則 在 本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它的 定 義, 如 果 還 沒 有, 則 繼 續(xù) 搜 索C:javadoccl
40、asses目 錄 中 的所 有 文 件, 以 此 類 推。 -d directory 指 明 類 層 次 的 根 目 錄, 格 式 如 下: javac -d <my_dir> MyProgram.java 這 樣 將MyProgram.java程 序 里 的 生 產(chǎn) 的.class文 件 存 放 在my_dir目錄 里. -g 帶 調(diào) 試 信 息 編 譯, 調(diào) 試 信 息 包 括 行 號 與 使 用java調(diào) 試工 具 時 用 到 的 局 部 變 量 信 息。 如 果 編 譯 沒 有 加 上-O優(yōu) 化 選項, 只 包 含 行 號 信 息。 -nowarn 關(guān) 閉 警 告 信 息,
41、 編 譯 器 將 不 顯 示 任 何 警 告 信 息。 -O 優(yōu) 化 編 譯static,final,private函 數(shù), 注 意 你 的 類 文 件 可能 更 大。 -verbose 讓 編 譯 器 與 解 釋 器 顯 示 被 編 譯 的 源 文 件 名 和 被 加 載 的類 名。 環(huán) 境 變 量 CLASSPATH 用 來 提?copy;給 系 統(tǒng) 搜 索 用 戶 定 義 的 類 的 缺 省 路徑。 各 路 徑 由 分 號 隔 開, 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 編 譯 器 遇 到 一個 新 類, 它 先 在 本 文 件 中
42、 查 找 它 的 定 義, 如 果 沒 有, 則 在本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它 的 定 義, 如 果 還 沒有, 則 繼 續(xù) 搜 索C:javadocclasses目 錄 中 的 所 有 文 件, 以 此 類推。 2.1.2 Java程 序 的 調(diào) 試 使 用java調(diào) 試 器 jdb導(dǎo) 游 在 早 期 前Betal版 的Java調(diào) 試 器jdb是 命 令 行 形 式 的, 如 用Sun公司 的dbx調(diào) 試 器。 用jdb來 調(diào) 試Java應(yīng) 用 程 序, 在 調(diào) 試?reg;前, 要確 證 你 的 應(yīng) 用 程 序 是 帶 標 志 g編 譯 的。 例 如:
43、javac -g HelloWorld.java help命 令 將 顯 示jdb 里 的 可 用 命 令 列 表。 >help <命 令 列 表> threads threadgroup-列 出 線 程 thread <thread id> 設(shè) 置 缺 省 線 程 Suspend threads id(s) 將線 程 掛 起 resume thread id(s) 重 新 啟 動 線 程 where id |a1| 打 印 線 程 的 堆 棧 threadgroups-列 出 線 程 組 號 threadgroup <name> 設(shè) 置 當 前 線
44、程 組 print <id> id(s) 打 印 對 象 或 域 dump <id> id(s) 打 印 所 有 對 象 信 息 locals 打 印當 前 堆 棧 所 有 局 部 變 量 classes 列 出 當 前 所 知 的 類 methods <class id> 列 出 一 個 類 的 成 員 函 數(shù) stop in <classid>.<method> 在 一 個 成 員 函 數(shù) 里 設(shè) 置 斷 點 stop at <class.id>:<line> 在 一 行 里 設(shè) 置 斷 點 up n fr
45、ames 在 線 程 堆 棧 里 往 上 移 down n frames 在 線 程 堆 棧 里 往 下 移 clear <class id>:<line> 清 除 一 個 斷 點 step 執(zhí) 行 當 前 行 cont 從 斷 點 處 繼續(xù) 執(zhí) 行 catch <class.id> 為 指 定 的 情 況 中 斷 ignor <class.id> 為 指 定 的 情 況 忽 略 list line number 打 印 源 程 序 use Sourcefile path 顯 示 或 改 變 源 路 徑 memeory 報 告 內(nèi) 存 使 用 情
46、 況 load classname 加 載Java類 以 便 調(diào) 試 run <args> 開 始執(zhí) 行 加 載 的 類 ! 重 復(fù) 以 上 的 命 令 help(?) 列 出 所 有的 命 令 exit( or quit) 離 開 調(diào) 試 器 2.1.3 Java程 序 的 執(zhí) 行java - java語 言 解 釋 器 java命 令 解 釋java 字 節(jié) 碼 語 法: java options classname <args> java_g options classname <args> 描 述: java命 令 由java編 譯 器javac輸
47、出 的Java字 節(jié) 碼。 classname參 數(shù) 是 要 執(zhí) 行 的 類 名 稱。 注 意 任 意 在 類 名 稱 后的 參 數(shù) 都 將 傳 遞 給 要 執(zhí) 行 類 的main 函 數(shù)。 java執(zhí) 行 完main函 數(shù) 后 推 出, 除 非main函 數(shù) 創(chuàng) 建 了 一 個 或 多個 線 程。 如 果main函 數(shù) 創(chuàng) 建 了 其 它 線 程,java總 是 等 到 最 后 一個 線 程 推 出 才 推 出。 選 項: -cs, -checksource 當 一 個 編 譯 過 的 類 調(diào) 入 時, 這 個 選 項 將比 較 字 節(jié) 碼 更 改 時 間 與 源 文 件 更 改 時 間,
48、如 果 源 文 件 更改 時 間 靠 后, 則 重 新 編 譯 此 類 并 調(diào) 入 此 新 類。 -classpath path 定 義javac搜 索 類 的 路 徑。 它 將 覆 蓋 缺 省 的CLASSPATH環(huán)境 變 量 的 設(shè) 置。 路 徑 是 由 一?copy;由 逗 號 隔 開 的 路 徑 名 組成, 一 般 格 式 如 下: .;<your_path> 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 解 釋 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定義, 如 果 沒 有, 則 在 本 文
49、 件 所 處 目 錄 下 其 它 文 件 中 查 找 它的 定 義, 如 果 還 沒 有, 則 繼 續(xù) 搜 索C:javadocclasses目 錄 中 的所 有 文 件, 以 此 類 推。 -mx x 設(shè) 置 最 大 內(nèi) 存 分 配 池, 大 小 為x,x必 須 大 于1000bytes。缺 省 為16兆。 -ms x 設(shè) 置 垃 圾 回 收 堆 的 大 小 為x,x必 須 大 于1000bytes。 缺省 為1兆。 -noasyncgc 關(guān) 閉 異 步 垃 圾 回 收 功 能。 此 選 項 打 開 后, 除 非顯 式 調(diào) 用 或 程 序 內(nèi) 存 溢 出, 垃 圾 內(nèi) 存 都 不 回 收。
50、本 選 項 不打 開 時, 垃 圾 回 收 線 程 與 其 它 線 程 異 步 同 時 執(zhí) 行。 -ss x 每 個Java線 程 有 兩 個 堆 棧, 一 個 是java代 碼 堆 棧, 一 個是C代 碼 堆 棧。-ss選 項 將 線 程 理C代 碼 用 的 堆 棧 設(shè) 置 成 最 大 為x。 -oss x 每 個Java線 程 有 兩 個 堆 棧, 一 個 是java代 碼 堆 棧, 一個 是C代 碼 堆 棧。-oss選 項 將 線 程 理java代 碼 用 的 堆 棧 設(shè) 置 成最 大 為x。 -v, -verbose 讓java解 釋 器 在 每 一 個 類 被 調(diào) 入 時, 在 標
51、準 輸出 打 印 相 應(yīng) 信 息。 環(huán) 境 變 量 CLASSPATH 用 來 提?copy;給 系 統(tǒng) 搜 索 用 戶 定 義 的 類 的 缺 省 路徑。 各 路 徑 由 分 號 隔 開, 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 解 釋 器 遇 到 一個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定 義, 如 果 沒 有, 則 在本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它 的 定 義, 如 果 還 沒有, 則 繼 續(xù) 搜 索C:javadocclasses目 錄 中 的 所 有 文 件, 以 此 類推。 2
52、.2 JWS環(huán) 境Java WorkShop是SUN公 司 的 一 個 新 產(chǎn) 品,它 是 一 個 集 成 的java語言 開 發(fā) 環(huán) 境, 它 包 括 以 下 工 具: l Portfolio 和Project管 理 器 l 源 文 件 編 輯 器 l Build管 理 工 具 l 調(diào) 試 器 l 項 目 測 試 l ?copy;展 在 線 超 文 本 連 接 到 幫 助 文 件 這?copy;工 具 在Java WorkShop的 第 一 頁 都 有 類 似Web頁 面 的 超級 連 接, 如 圖: 注 意,Java WorkShop采 用 的 是 當 今 瀏 覽 器 的 界 面
53、 風(fēng) 格, 你 想作 什 么, 只 需 找 到 相 應(yīng) 的 超 級 連 接 就 可 以 了, 具 體 編 譯 及調(diào) 試 功 能 是 用 嵌 如 到HTML文 檔 里 的Applet實 現(xiàn) 的, 因 此, 對 習(xí)慣 于 用internet瀏 覽 方 式 的 用 戶 來 說, 這 種 界 面 很 容 易 接 受。 2.2.1 Portfolio 和Project管 理 器 Protfolios是 一?copy;java應(yīng) 用 程 序 或Applet的 集 中。 它 讓 你 更好 的 管 理 更 多 的projects。 一 個project是portfolio里 的 一 個 子 集,它 包 含 了
54、 以 下 信 息: 1. 怎 樣 編 譯 本 項 目 2. 怎 樣 調(diào) 試 和 瀏 覽 本 項 目 3. 怎 樣 運行 本 項 目 4. 怎 樣 發(fā) 布 本 項 目 2.2.2 源 文 件 編 輯 器 源 文 件 編 輯 器 可 以 從build管 理 器、 調(diào) 試 器 和 源 文 件 瀏 覽器 里 的 超 級 連 接 進 入。 在 這 個 模 塊 里, 你 可 以 輸 入 源 文 件。 2.2.3 Build管 理 工 具 本 模 塊 是 項 目 的 編 譯 器, 你 可 以 點build按 鈕 直 接 進 入 本模 塊, 如 果 某 個 文 件 出 錯, 錯 誤 信 息 會 提?copy;
55、一 個 超 級 連接, 直 接 指 到 出 錯 的 源 文 件 地 點。 2.2.4 Visul Java(圖 形 界 面 構(gòu) 造?copy; 顧 名 思 義, 本 模 塊 能 讓 你 可 視 化 建 造 一?copy;復(fù) 雜 界 面,如 果 你 用 過Visual Basic, 你 會 發(fā) 現(xiàn) 它 們 很 相 似。 2.2.5 調(diào) 試 器 調(diào) 試 器 能 讓 你 很 方 便 地 跟 蹤 程 序 的 執(zhí) 行 與 發(fā) 現(xiàn) 程 序 的錯 誤。 本 章 小 結(jié):Java語 言 有 兩 個 開 發(fā) 環(huán) 境, 一 個 是 免 費 的JDK, 是 命 令 行方 式 的。 還 有 一 個Java WorkS
56、hop, 是 開 發(fā)java程 序 的 集 成 環(huán) 境。本 章 簡 要 介 紹 了 它 們 的 使 用 方 法。 第 三 章 Java程 序 設(shè) 計 基礎(chǔ) 3.1 Java編 程 概 況 現(xiàn) 在 你 可 以 復(fù) 習(xí) 一 下Java語 言 的 背 景 材 料, 它 的 基 本 結(jié)構(gòu) 象C/C+, 但 任 何 用 面 向 過 程 語 言 編 寫 過 程 序 的 人 都 可 以了 解Java語 言 的 大 部 分 結(jié) 構(gòu). 3.1.1 程 序 結(jié) 構(gòu) Java語 言 的 源 程 序 代 碼 由 一 個 或 多 個 編 譯 單 元(compilation unit)組 成, 每 個 編 譯 單 元 只
57、 能 包 含 下 列 內(nèi) 容(空 格 和 注 釋 除外): * 一 個 程 序 包 語 句(package statement ) * 入 口 語 句(import statements) * 類 的 聲 明(class declarations) * 界 面 聲 明(interface declarations) 每 個Java的 編 譯 單 元 可 包 含 多 個 類 或 界 面, 但 是 每 個 編 譯單 元 最 多 只 能 有 一 個 類 或 者 界 面 是 公 共 的。 Java 的 源 程 序代 碼 被 編 譯 之后, 便 產(chǎn) 生 了Java字 節(jié) 代 碼。Java的 字 節(jié) 代碼
58、 由 一種不 依 賴 于 機 器 的 指 令 組 成, 這 種指 令 能被Java的 運 行 系 統(tǒng)(runtime system)有 效 地 解 釋。Java的 運 行 系 統(tǒng)工 作 起 來 如 同 一 臺 虛 擬 機。 在 當 前 的Java實 現(xiàn) 中, 每 個 編 譯單 元 就 是 一 個 以.java為 后 綴 的 文 件。 每 個 編 譯 單 元 有 若 干個 類, 編 譯 后, 每 個 類 生 成 一 個.class文 件。.class文 件 是Java虛擬 機 能 夠 識 別 的 代 碼。 3.1.2 注 釋 三 種 類 型 如 下: /注 釋 一 行 /*一 行 或 多 行 注
59、 釋*/ /*文 檔注 釋*/ 文 檔 注 釋 一 般 放 在 一 個 變 量 或 函 數(shù) 定 義 之 前,指 示 在任 何 自 動 生 成 文 檔 系 統(tǒng) 中 調(diào) 入。 這 種注 釋 都 是 聲 明 條目 的 描 述.。 3.1.3 標 識 符 變 量, 函 數(shù), 類 和 對 象 的 名 稱 都 是 標 識 符, 程 序 員 需 要標 識 和 使 用 的 東 西 都 需 要 標 識 符。 在Java語 言 里,標 識 符 以字 符 或_,$開 頭,后 面 可 以 包 含 數(shù) 字, 標 識 符 是 大 小 寫 有 區(qū) 別的,沒 有 長 度 限 制。 有 效 的 標 識 符 myname ict
60、_network Hello _sys_path $bill 例 子: int a_number; char _onechar; float $bill; 關(guān) 鍵 詞 abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient
61、catch false int return true char final interface short try class finally long static void const float native super while 其 它 保 留 詞 以 下 單 詞 被 保 留 使 用: cast future generic inner operator outer rest var 3.1.4 數(shù) 據(jù) 類 型Java使 用 五 種 基 本 類 型:integer(整 數(shù)),floating(浮點 數(shù)),point(指針),Boolean(布 爾 變 量),Character or
62、 String(字 符 或 字 符 ?reg;)。 integer 整 數(shù) 下 邊 給 出 的 數(shù) 據(jù) 表 示 都 是 整 數(shù) 的 例 子: 4 , 15 , 089 , 0xAD00 整 數(shù) 長 度 數(shù) 據(jù) 類 型 表 示 8 bits byte 16 bits short 32 bits int 64 bits long floating 浮點 數(shù) 下 邊 給 出 的 數(shù) 據(jù) 表 示 都 是浮點 數(shù) 的 例 子: 6.37 , 3.7E15 , 3e8 浮點 數(shù) 長 度 數(shù) 據(jù) 類 型 表 示 32 bits float 64 bits double Boolean 布 爾 變 量 下 邊 是 布 爾 變 量 的 兩 種 可 能 取 值: true false Character 字 符 下 邊 給 出 的 都 是 字 符 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫裝修改造協(xié)議模板
- 私人房產(chǎn)使用權(quán)買賣合同范本
- 2025年度辦事處安全培訓(xùn)與風(fēng)險防范合同
- 房屋按季度出租合同范本
- 駕校教練學(xué)員培訓(xùn)合同范本
- 城市基礎(chǔ)設(shè)施貸款居間合同
- 2025年度辦事處物流配送與供應(yīng)鏈優(yōu)化合作協(xié)議
- 二零二五年度辦公用地租用與智慧辦公空間設(shè)計合同
- 電影節(jié)嘉賓接送服務(wù)協(xié)議
- 堅守安全紅線共筑發(fā)展堡壘-全縣2025年第一季度安全生產(chǎn)暨消防安全工作推進會
- 手術(shù)部位感染預(yù)防控制措施
- 社會學(xué)概論課件
- 中醫(yī)類診所規(guī)章制度與崗位職責(zé)
- 初中語文 中考總復(fù)習(xí)-文言文斷句訓(xùn)練120題(含答案解析)
- 影視鑒賞-動畫電影課件
- 美學(xué)原理全套教學(xué)課件
- 精裝修施工圖深化內(nèi)容及要求
- 《克雷洛夫寓言》閱讀指導(dǎo)課件
- 《無人機載荷與行業(yè)應(yīng)用》 課件全套 第1-6章 無人機任務(wù)載荷系統(tǒng)概述- 未來展望與挑戰(zhàn)
- 《室內(nèi)照明設(shè)計》(熊杰)794-5 教案 第7節(jié) 綠色照明、節(jié)能照明與應(yīng)急照明
- 腦卒中后認知障礙的護理課件
評論
0/150
提交評論