




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第 一 章 Java語 言 的 產 生 及 其 特 點1.1 Java產 生 的 歷 史 與 現(xiàn) 狀 1.1.1 Java產 生 的 歷 史 Java來 自于Sun公 司 的 一 個 叫Green的 項 目, 其 原 先 的 目 的 是 為 家 用 消費 電 子 產 品 開 發(fā) 一 個 分 布 式 代 碼 系 統(tǒng), 這 樣 我 們 可 以 把E-mail發(fā)給 電 冰 箱、 電 視 機 等 家 用 電 器, 對 它 們 進 行 控 制, 和 它 們進 行 信 息 交 流。 開 始
2、, 準 備 采 用C+,但C+太 復 雜, 安 全 性 差,最 后 基 于C+開 發(fā) 一 種 新 的 語 言Oak(Java的 前 身),Oak是 一 種 用于 網 絡 的 精 巧 而 安 全 的 語 言,Sun公 司 曾 依 此 投 標 一 個 交 互式 電 視 項 目, 但 結 果 是 被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、推 出 的 新 的 一 代 面 向 對 象 程 序 設 計 語 言, 特 別 適 合 于Internet應用 程 序 開 發(fā), 它 的 平 臺 無 關 性 直 接 威 脅 到Wintel的 壟 斷 地 位。一 時 間,“ 連Internet, 用Java編 程”, 成 為 技 術 人 員 的 一 種 時尚。 雖 然 新 聞 界 的 報 導 有些言 過 其 實, 但Java作 為 軟 件 開發(fā) 的 一 種 革 命 性 的 技 術, 其 地 位 已 被 確 立, 這 表 現(xiàn) 在 以 下幾 個 方 面: 1.計 算 機 產 業(yè) 的 許 多 大 公 司 購 買 了 Java的 許 可證, 包 括IBM
5、,Apple,DEC,Adobe,Silicon Graphics,HP,Oracel,Toshiba, 以 及最 不 情 愿 的Microsoft。 這 一 點 說 明,Java已 得 到 了 工 業(yè) 界 的 認可。 2.眾 多 的 軟 件 開 發(fā) 商 開 始 支 持Java的 軟 件 產 品。 例 如:Borland公司 正 在 開 發(fā) 的 基 于Java的 快 速 應 用 程 序 開 發(fā) 環(huán) 境Latte, 預 計產 品 會 在1996年 中 期 發(fā) 布。Borland公 司 的 這 一 舉 措, 推 動 了Java進入PC機 軟 件 市場。Sun公 司 自 己 的Java開 發(fā) 環(huán) 境
6、Java Workshop已 經 發(fā)布。 數(shù) 據 庫 廠 商 如:Illustra,Sysbase,Versant,Oracle都 在 開 發(fā)CGI接口, 支 持HTML和Java。 今 天 是 以 網 絡 為 中 心 的 計 算 時 代, 不 支持HTML和Java, 應 用 程 序 的 應 用 范 圍 只 能 限 于 同 質 的 環(huán) 境(相同 的 硬 件 平 臺)。 3.Intranet正 在 成 為 企 業(yè) 信 息 系 統(tǒng) 最 佳的 解 決 方 案, 而 其 中Java將 發(fā) 揮 不 可 替 代 的 作 用。Intranet的目 的 是 把Internet用 于 企 業(yè) 內 部 的 信
7、息 系 統(tǒng), 它 的 優(yōu) 點 表 現(xiàn)在: 便 宜, 易 于 使 用 和 管 理。 用 戶 不 管 使 用 何 種 類 型 的 機器 和 操 作 系 統(tǒng), 界 面 是 統(tǒng) 一 的Intrnet瀏 覽 器, 而 數(shù) 據 庫、Web頁面、 應 用 程 序(用Java編 的Applet)則 存 在WWW服 務 器 上, 無 論 是 開發(fā) 人 員, 還 是 管 理 人 員, 抑 或 是 用 戶 都 可 以 受 益 于 該 解 決方 案。 Java語 言 正 在 不 斷 發(fā) 展 和 完 善,Sun公 司 是 主 要 的 發(fā) 展推 動 者, 較 通 用 的 編 譯 環(huán) 境 有JDK(Java Develop
8、 Kit)與JWS(Java Workshop)。還 有 很 多 其 他 公 司 正 在 開 發(fā)Java語 言 的 編 譯 器 與 集 成 環(huán) 境,預 計 不 久Java語 言 的 正 確 性 與 效 率 都 將 會 提 高, 用 戶 用Java編程 和 現(xiàn) 在 用C+編 程 一 樣 方 便。 1.2 Java語 言 的 特 點 Java到 底是 一 種 什 么 樣 的 語 言 呢? Java是 一 種 簡 單 的 面 象 對 象 的 分布 式 的 解 釋 的 健 壯 的 安
9、全 的 結 構 中 立 的 可 移 植 的 性 能 很優(yōu) 異 的 多 線 程 的 動 態(tài) 的 語 言。 1.2.1 簡 單 Java最 初是 為 對 家 用 電 器 進 行 集 成 控 制 而 設 計 的 一 種 語 言, 因 此它 必 須 簡 單 明 了。Java語 言 的 簡 單 性 主 要 體 現(xiàn) 在 以 下 三 個方 面: 1. Java的 風 格 類 似 于C+, 因 而C+程 序 員 是 非 常 熟 悉 的。從 某 種 意 義 上 講,Java語 言 是C及C+語
10、 言 的 一 個 變 種, 因 此,C+程序 員 可 以 很 快 就 掌 握Java編 程 技 術。 2. Java摒 棄 了C+中 容 易引 發(fā) 程 序 錯 誤 的 地 方, 如 指 針 和 內 存 管 理。 3. Java提供了豐 富 的 類 庫。1.2.2 面 向 對 象 面 向 對象 可 以 說 是Java最 重 要 的 特 性。Java語 言 的 設 計 完 全 是 面 向對 象 的, 它 不 支 持 類 似C語 言 那 樣 的 面 向 過 程 的 程 序 設 計技
11、術。Java支 持 靜 態(tài) 和 動 態(tài) 風 格 的 代 碼 繼 承 及 重 用。 單 從 面向 對 象 的 特 性 來 看,Java類 似 于SmallTalk, 但 其 它 特 性、 尤 其是 適 用 于 分 布 式 計 算 環(huán) 境 的 特 性 遠 遠 超 越 了SmallTalk。1.2.3 分 布 式 Java包 括一 個 支 持HTTP和FTP等 基 于TCP/IP協(xié) 議 的 子 庫。 因 此,Java應 用 程序 可 憑 借URL打 開 并 訪 問 網 絡 上 的
12、對 象, 其 訪 問 方 式 與 訪 問本 地 文 件 系 統(tǒng) 幾 乎 完 全 相 同。 為 分 布 環(huán) 境 尤 其 是Internet提供動態(tài) 內 容 無 疑 是 一 項 非 常 宏 偉 的 任 務, 但Java的 語 法 特 性 卻使 我 們 很 容 易 地 實 現(xiàn) 這 項 目 標。1.2.4 健 壯 Java致 力于 檢 查 程 序 在 編 譯 和 運 行 時 的 錯 誤。 類 型 檢 查 幫 助 檢 查出 許 多 開 發(fā) 早 期 出 現(xiàn) 的 錯 誤。Java自 已 操
13、縱 內 存 減 少 了 內存 出 錯 的 可 能 性。Java還 實 現(xiàn) 了 真 數(shù) 組, 避 免 了 覆 蓋 數(shù) 據 的可 能。 這種功 能 特 征 大 大 縮 短 了 開 發(fā)Java應 用 程 序 的 周期。 Java提供: Null指 針 檢 測 數(shù) 組 邊 界 檢 測 異 常 出 口 字 節(jié)代 碼 校 驗 1.2.5 結 構 中 立 另 外,為 了 建 立Java作 為 網 絡 的 一 個 整 體,Java將 它 的 程 序 編 譯 成一 種 結 構 中 立 的 中
14、間 文 件 格 式。 只 要 有Java運 行 系 統(tǒng) 的 機器 都 能 執(zhí) 行 這 種 中 間 代 碼。 現(xiàn) 在,Java運 行 系 統(tǒng) 有Solaris2.4(SPARC),Win32系統(tǒng)(Windows95和Windows NT)等. Java源 程 序 被 編 譯 成 一 種 高 層 次 的與 機 器 無 關 的byte-code格 式 語 言, 這 種 語 言 被 設 計 在 虛 擬 機上 運 行, 由 機 器 相 關 的 運 行 調 試 器 實 現(xiàn) 執(zhí) 行。 1.2.6 安 全
15、0; Java的 安全 性 可 從 兩 個 方 面 得 到 保 證。 一 方 面, 在Java語 言 里, 象 指針 和 釋 放 內 存 等C+功 能 被 刪 除, 避 免 了 非 法 內 存 操 作。 另一 方 面, 當Java用 來 創(chuàng) 建 瀏 覽 器 時, 語 言 功 能 和 一?copy;瀏 覽器 本 身 提?copy;的 功 能 結 合 起 來, 使 它 更 安 全。 Java語 言 在你 的 機 器 上 執(zhí) 行 前, 要 經 過 很 多 次 的 測 試。 它 經 過 代 碼 校驗, 檢 查 代 碼 段 的 格 式, 檢 測 指 針 操 作, 對 象 操 作 是 否 過分
16、以 及 試 圖 改 變 一 個 對 象 的 類 型。 Byte-code校 驗 如 果byte-code通過 代 碼 校 驗, 沒 有 返 回 錯 誤, 我 們 可 知 道: 代 碼 沒 有 堆 棧上 溢 出 和 下 溢 出 所 有 操 作 代 碼 參 數(shù) 類 型 都 是 正 確 的 沒 有發(fā) 生 非 法 數(shù) 據 轉 換, 如 將 整 數(shù) 轉 換 成 指 針。 訪 問 對 象 操 作是 合 法 的 類 裝 載
17、; Class Loader通過 將 本 機 類 與 網 絡 資 源 類 的 名 稱 分 開, 來 保 持 安 全 性。 因為 調 入 類 時 總 要 經 過 檢 查, 這 樣 避 免 了 特 洛 伊 木 馬 現(xiàn) 象的 出 現(xiàn)。 從 網 絡 上 下 載 的 類 被 調 進 一 個 與 源 相 關 的 私 有的 名 字 域。 當 一 個 私 有 類 訪 問 另 一 個 類 時,build-in(本 機 類)首先 被 檢 查, 然 后 檢 查 相 關 的 類。 這 樣 就 避 免 了 破 壞 本 機 類情 況 的 出
18、 現(xiàn)。 1.2.7 可 移 植 的 同 體 系結 構 無 關 的 特 性 使 得Java應 用 程 序 可 以 在 配 備 了Java解 釋 器和 運 行 環(huán) 境 的 任 何 計 算 機 系 統(tǒng) 上 運 行, 這 成 為Java應 用 軟件 便 于 移 植 的 良 好 基礎。 但 僅 僅 如 此 還 不 夠。 如 果 基 本 數(shù)據 類 型 設 計 依 賴 于 具 體 實 現(xiàn), 也 將 為 程 序 的 移 植 帶 來 很大 不 便。 例 如 在Windows 3.1中 整 數(shù)(
19、Integer)為16bits, 在Windows 95中整 數(shù) 為32bits, 在DEC Alpha中 整 數(shù) 為64bits, 在Intel 486中 為32bits。通 過 定 義 獨 立 于 平 臺 的 基 本 數(shù) 據 類 型 及 其 運 算,Java數(shù) 據得 以 在 任 何 硬 件 平 臺 上 保 持 一 致。Java語 言 的 基 本 數(shù) 據 類型 及 其 表 示 方 式 如 下: 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ù) 據 類 型 都 是 依 據 以 上 標 準 具 體 實 現(xiàn) 的。 因 為 幾乎 目 前 使 用 的 所 有CPU都 能 支 持 以 上 數(shù) 據 類 型、864位 整 數(shù)格 式 的 補 碼 運 算 和 單/雙 精 度浮點 運 算。 Java編 譯 器 本 身 就 是用Java語 言 編 寫 的。Java運 算 系 統(tǒng) 的 編 制 依
21、 據POSIX方 便 移 植 的限 制, 用ANSI C語 言 寫 成。Java語 言 規(guī) 范 中 也 沒 有 任 何"同具 體 實 現(xiàn) 相 關"的 內 容。 1.2.8 解 釋 的 Java解 釋器(運 行 系 統(tǒng))能 直 接 運 行 目 標 代 碼 指 令。 鏈 接 程 序 通 常 比編 譯 程 序 所 需 資 源 少, 所 以 程 序 員 可 以 在 創(chuàng) 建 源 程 序 上花 上 更 多 的 時 間。 1.2.9 高 性 能
22、 如 果 解釋 器 速 度 不 慢,Java可 以 在 運 行 時 直 接 將 目 標 代 碼 翻 譯 成機 器 指 令。Sun用 直 接 解 釋 器 一 秒 鐘 內 可 調 用300,000個 過 程。翻 譯 目 標 代 碼 的 速 度 與C/C+的 性 能 沒 什 么 區(qū) 別。 1.2.10 多 線 程 Java提?copy;的多 線 程 功 能 使 得 在 一 個 程 序 里 可 同 時
23、執(zhí) 行 多 個 小 任 務。線 程 有 時 也 稱 小 進 程 是 一 個 大 進 程 里 分 出 來 的小 的 獨 立 的 進 程。 因 為Java實 現(xiàn) 的 多 線 程 技 術, 所 以 比C和C+更鍵 壯。 多 線 程 帶 來 的 更 大 的 好 處 是 更 好 的 交 互 性 能 和 實時 控 制 性 能。 當 然 實 時 控 制 性 能 還 取 決 于 系 統(tǒng) 本 身(UNIX,Windows,Macintosh等),在 開 發(fā) 難 易 程 度 和 性 能 上 都 比 單 線 程 要 好。 任 何 用 過 當前 瀏 覽 器 的 人, 都 感 覺 為 調 一 副 圖 片 而 等 待 是
24、 一 件 很 煩惱 的 事 情。 在Java里, 你 可 用 一 個 單 線 程 來 調 一 副 圖 片, 而你 可 以 訪 問HTML里 的 其 它 信 息 而 不 必 等 它。 1.2.11 動 態(tài) Java的 動態(tài) 特 性 是 其 面 向 對 象 設 計 方 法 的擴展。 它 允 許 程 序 動態(tài) 地 裝 入 運 行 過 程 中 所 需 要 的 類, 這 是C+語 言 進 行 面 向 對象 程 序 設 計 所 無 法 實 現(xiàn) 的。 在C+程 序 設 計 過 程 中, 每
25、 當 在類 中 增 加 一 個 實 例 變 量 或 一 種 成 員 函 數(shù) 后, 引 用 該 類 的所 有 子 類 都 必 須 重 新 編 譯, 否 則 將 導 致 程 序 崩 潰。Java從 如下 幾 方 面 采 取 措施來 解 決 這 個 問 題。Java編 譯 器 不 是 將對 實 例 變 量 和 成 員 函 數(shù) 的 引 用 編 譯 為 數(shù) 值 引 用, 而 是 將符 號 引 用 信 息 在 字 節(jié) 碼 中 保 存 下 傳 遞 給 解 釋 器, 再 由 解釋 器 在 完 成 動 態(tài) 連 接 類 后, 將 符 號 引 用 信 息 轉 換 為 數(shù) 值偏 移 量。 這 樣, 一 個 在 存 儲
26、 器 生 成 的 對 象 不 在 編 譯 過 程 中決 定, 而 是 延 遲 到 運 行 時 由 解 釋 器 確 定 的。 這 樣, 對 類 中的 變 量 和 方 法 進 行 更 新 時 就 不 至 于 影 響 現(xiàn) 存 的 代 碼。 解釋 執(zhí) 行 字 節(jié) 碼 時, 這 種 符 號 信 息 的 查 找 和 轉 換 過 程 僅 在一 個 新 的 名 字 出 現(xiàn) 時 才 進 行 一 次, 隨 后 代 碼 便 可 以 全 速執(zhí) 行。 在 運 行 時 確 定 引 用 的 好 處 是 可 以 使 用 已 被 更 新 的類, 而 不 必 擔 心 會 影 響 原 有 的 代 碼。 如 果 程 序 連 接 了
27、網 絡中 另 一 系 統(tǒng) 中 的 某 一 類, 該 類 的 所 有 者 也 可 以 自 由 地 對該 類 進 行 更 新, 而 不 會 使 任 何 引 用 該 類 的 程 序 崩 潰。 Java還簡 化 了 使 用 一 個 升 級 的 或 全 新 的 協(xié) 議 的 方 法。 如 果 你 的系 統(tǒng) 運 行Java程 序 時 遇 到 了 不 知 怎 樣 處 理 的 程 序, 沒 關 系,Java能自 動 下 載 你 所 需 要 的 功 能 程 序。 1.3 與C和C+語 言 的 異 同
28、0;Java提供了一 個 功 能 強 大 語 言 的 所 有 功 能, 但 幾 乎 沒 有 一 點 含 混 特征。C+安 全 性 不 好, 但C和C+還 是 被 大 家 所 接 受, 所 以Java設 計成C+形 式, 讓 大 家 很 容 易 學 習。Java去 掉 了C+語 言 的 許 多 功能, 讓Java的 語 言 功 能 很 精 煉, 并 增 加 了 一些很 有 用 的 功能, Java去 掉 了 以 下 幾 個C和C+功 能 和 特 征: 指 針 運 算 結 構 typedefs #define 需 要 釋 放 內 存 全 局 變 量 的 定 義 這種功 能 都 是 很容 易 引 起
29、 錯 誤 的 地 方。 1.4 Java的 應 用 簡 介 1.4.1 Web瀏 覽 Web瀏 覽是 現(xiàn) 在 國 際 網 甚 至 局 域 網 的 主 要 使 用 方 式。 文 檔 能 很 容易 地 顯 示 文 本 和 各 種 圖 片, 他 還 能 提供超 文 本 鏈 接。 這些瀏覽 器 調 用HTML語 言 寫 的 文 檔,HTML/WWW瀏 覽 器 技 術 只 限 于 文 本和 圖 象。 如 果 你 想 播 放 一 種 聲 音 或 運 行 一 個 演 示 程 序, 你不 得
30、 不 下 載 那 個 文 件 并 用 你 本 機 上 的 能 理 解 和 運 行 那 個文 件 格 式 的 程 序 來 播 放 它。 Java程 序 和 它 的 瀏 覽 器HotJava,提供了 可 讓 你 的 瀏 覽 器 運 行 程 序 的 方 法。 你 能 從 你 的瀏 覽 器 里 直 接 播 放 聲 音。 你 還 能 播 放 頁 面 里 的 動 畫。Java還能 告 訴 你 的 瀏 覽 器 怎 樣 處 理 新 的 類 型 文 件。 當 我 們 能 在2400 baud線 上 傳 輸 視 頻 圖 象 時,HotJava將 能 顯 示 這些視 頻。 1.4.2 網 絡 應 用 系 統(tǒng)
31、60; Java是 一種 與 平 臺 無 關 的 語 言, 因 此 用Java開 發(fā) 的 網 絡 應 用 系 統(tǒng) 可以 在 各 種 平 臺 上 運 行, 大 大 增 加 了 開 發(fā) 效 率, 減 少 重 復 勞動。 而 且,Java集 成 的 網 絡 功 能充分 有 利 于 開 發(fā) 網 絡 應 用系 統(tǒng)。 本 章 小 結: 1.Java的產 生 與 流 行 是 當 今int
32、ernet發(fā) 展 的 客 觀 要 求 2.java是 一 門 各 方面 性 能 都 很 好 的 編 程 語 言, 它 的 基 本 特 點 是 簡 單、 面 象 對象、 分 布 式、 解 釋 的、健 壯 的、 安 全 的、 結 構 中 立 的、 可 移植 的、 性 能 很 優(yōu) 異 的、 多 線 程 的、 動 態(tài) 的。?reg;分 適 合 在internet環(huán)境 上 開 發(fā) 應 用 系 統(tǒng)。 3.java可 以 制 作 大 部 分 網 絡 應 用 程 序系 統(tǒng), 而 且 與 當 今 流 行 的WWW瀏 覽 器 結 合 得 很 好。 第 二 章 Java程 序 開 發(fā) 與 運 行 環(huán) 境 2.1 J
33、DK環(huán) 境 Java不 僅 提供了 一 個 豐 富 的 語 言 和 運 行 環(huán) 境, 而 且 還提供了 一 個 免 費 的Java開 發(fā) 工 具 集(Java Developers Kits, 簡稱JDK)。 編 程 人 員 和 最 終 用 戶 可 以 利 用 這個工 具 來 開 發(fā)java程序 或 調 用Java 內 容。JDK包 括 以 下 工 具: javac Java語 言 編 譯 器,輸 出 結 果 為Java字 節(jié) 碼 java, Java字 節(jié) 碼 解 釋 器 javap Disassembeler: Java字 節(jié) 碼 分 解 程 序, 本 程 序 返 回Java程 序 的 成
34、 員 變 量 及 方法 等 信 息。 javaprof 資 源 分 析 工 具, 用 于 分 析Java程 序 在 運 行過 程 中 調 用 了 哪些資 源, 包 括 類 和 方 法 的 調 用 次 數(shù) 和時 間, 以 及 各 數(shù) 據 類 型 的 內 存 使 用 情 況 等。 javah C代 碼 處理 工 具, 用 于 從Java類 調 用C+代 碼 java Applet Viewer 小 應 用 程序 瀏 覽 工 具, 用 于 測 試 并 運 行Java小 應 用 程 序 java Debugger API Java調 試 工 具API Prototype Debugger Java調
35、試 工 具 原 型 Java開 發(fā) 環(huán) 境 還 包 括Java類 庫(包 括I/O類 庫、 用 戶 界 面 類 庫、網 絡 類 庫 等)和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 是 一 個 用 于 調 試 的 未 優(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)境 變 量 的 設 置。 路 徑 是 由 一?copy;由 逗 號 隔 開 的 路 徑 名 組成, 一 般 格 式 如 下: .;<your_path> 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 編 譯 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定義, 如 果 沒 有, 則 在 本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它的 定 義, 如 果 還 沒 有, 則 繼 續(xù) 搜 索C:javadoccl
40、asses目 錄 中 的所 有 文 件, 以 此 類 推。 -d directory 指 明 類 層 次 的 根 目 錄, 格 式 如 下: javac -d <my_dir> MyProgram.java 這 樣 將MyProgram.java程 序 里 的 生 產 的.class文 件 存 放 在my_dir目錄 里. -g 帶 調 試 信 息 編 譯, 調 試 信 息 包 括 行 號 與 使 用java調 試工 具 時 用 到 的 局 部 變 量 信 息。 如 果 編 譯 沒 有 加 上-O優(yōu) 化 選項, 只 包 含 行 號 信 息。 -nowarn 關 閉 警 告 信 息,
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程 序 的 調 試 使 用java調 試 器 jdb導 游 在 早 期 前Betal版 的Java調 試 器jdb是 命 令 行 形 式 的, 如 用Sun公司 的dbx調 試 器。 用jdb來 調 試Java應 用 程 序, 在 調 試?reg;前, 要確 證 你 的 應 用 程 序 是 帶 標 志 g編 譯 的。 例 如:
43、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> 設 置 當 前 線
44、程 組 print <id> id(s) 打 印 對 象 或 域 dump <id> id(s) 打 印 所 有 對 象 信 息 locals 打 印當 前 堆 棧 所 有 局 部 變 量 classes 列 出 當 前 所 知 的 類 methods <class id> 列 出 一 個 類 的 成 員 函 數(shù) stop in <classid>.<method> 在 一 個 成 員 函 數(shù) 里 設 置 斷 點 stop at <class.id>:<line> 在 一 行 里 設 置 斷 點 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 報 告 內 存 使 用 情
46、 況 load classname 加 載Java類 以 便 調 試 run <args> 開 始執(zhí) 行 加 載 的 類 ! 重 復 以 上 的 命 令 help(?) 列 出 所 有的 命 令 exit( or quit) 離 開 調 試 器 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 當 一 個 編 譯 過 的 類 調 入 時, 這 個 選 項 將比 較 字 節(jié) 碼 更 改 時 間 與 源 文 件 更 改 時 間,
48、如 果 源 文 件 更改 時 間 靠 后, 則 重 新 編 譯 此 類 并 調 入 此 新 類。 -classpath path 定 義javac搜 索 類 的 路 徑。 它 將 覆 蓋 缺 省 的CLASSPATH環(huán)境 變 量 的 設 置。 路 徑 是 由 一?copy;由 逗 號 隔 開 的 路 徑 名 組成, 一 般 格 式 如 下: .;<your_path> 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 解 釋 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定義, 如 果 沒 有, 則 在 本 文
49、 件 所 處 目 錄 下 其 它 文 件 中 查 找 它的 定 義, 如 果 還 沒 有, 則 繼 續(xù) 搜 索C:javadocclasses目 錄 中 的所 有 文 件, 以 此 類 推。 -mx x 設 置 最 大 內 存 分 配 池, 大 小 為x,x必 須 大 于1000bytes。缺 省 為16兆。 -ms x 設 置 垃 圾 回 收 堆 的 大 小 為x,x必 須 大 于1000bytes。 缺省 為1兆。 -noasyncgc 關 閉 異 步 垃 圾 回 收 功 能。 此 選 項 打 開 后, 除 非顯 式 調 用 或 程 序 內 存 溢 出, 垃 圾 內 存 都 不 回 收。
50、本 選 項 不打 開 時, 垃 圾 回 收 線 程 與 其 它 線 程 異 步 同 時 執(zhí) 行。 -ss x 每 個Java線 程 有 兩 個 堆 棧, 一 個 是java代 碼 堆 棧, 一 個是C代 碼 堆 棧。-ss選 項 將 線 程 理C代 碼 用 的 堆 棧 設 置 成 最 大 為x。 -oss x 每 個Java線 程 有 兩 個 堆 棧, 一 個 是java代 碼 堆 棧, 一個 是C代 碼 堆 棧。-oss選 項 將 線 程 理java代 碼 用 的 堆 棧 設 置 成最 大 為x。 -v, -verbose 讓java解 釋 器 在 每 一 個 類 被 調 入 時, 在 標
51、準 輸出 打 印 相 應 信 息。 環(huán) 境 變 量 CLASSPATH 用 來 提?copy;給 系 統(tǒng) 搜 索 用 戶 定 義 的 類 的 缺 省 路徑。 各 路 徑 由 分 號 隔 開, 例 如: .;C:javadocclasses;C:toolsjavaclasses 表 示 解 釋 器 遇 到 一個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定 義, 如 果 沒 有, 則 在本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它 的 定 義, 如 果 還 沒有, 則 繼 續(xù) 搜 索C:javadocclasses目 錄 中 的 所 有 文 件, 以 此 類推。 2
52、.2 JWS環(huán) 境Java WorkShop是SUN公 司 的 一 個 新 產 品,它 是 一 個 集 成 的java語言 開 發(fā) 環(huán) 境, 它 包 括 以 下 工 具: l Portfolio 和Project管 理 器 l 源 文 件 編 輯 器 l Build管 理 工 具 l 調 試 器 l 項 目 測 試 l ?copy;展 在 線 超 文 本 連 接 到 幫 助 文 件 這?copy;工 具 在Java WorkShop的 第 一 頁 都 有 類 似Web頁 面 的 超級 連 接, 如 圖: 注 意,Java WorkShop采 用 的 是 當 今 瀏 覽 器 的 界 面
53、 風 格, 你 想作 什 么, 只 需 找 到 相 應 的 超 級 連 接 就 可 以 了, 具 體 編 譯 及調 試 功 能 是 用 嵌 如 到HTML文 檔 里 的Applet實 現(xiàn) 的, 因 此, 對 習慣 于 用internet瀏 覽 方 式 的 用 戶 來 說, 這 種 界 面 很 容 易 接 受。 2.2.1 Portfolio 和Project管 理 器 Protfolios是 一?copy;java應 用 程 序 或Applet的 集 中。 它 讓 你 更好 的 管 理 更 多 的projects。 一 個project是portfolio里 的 一 個 子 集,它 包 含 了
54、 以 下 信 息: 1. 怎 樣 編 譯 本 項 目 2. 怎 樣 調 試 和 瀏 覽 本 項 目 3. 怎 樣 運行 本 項 目 4. 怎 樣 發(fā) 布 本 項 目 2.2.2 源 文 件 編 輯 器 源 文 件 編 輯 器 可 以 從build管 理 器、 調 試 器 和 源 文 件 瀏 覽器 里 的 超 級 連 接 進 入。 在 這 個 模 塊 里, 你 可 以 輸 入 源 文 件。 2.2.3 Build管 理 工 具 本 模 塊 是 項 目 的 編 譯 器, 你 可 以 點build按 鈕 直 接 進 入 本模 塊, 如 果 某 個 文 件 出 錯, 錯 誤 信 息 會 提?copy;
55、一 個 超 級 連接, 直 接 指 到 出 錯 的 源 文 件 地 點。 2.2.4 Visul Java(圖 形 界 面 構 造?copy; 顧 名 思 義, 本 模 塊 能 讓 你 可 視 化 建 造 一?copy;復 雜 界 面,如 果 你 用 過Visual Basic, 你 會 發(fā) 現(xiàn) 它 們 很 相 似。 2.2.5 調 試 器 調 試 器 能 讓 你 很 方 便 地 跟 蹤 程 序 的 執(zhí) 行 與 發(fā) 現(xiàn) 程 序 的錯 誤。 本 章 小 結:Java語 言 有 兩 個 開 發(fā) 環(huán) 境, 一 個 是 免 費 的JDK, 是 命 令 行方 式 的。 還 有 一 個Java WorkS
56、hop, 是 開 發(fā)java程 序 的 集 成 環(huán) 境。本 章 簡 要 介 紹 了 它 們 的 使 用 方 法。 第 三 章 Java程 序 設 計 基礎 3.1 Java編 程 概 況 現(xiàn) 在 你 可 以 復 習 一 下Java語 言 的 背 景 材 料, 它 的 基 本 結構 象C/C+, 但 任 何 用 面 向 過 程 語 言 編 寫 過 程 序 的 人 都 可 以了 解Java語 言 的 大 部 分 結 構. 3.1.1 程 序 結 構 Java語 言 的 源 程 序 代 碼 由 一 個 或 多 個 編 譯 單 元(compilation unit)組 成, 每 個 編 譯 單 元 只
57、 能 包 含 下 列 內 容(空 格 和 注 釋 除外): * 一 個 程 序 包 語 句(package statement ) * 入 口 語 句(import statements) * 類 的 聲 明(class declarations) * 界 面 聲 明(interface declarations) 每 個Java的 編 譯 單 元 可 包 含 多 個 類 或 界 面, 但 是 每 個 編 譯單 元 最 多 只 能 有 一 個 類 或 者 界 面 是 公 共 的。 Java 的 源 程 序代 碼 被 編 譯 之后, 便 產 生 了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) 中 調 入。 這 種注 釋 都 是 聲 明 條目 的 描 述.。 3.1.3 標 識 符 變 量, 函 數(shù), 類 和 對 象 的 名 稱 都 是 標 識 符, 程 序 員 需 要標 識 和 使 用 的 東 西 都 需 要 標 識 符。 在Java語 言 里,標 識 符 以字 符 或_,$開 頭,后 面 可 以 包 含 數(shù) 字, 標 識 符 是 大 小 寫 有 區(qū) 別的,沒 有 長 度 限 制。 有 效 的 標 識 符 myname ict
60、_network Hello _sys_path $bill 例 子: int a_number; char _onechar; float $bill; 關 鍵 詞 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ù) 據 類 型Java使 用 五 種 基 本 類 型:integer(整 數(shù)),floating(浮點 數(shù)),point(指針),Boolean(布 爾 變 量),Character or
62、 String(字 符 或 字 符 ?reg;)。 integer 整 數(shù) 下 邊 給 出 的 數(shù) 據 表 示 都 是 整 數(shù) 的 例 子: 4 , 15 , 089 , 0xAD00 整 數(shù) 長 度 數(shù) 據 類 型 表 示 8 bits byte 16 bits short 32 bits int 64 bits long floating 浮點 數(shù) 下 邊 給 出 的 數(shù) 據 表 示 都 是浮點 數(shù) 的 例 子: 6.37 , 3.7E15 , 3e8 浮點 數(shù) 長 度 數(shù) 據 類 型 表 示 32 bits float 64 bits double Boolean 布 爾 變 量 下 邊 是 布 爾 變 量 的 兩 種 可 能 取 值: true false Character 字 符 下 邊 給 出 的 都 是 字 符 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑上產施工設備租賃合同
- 外籍專家聘用合同
- 押運員聘用合同書
- 企業(yè)合同管理臺賬介紹
- 家庭裝飾裝修服務合同
- 國際貿易銷售合同裝運條款
- 代理經營冰淇淋合同
- 鋼材購銷合同范本
- 城市軌道交通行車崗位實務 課件全套 談小平 模塊1-6 車輛段行車作業(yè)實務- 突發(fā)事件的行車處置作業(yè)實務
- 房屋屋面修繕合同范本
- 養(yǎng)老院新員工安全培訓
- 馬渭麗《月光下的中國》
- AQ-T 1009-2021礦山救護隊標準化考核規(guī)范
- DLT 5175-2021 火力發(fā)電廠熱工開關量和模擬量控制系統(tǒng)設計規(guī)程-PDF解密
- Q-GDW 11711-2017 電網運行風險預警管控工作規(guī)范
- 六年級語文下冊第五單元習作插上科學的翅膀飛公開課一等獎創(chuàng)新教學設計
- DB21-T 2808-2017郁金香種球擴繁技術規(guī)程
- 全國肉牛產業(yè)鏈分析報告
- 路邊小吃攤食品安全問題探究課件
- 人文關懷護理課件胃鏡室
- GB/T 21837-2023鐵磁性鋼絲繩電磁檢測方法
評論
0/150
提交評論