?? java.txt
字號:
Java的 動 態 特 性 是 其 面 向 對 象 設 計 方 法 的 發 展。 它 允 許 程 序 動 態 地 裝 入 運 行 過 程 中 所 需 要 的 類, 這 是C++語 言 進 行 面 向 對 象 程 序 設 計 所 無 法 實 現 的。 在C++程 序 設 計 過 程 中, 每 當 在 類 中 增 加 一 個 實 例 變 量 或 一 種 成 員 函 數 后, 引 用 該 類 的 所 有 子 類 都 必 須 重 新 編 譯, 否 則 將 導 致 程 序 崩 潰。Java從 如 下 幾 方 面 采 取 措施來 解 決 這 個 問 題。Java編 譯 器 不 是 將 對 實 例 變 量 和 成 員 函 數 的 引 用 編 譯 為 數 值 引 用, 而 是 將 符 號 引 用 信 息 在 字 節 碼 中 保 存 下 傳 遞 給 解 釋 器, 再 由 解 釋 器 在 完 成 動 態 連 接 類 后, 將 符 號 引 用 信 息 轉 換 為 數 值 偏 移 量。 這 樣, 一 個 在 存 儲 器 生 成 的 對 象 不 在 編 譯 過 程 中 決 定, 而 是 延 遲 到 運 行 時 由 解 釋 器 確 定 的。 這 樣, 對 類 中 的 變 量 和 方 法 進 行 更 新 時 就 不 至 于 影 響 現 存 的 代 碼。 解 釋 執 行 字 節 碼 時, 這 種 符 號 信 息 的 查 找 和 轉 換 過 程 僅 在 一 個 新 的 名 字 出 現 時 才 進 行 一 次, 隨 后 代 碼 便 可 以 全 速 執 行。 在 運 行 時 確 定 引 用 的 好 處 是 可 以 使 用 已 被 更 新 的 類, 而 不 必 擔 心 會 影 響 原 有 的 代 碼。 如 果 程 序 連 接 了 網 絡 中 另 一 系 統 中 的 某 一 類, 該 類 的 所 有 者 也 可 以 自 由 地 對 該 類 進 行 更 新, 而 不 會 使 任 何 引 用 該 類 的 程 序 崩 潰。 Java還 簡 化 了 使 用 一 個 升 級 的 或 全 新 的 協 議 的 方 法。 如 果 你 的 系 統 運 行Java程 序 時 遇 到 了 不 知 怎 樣 處 理 的 程 序, 沒 關 系,Java能 自 動 下 載 你 所 需 要 的 功 能 程 序。
1.3 與C和C++語 言 的 異 同
Java提 供 了 一 個 功 能 強 大 語 言 的 所 有 功 能, 但 幾 乎 沒 有 一 點 含 混 特 征。C++安 全 性 不 好, 但C和C++還 是 被 大 家 所 接 受, 所 以Java設 計 成C++形 式, 讓 大 家 很 容 易 學 習。Java去 掉 了C++語 言 的 許 多 功 能, 讓Java的 語 言 功 能 很 精 煉, 并 增 加 了 一些很 有 用 的 功 能, Java去 掉 了 以 下 幾 個C和C++功 能 和 特 征: 指 針 運 算 結 構 typedefs #define 需 要 釋 放 內 存 全 局 變 量 的 定 義 這個功 能 都 是 很 容 易 引 起 錯 誤 的 地 方。
1.4 Java的 應 用 簡 介
1.4.1 Web瀏 覽
Web瀏 覽 是 現 在 國 際 網 甚 至 局 域 網 的 主 要 使 用 方 式。 文 檔 能 很 容 易 地 顯 示 文 本 和 各 種 圖 片, 他 還 能 提 供 超 文 本 鏈 接。 這 些 瀏 覽 器 調 用HTML語 言 寫 的 文 檔,HTML/WWW瀏 覽 器 技 術 只 限 于 文 本 和 圖 象。 如 果 你 想 播 放 一 種 聲 音 或 運 行 一 個 演 示 程 序, 你 不 得 不 下 載 那 個 文 件 并 用 你 本 機 上 的 能 理 解 和 運 行 那 個 文 件 格 式 的 程 序 來 播 放 它。 Java程 序 和 它 的 瀏 覽 器HotJava, 提 供 了 可 讓 你 的 瀏 覽 器 運 行 程 序 的 方 法。 你 能 從 你 的 瀏 覽 器 里 直 接 播 放 聲 音。 你 還 能 播 放 頁 面 里 的 動 畫。Java還 能 告 訴 你 的 瀏 覽 器 怎 樣 處 理 新 的 類 型 文 件。 當 我 們 能 在2400 baud線 上 傳 輸 視 頻 圖 象 時,HotJava將 能 顯 示 這 些 視 頻。
1.4.2 網 絡 應 用 系 統
Java是 一 種 與 平 臺 無 關 的 語 言, 因 此 用Java開 發 的 網 絡 應 用 系 統 可 以 在 各 種 平 臺 上 運 行, 大 大 增 加 了 開 發 效 率, 減 少 重 復 勞 動。 而 且,Java集 成 的 網 絡 功 能 分 有 利 于 開 發 網 絡 應 用 系 統。
本 章 小 結:
1.Java的 產 生 與 流 行 是 當 今internet發 展 的 客 觀 要 求。
2.java是 一 門 各 方 面 性 能 都 很 好 的 編 程 語 言, 它 的 基 本 特 點 是 簡 單、 面 象 對 象、 分 布 式、 解 釋 的、健 壯 的、 安 全 的、 結 構 中 立 的、 可 移 植 的、 性 能 很 優 異 的、 多 線 程 的、 動 態 的。分 適 合 在internet環 境 上 開 發 應 用 系 統。
3.java可 以 制 作 大 部 分 網 絡 應 用 程 序 系 統, 而 且 與 當 今 流 行 的WWW瀏 覽 器 結 合 得 很 好。
第 二 章 Java程 序 開 發 與 運 行 環 境
2.1 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編 譯 器 則 用 于 生 成 這 些 字 節 碼。
2.1.1 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環 境 變 量 的 設 置。 路 徑 是 由 一 些 由 逗 號 隔 開 的 路 徑 名 組 成, 一 般 格 式 如 下: .; 例 如: .;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 編 譯 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定 義, 如 果 沒 有, 則 在 本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它 的 定 義, 如 果 還 沒 有, 則 繼 續 搜 索C:\\java\\doc\\classes目 錄 中 的 所 有 文 件, 以 此 類 推。
-d directory 指 明 類 層 次 的 根 目 錄, 格 式 如 下:javac -d MyProgram.java 這 樣 將MyProgram.java程 序 里 的 生 產 的.class文 件 存 放 在my_dir目 錄 里.
-g 帶 調 試 信 息 編 譯, 調 試 信 息 包 括 行 號 與 使 用java調 試 工 具 時 用 到 的 局 部 變 量 信 息。 如 果 編 譯 沒 有 加 上-O優 化 選 項, 只 包 含 行 號 信 息。
-nowarn 關 閉 警 告 信 息, 編 譯 器 將 不 顯 示 任 何 警 告 信 息。
-O 優 化 編 譯static,final,private函 數, 注 意 你 的 類 文 件 可 能 更 大。
-verbose 讓 編 譯 器 與 解 釋 器 顯 示 被 編 譯 的 源 文 件 名 和 被 加 載 的 類 名。
環 境 變 量
CLASSPATH 用 來 提?copy;給 系 統 搜 索 用 戶 定 義 的 類 的 缺 省 路 徑。 各 路 徑 由 分 號 隔 開, 例 如:.;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 編 譯 器 遇 到 一 個 新 類, 它 先 在 本 文 件 中 查 找 它 的 定 義, 如 果 沒 有, 則 在 本 文 件 所 處 目 錄 下 其 它 文 件 中 查 找 它 的 定 義, 如 果 還 沒 有, 則 繼 續 搜 索C:\\java\\doc\\classes目 錄 中 的 所 有 文 件, 以 此 類 推。
2.1.2 Java程 序 的 調 試 使 用java調 試 器
jdb導 游 在 早 期 前Betal版 的Java調 試 器jdb是 命 令 行 形 式 的, 如 用Sun公 司 的dbx調 試 器。 用jdb來 調 試Java應 用 程 序, 在 調 試 前, 要 確 證 你 的 應 用 程 序 是 帶 標 志 -g編 譯 的。 例 如: javac -g HelloWorld.java help命 令 將 顯 示jdb 里 的 可 用 命 令 列 表。
>help <命 令 列 表> threads [threadgroup]--列 出 線 程 thread - - 設 置 缺 省 線 程 Suspend [threads id(s)]- - 將 線 程 掛 起 resume [thread id(s)]- - 重 新 啟 動 線 程 where [id] |a1|- - 打 印 線 程 的 堆 棧 threadgroups--列 出 線 程 組 號 threadgroup -- 設 置 當 前 線 程 組 print [id(s)]- - 打 印 對 象 或 域 dump [id(s)]- - 打 印 所 有 對 象 信 息 locals- - 打 印 當 前 堆 棧 所 有 局 部 變 量 classes- - 列 出 當 前 所 知 的 類 methods - - 列 出 一 個 類 的 成 員 函 數 stop in .- - 在 一 個 成 員 函 數 里 設 置 斷 點 stop at :- - 在 一 行 里 設 置 斷 點 up [n frames]- - 在 線 程 堆 棧 里 往 上 移 down [n frames]- - 在 線 程 堆 棧 里 往 下 移 clear :- - 清 除 一 個 斷 點 step - - 執 行 當 前 行 cont- - 從 斷 點 處 繼 續 執 行 catch - - 為 指 定 的 情 況 中 斷 ignor - - 為 指 定 的 情 況 忽 略 list [line number]- - 打 印 源 程 序 use [Sourcefile path]- - 顯 示 或 改 變 源 路 徑 memeory- - 報 告 內 存 使 用 情 況 load classname- - 加 載Java類 以 便 調 試 run - - 開 始 執 行 加 載 的 類 !!- - 重 復 以 上 的 命 令 help(?)- - 列 出 所 有 的 命 令 exit( or quit)- - 離 開 調 試 器
2.1.3 Java程 序 的 執 行
java - java語 言 解 釋 器 java命 令 解 釋java 字 節 碼 語 法: java [ options ] classname java_g [ options ] classname
描 述: java命 令 由java編 譯 器javac輸 出 的Java字 節 碼。 classname參 數 是 要 執 行 的 類 名 稱。 注 意 任 意 在 類 名 稱 后 的 參 數 都 將 傳 遞 給 要 執 行 類 的main 函 數。 java執 行 完main函 數 后 推 出, 除 非main函 數 創 建 了 一 個 或 多 個 線 程。 如 果main函 數 創 建 了 其 它 線 程,java總 是 等 到 最 后 一 個 線 程 推 出 才 推 出。
選 項:
-cs, -checksource 當 一 個 編 譯 過 的 類 調 入 時, 這 個 選 項 將 比 較 字 節 碼 更 改 時 間 與 源 文 件 更 改 時 間, 如 果 源 文 件 更 改 時 間 靠 后, 則 重 新 編 譯 此 類 并 調 入 此 新 類。
-classpath path 定 義javac搜 索 類 的 路 徑。 它 將 覆 蓋 缺 省 的CLASSPATH環 境 變 量 的 設 置。 路 徑 是 由 一?copy;由 逗 號 隔 開 的 路 徑 名 組 成, 一 般 格 式 如 下: .; 例 如:.;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 關 閉 異 步 垃 圾 回 收 功 能。 此 選 項 打 開 后, 除 非 顯 式 調 用 或 程 序 內 存 溢 出, 垃 圾 內 存 都 不 回 收。 本 選 項 不 打 開 時, 垃 圾 回 收 線 程 與 其 它 線 程 異 步 同 時 執 行。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -