ASP JSP PHP 三 種 技 術 比 較 差 異 參 考 網 址 http://deargrass.pixnet.net/blog/post/30215497 伺 服 器 技 術 所 使 用 程 式 語 言 ASP VBScript VBScript ASP.NET C# C# ASP.NET VB Visual Basic.NET ColdFusion ColdFusion 標 記 語 言 (CFML) JSP Java PHP PHP ASP JavaScript JavaScript 目 前, 最 常 用 的 三 種 動 態 網 頁 語 言 有 ASP(Active Server Pages),JSP(Java Server Pages),PHP (Hypertext Preprocessor) 簡 介 ASP 全 名 Active Server Pages, 是 一 個 WEB 伺 服 器 端 的 開 發 環 境, 利 用 它 可 以 產 生 和 執 行 動 態 的 互 動 的 高 性 能 的 WEB 服 務 應 用 程 序 ASP 採 用 腳 本 語 言 VBScript(Java script) 作 為 自 己 的 開 發 語 言 PHP 是 一 種 跨 平 臺 的 伺 服 器 端 的 嵌 入 式 腳 本 語 言 它 大 量 地 借 用 C,Java 和 Perl 語 言 的 語 法, 並 耦 合 PHP 自 己 的 特 性, 使 WEB 開 發 者 能 夠 快 速 地 寫 出 動 態 產 生 頁 面 它 支 持 目 前 絕 大 多 數 數 據 庫 還 有 一 點,PHP 是 完 全 免 費 的, 不 用 花 錢, 你 可 以 從 PHP 官 方 站 點 (http: //www.php.net) 自 由 下 載 而 且 你 可 以 不 受 限 制 地 獲 得 源 碼, 甚 至 可 以 從 中 加 進 你 自 己 需 要 的 特 色 JSP 是 Sun 公 司 推 出 的 新 一 代 網 站 開 發 語 言,Sun 公 司 借 助 自 己 在 Java 上 的 不 凡 造 詣, 將 Java 從 Java 應 用 程 序 和 Java Applet 之 外, 又 有 新 的 碩 果, 就 是 JSP,Java Server Page JSP
可 以 在 Serverlet 和 JavaBean 的 支 持 下, 完 成 功 能 強 大 的 站 點 程 序 三 者 都 提 供 在 HTML 代 碼 中 混 合 某 種 程 序 代 碼 由 語 言 引 擎 解 釋 執 行 程 序 代 碼 的 能 力 但 JSP 代 碼 被 編 譯 成 Servlet 並 由 Java 虛 擬 機 解 釋 執 行, 這 種 編 譯 操 作 僅 在 對 JSP 頁 面 的 第 一 次 請 求 時 發 生 在 ASP PHP JSP 環 境 下,HTML 代 碼 主 要 負 責 描 述 信 息 的 顯 示 樣 式, 而 程 序 代 碼 則 用 來 描 述 處 理 邏 輯 普 通 的 HTML 頁 面 只 依 賴 Web 伺 服 器, 而 ASP PHP JSP 頁 面 需 要 附 加 的 語 言 引 擎 分 析 和 執 行 程 序 代 碼 程 序 代 碼 的 執 行 結 果 被 重 新 嵌 入 到 HTML 代 碼 中, 然 後 一 起 發 送 給 瀏 覽 器 ASP PHP JSP 三 者 都 是 面 向 Web 伺 服 器 的 技 術, 用 戶 端 瀏 覽 器 不 需 要 任 何 附 加 的 軟 體 支 持 技 術 特 點 ASP: 1. 使 用 VBScript JScript 等 簡 單 易 懂 的 腳 本 語 言, 結 合 HTML 代 碼, 即 可 快 速 地 完 成 網 站 的 應 用 程 序 2. 無 須 compile 編 譯, 容 易 編 寫, 可 在 伺 服 器 端 直 接 執 行 3. 使 用 普 通 的 文 本 編 輯 器, 如 Windows 的 記 事 本, 即 可 進 行 編 輯 設 計 4. 與 瀏 覽 器 無 關 (Browser Independence), 用 戶 端 只 要 使 用 可 執 行 HTML 碼 的 瀏 覽 器, 即 可 瀏 覽 Active Server Pages 所 設 計 的 網 頁 內 容 Active Server Pages 所 使 用 的 腳 本 語 言 (VBScript Jscript) 均 在 WEB 伺 服 器 端 執 行, 用 戶 端 的 瀏 覽 器 不 需 要 能 夠 執 行 這 些 腳 本 語 言 5. Active Server Pages 能 與 任 何 ActiveX scripting 語 言 兼 容 除 了 可 使 用 VB Script 或 JScript 語 言 來 設 計 外, 還 通 過 plug-in 的 方 式, 使 用 由 第 三 方 所 提 供 的 其 它 腳 本 語 言, 譬 如 REXX Perl Tcl 等 腳 本 引 擎 是 處 理 腳 本 程 序 的 COM(Component Object Model) 對 象 6. 可 使 用 伺 服 器 端 的 腳 本 來 產 生 用 戶 端 的 腳 本 7. ActiveX Server Components(ActiveX 伺 服 器 組 件 ) 具 有 無 限 可 擴 充 性 可 以 使 用 Visual PHP: Basic Java Visual C++ COBOL 等 程 序 設 計 語 言 來 編 寫 你 所 需 要 的 ActiveX Server Component 1. 數 據 庫 連 接 :PHP 可 以 編 譯 成 具 有 與 許 多 數 據 庫 相 連 接 的 函 數 PHP 與 MySQL 是 現 在 絕 JSP: 佳 的 群 組 合 你 還 可 以 自 己 編 寫 外 圍 的 函 數 去 間 接 存 取 數 據 庫 通 過 這 樣 的 途 徑 當 你 更 換 使 用 的 數 據 庫 時, 可 以 輕 鬆 地 修 改 編 碼 以 適 應 這 樣 的 變 化 PHP LIB 就 是 最 常 用 的 可 以 提 供 一 般 事 務 需 要 的 一 系 列 函 數 庫 但 PHP 提 供 的 數 據 庫 接 口 支 持 彼 此 不 統 一, 比 如 對 Oracle, MySQL,Sybase 的 接 口, 彼 此 都 不 一 樣 這 也 是 PHP 的 一 個 弱 點 1. 將 內 容 的 產 生 和 顯 示 進 行 分 離 : 使 用 JSP 技 術,Web 頁 面 開 發 人 員 可 以 使 用 HTML 或 者 XML 標 識 來 設 計 和 格 式 化 最 終 頁 面 使 用 JSP 標 識 或 者 小 腳 本 來 產 生 頁 面 上 的 動 態 內 容 產 生 內 容 的 邏 輯 被 封 裝 在 標 識 和 JavaBeans 群 組 件 中, 並 且 捆 綁 在 小 腳 本 中, 所 有 的 腳 本 在 伺 服 器 端 執 行 如 果 核 心 邏 輯 被 封 裝 在 標 識 和 Beans 中, 那 麼 其 它 人, 如 Web 管 理 人 員 和 頁 面 設 計 者, 能 夠 編 輯 和 使 用 JSP 頁 面, 而 不 影 響 內 容 的 產 生 在 伺 服 器 端,JSP 引 擎 解 釋 JSP 標 識, 產 生 所 請 求 的 內 容 ( 例 如, 通 過 存 取 JavaBeans 群 組 件, 使 用 JDBC 技 術 存 取 數 據 庫 ), 並 且 將 結 果 以 HTML( 或 者 XML) 頁 面 的 形 式 發 送 回 瀏 覽 器 這 有 助 於 作 者 保 護 自 己 的 代 碼, 而 又 保 證 任 何 HTML 的 Web 瀏 覽 器 的 完 全 可 用 性
2. 強 調 可 重 用 的 群 組 件 : 絕 大 多 數 JSP 頁 面 依 賴 可 重 用 且 跨 平 臺 的 組 件 ( 如 :JavaBeans 或 者 Enterprise JavaBeans) 來 執 行 應 用 程 序 所 要 求 的 更 為 複 雜 的 處 理 開 發 人 員 能 夠 共 享 和 交 換 執 行 普 通 操 作 的 組 件, 或 者 使 得 這 些 組 件 為 更 多 的 使 用 者 或 者 用 戶 團 體 所 使 用 基 於 組 件 的 方 法 加 速 了 總 體 開 發 過 程, 並 且 使 得 各 種 群 組 織 在 他 們 現 有 的 技 能 和 優 化 結 果 的 開 發 努 力 中 得 到 平 衡 3. 採 用 標 識 簡 化 頁 面 開 發 :Web 頁 面 開 發 人 員 不 會 都 是 熟 悉 腳 本 語 言 的 程 序 設 計 人 員 Java Server Page 技 術 封 裝 了 許 多 功 能, 這 些 功 能 是 在 易 用 的 與 JSP 相 關 的 XML 標 識 中 進 行 動 態 內 容 產 生 所 需 要 的 標 準 的 JSP 標 識 能 夠 存 取 和 實 例 化 JavaBeans 組 件, 設 定 或 者 檢 索 群 組 件 屬 性, 下 載 Applet 以 及 執 行 用 其 它 方 法 更 難 於 編 碼 和 耗 時 的 功 能 通 過 開 發 定 制 化 標 識 庫,JSP 技 術 是 可 以 擴 展 的 今 後, 第 三 方 開 發 人 員 和 其 它 人 員 可 以 為 常 用 功 能 建 立 自 己 的 標 識 庫 這 使 得 Web 頁 面 開 發 人 員 能 夠 使 用 熟 悉 的 工 具 和 如 同 標 識 一 樣 的 執 行 特 定 功 能 的 構 件 來 工 作 JSP 技 術 很 容 易 整 合 到 多 種 應 用 體 系 結 構 中, 以 利 用 現 存 的 工 具 和 技 巧, 並 且 擴 展 到 能 夠 支 持 企 業 級 的 分 布 式 應 用 作 為 採 用 Java 技 術 家 族 的 一 部 分, 以 及 Java 2EE 的 一 個 成 員,JSP 技 術 能 夠 支 持 高 度 複 雜 的 Web 應 用 由 於 JSP 頁 面 的 內 置 腳 本 語 言 是 基 於 Java 程 序 設 計 語 言 的, 而 且 所 有 的 JSP 頁 面 都 被 編 譯 成 為 Java Servlet,JSP 頁 面 就 具 有 Java 技 術 的 所 有 好 處, 包 括 健 壯 的 存 儲 管 理 和 安 全 性 作 為 Java 平 臺 的 一 部 分,JSP 擁 有 Java 程 序 設 計 語 言 一 次 編 寫, 各 處 執 行 的 特 點 隨 著 越 來 越 多 的 供 貨 商 將 JSP 支 持 加 入 到 他 們 的 產 品 中, 您 可 以 使 用 自 己 所 選 擇 的 伺 服 器 和 工 具, 修 改 工 具 或 伺 服 器 並 不 影 響 目 前 的 應 用 應 用 範 圍 ASP 是 Microsoft 開 發 的 動 態 網 頁 語 言, 也 繼 承 了 微 軟 產 品 的 一 貫 傳 統, 只 能 執 行 於 微 軟 的 伺 服 器 產 品,IIS(Internet Information Server) (windows NT) 和 PWS(Personal Web Server)(windows 98) 上 Unix 下 也 有 ChiliSoft 的 組 件 來 支 持 ASP, 但 是 ASP 本 身 的 功 能 有 限, 必 須 通 過 ASP+COM 的 群 組 合 來 擴 充,Unix 下 的 COM 實 現 起 來 非 常 困 難 PHP3 可 在 Windows Unix Linux 的 Web 伺 服 器 上 正 常 執 行, 還 支 持 IIS Apache 等 一 般 的 Web 伺 服 器, 用 戶 更 換 平 臺 時, 無 需 變 換 PHP3 代 碼, 可 即 拿 即 用 JSP 同 PHP3 類 似, 幾 乎 可 以 執 行 於 所 有 平 臺 如 Win NT,Linux,Unix 在 NT 下 IIS 通 過 一 個 外 加 伺 服 器, 例 如 JRUN 或 者 ServletExec, 就 能 支 持 JSP 知 名 的 Web 伺 服 器 Apache 已 經 能 夠 支 持 JSP 由 於 Apache 廣 泛 應 用 在 NT Unix 和 Linux 上, 因 此 JSP 有 更 廣 泛 的 執 行 平 臺 雖 然 現 在 NT 操 作 係 統 佔 了 很 大 的 市 場, 但 是 在 伺 服 器 方 面 Unix 的 優 勢 仍 然 很 大, 而 新 崛 起 的 Linux 更 是 來 勢 不 小 從 一 個 平 臺 移 植 到 另 外 一 個 平 臺,JSP 和 JavaBean 甚 至 不 用 重 新 編 譯, 因 為 Java 程 式 碼 都 是 標 準 的 與 平 臺 無 關 的 性 能 比 較 有 人 做 過 試 驗, 對 這 三 種 語 言 分 別 做 迴 圈 性 能 測 試 及 存 取 Oracle 數 據 庫 測 試 在 循 環 性 能 測 試 中,JSP 只 用 了 令 人 吃 驚 的 四 秒 鐘 就 結 束 了 20000*20000 的 迴 圈 而 ASP PHP 測 試 的 是 2000*2000 循 環 ( 少 一 個 數 量 級 ), 卻 分 別 用 了 63 秒 和 84 秒 ( 參 考 PHPLIB) 數 據 庫 測 試 中, 三 者 分 別 對 Oracle 8 進 行 1000 次 Insert,Update,Select 和 Delete: JSP 需 要 13 秒,PHP 需 要 69 秒,ASP 則 需 要 73 秒
前 景 分 析 目 前 在 國 內 PHP 與 ASP 應 用 最 為 廣 泛 而 JSP 由 於 是 一 種 較 新 的 技 術, 國 內 採 用 的 較 少 但 在 國 外,JSP 已 經 是 比 較 流 行 的 一 種 技 術, 尤 其 是 電 子 商 務 類 的 網 站, 多 採 用 JSP 採 用 PHP 的 網 站 如 新 浪 網 (sina) 中 國 人 (Chinaren) 等, 但 由 於 PHP 本 身 存 在 的 一 些 缺 點, 使 得 它 不 適 合 應 用 於 大 型 電 子 商 務 站 點, 而 更 適 合 一 些 小 型 的 商 業 站 點 首 先,PHP 缺 乏 規 模 支 持 其 次, 缺 乏 多 層 結 構 支 持 對 於 大 負 荷 站 點, 解 決 方 法 只 有 一 個 : 分 布 計 算 數 據 庫 應 用 邏 輯 層 表 示 邏 輯 層 彼 此 分 開, 而 且 同 層 也 可 以 根 據 流 量 分 開, 群 組 成 二 維 數 組 而 PHP 則 缺 乏 這 種 支 持 還 有 上 面 提 到 過 的 一 點,PHP 提 供 的 數 據 庫 接 口 支 持 不 統 一, 這 就 使 得 它 不 適 合 運 用 在 電 子 商 務 中 ASP 和 JSP 則 沒 有 以 上 缺 陷,ASP 可 以 通 過 Microsoft Windowsd 的 COM/DCOM 獲 得 ActiveX 規 模 支 持, 通 過 DCOM 和 Transcation Server 獲 得 結 構 支 持 ;JSP 可 以 通 過 SUN Java 的 Java Class 和 EJB 獲 得 規 模 支 持, 通 過 EJB/CORBA 以 及 眾 多 廠 商 的 Application Server 獲 得 結 構 支 持 三 者 中,JSP 應 該 是 未 來 發 展 的 趨 勢 世 界 上 一 些 大 的 電 子 商 務 解 決 方 案 提 供 商 都 採 用 JSP/Servlet 比 較 出 名 的 如 IBM 的 E-business, 它 的 核 心 是 採 用 JSP/Servlet 的 Web Sphere 它 們 都 是 通 過 CGI 來 提 供 支 持 的 但 去 年 10 月 後 它 推 出 了 Enfinity, 一 個 採 用 JSP/Servlet 的 電 子 商 務 Application Server, 而 且 聲 言 不 再 開 發 傳 統 軟 體 總 之,ASP,PHP,JSP 三 者 都 有 相 當 數 量 的 支 持 者, 由 此 也 可 以 看 出 三 者 各 有 所 長 正 在 學 習 或 使 用 動 態 頁 面 的 朋 友 可 根 據 三 者 的 特 點 選 擇 一 種 適 合 自 己 的 語 言 ASP:ActiveX Server Page ASP 我 們 先 來 談 談 它, 因 為 ASP 是 到 現 在 開 發 人 群 最 廣 的 一 個 技 術 了, 所 以 想 來 大 家 也 會 對 它 最 關 注 ASP 是 一 個 近 乎 完 美 的 想 法, 可 是 因 為 MS 一 個 大 環 境 的 問 題 所 以 在 一 些 方 面 反 使 它 縮 小 在 了 一 個 小 的 框 架 中, 如 果 它 能 更 好 的 跳 出 這 個 框 架, 我 想 以 它 現 在 的 基 礎 將 無 人 可 比 ASP 更 精 確 的 說 是 一 箇 中 要 件, 這 箇 中 要 件 將 Web 上 的 請 求 轉 入 到 一 個 解 釋 器 中, 在 這 個 解 釋 器 中 將 所 有 的 ASP 的 Script 進 行 分 析, 再 進 行 執 行, 而 這 時 可 以 在 這 箇 中 間 件 中 去 創 建 一 個 新 的 COM 對 象, 對 這 個 對 象 中 的 屬 性 和 方 法 進 行 操 作 和 調 用, 同 時 再 通 過 這 些 COM 組 件 再 完 成 更 多 的 工 作 所 以 說,ASP 強 大 的 不 在 於 它 的 VBScript, 而 在 於 它 後 台 的 COM 組 件, 這 些 組 件 來 無 限 的 擴 充 了 ASP 的 能 力 優 點 : 1 簡 單 易 學 Basic 有 誰 不 會? 很 少 會 有 人 舉 手, 所 以 有 人 在 說 這 個 開 發 基 礎 是 最 廣 的 而 且 MS 有 一 向 做 的 非 常 好 的 聯 機 手 冊, 本 地 化 語 言 的 幫 助, 同 時 非 常 快 的 出 現 教 學 書 籍, 這 樣 會 大 大 方 便 開 發 人 員 的 學 習 和 對 技 術 的 深 入 研 究 2 安 裝 使 用 方 便 裝 好 一 個 Windows 2000, 只 要 你 安 裝 了 IIS 哪 麼 ASP 就 可 以 使 用 了, 從 沒 有 什 麼 需 要 你 花 心 思 去 配 置 的 而 說 實 話,ASP 的 調 優 也 不 難 做, 而 要 做 到 最 細 時 也 不 是 一 般 人 能 做 的 了 的 3 開 發 工 具 強 大 而 多 樣 這 個 我 不 用 說 了, 可 以 說 的 就 是 我 以 前 使 用 VB 中 的 Web Class 開 發 出 的 Web 應 用 一 點 不 差, 當 時 讓 許 多 人 大 吃 一 驚,VB 也 能 做 ASP 上 的 應 用!!! 其 實 這 正 說 明 瞭 ASP 開 發 工 具 的 多 樣 化, 同 時 牠 們 的 功 能 也 很 強, 這 一 點 已 經 被 許 多 程 序 員 所 津
津 樂 道 易 用 簡 單 人 性 化, 這 本 就 是 微 軟 的 強 項 喲 4 效 率 高 在 低 的 訪 問 量 下,ASP 能 體 現 出 一 定 的 效 率, 這 時 它 對 機 器 的 要 求 並 不 高 缺 點 : 1 Windows 本 身 的 所 有 問 題 都 會 一 成 不 變 的 也 累 加 到 了 它 的 身 上 安 全 性 穩 定 性 跨 平 台 性 (Win2K 已 經 不 再 支 持 Alpha 了 ) 都 會 因 為 與 NT 的 綑 綁 而 顯 現 出 來 2 ASP 由 於 使 用 了 COM 組 件 所 以 它 會 變 的 十 分 強 大, 但 是 這 樣 的 強 大 由 於 Windows NT 系 統 最 初 的 設 計 問 題 而 會 引 發 大 量 的 安 全 問 題 只 要 在 這 樣 的 組 件 或 是 操 作 中 一 不 注 意, 哪 麼 外 部 攻 擊 就 可 以 取 得 相 當 高 的 權 限 而 導 致 網 站 癱 瘓 或 者 資 料 丟 失 3 由 於 ASP 還 是 一 種 Script 語 言 所 沒 除 了 大 量 使 用 組 件 外, 沒 有 辦 法 提 高 其 工 作 效 率 它 必 須 面 對 即 時 編 譯 的 時 間 考 驗, 同 時 我 們 還 不 知 其 背 後 的 組 件 會 是 一 個 什 麼 樣 的 狀 況 4 無 法 實 現 跨 操 作 系 統 的 應 用 當 然 這 也 是 微 軟 的 理 由 之 一, 祇 有 這 樣 才 能 發 揮 ASP 最 佳 的 能 力 可 是 我 卻 認 為 正 是 Windows 限 制 了 ASP,ASP 的 概 念 本 就 是 為 一 個 能 讓 系 統 運 行 於 一 個 大 的 多 樣 化 環 境 而 設 計 的 5 還 無 法 完 全 實 現 一 些 企 業 級 的 功 能 : 完 全 的 集 群 負 載 均 橫 總 結 : 適 用 人 群 : 熟 悉 MS 架 構 的 人 員 想 用 最 短 的 時 間 學 習, 同 時 想 用 最 簡 單 的 方 式 完 成 自 己 的 應 用 適 用 平 台 :Windows 系 列 平 台 適 用 應 用 : 企 業 內 部 管 理 信 息 系 統 中 小 Internet 應 用 快 速 資 料 庫 開 發 的 應 用 學 習 方 式 :IIS 4 Online Help( 中 文 )MSDN Lib 相 關 知 識 市 場 上 眾 多 的 ASP 書 籍 推 荐 開 發 工 具 :Visual InterDev/Home Site/Front Page 推 荐 開 發 環 境 :Windows 2000 Server/MS SQL 推 荐 應 用 環 境 ( 最 少 ):Windows 2000 Server/MS SQL 7/PIII 500/256M RAM/18G HD ======================================================================= PHP:Personal HomePage PHP 是 一 個 什 麼 原 因 出 現 的 呢? 它 是 一 個 技 術 人 員 希 望 能 用 一 個 快 速 的 方 面 來 完 成 他 自 己 的 個 人 主 頁 中 的 一 個 小 應 用 而 在 他 一 發 不 可 收 時 出 現 了 PHP, 它 使 一 個 人 能 在 多 種 操 作 系 統 下 迅 速 的 完 成 一 個 輕 型 的 Web 應 用 所 以 在 短 短 的 幾 年 裏,PHP 迅 速 的 升 級 了 它 的 版 本, 同 時 在 GNU 的 世 界 裏 找 到 了 一 個 青 梅 竹 馬 的 伙 伴 ----Apache 這 終 於 讓 PHP 有 了 基 礎, 能 在 一 個 最 佳 的 環 境 中 運 行, 同 時 由 於 兩 個 產 品 都 是 公 開 源 代 碼 的 產 品, 所 以 大 家 可 以 使 用 牠 們 的 源 代 碼 將 這 兩 個 產 品 用 最 完 美 的 方 式 結 合 到 一 起, 使 用 起 來 就 如 一 個 產 品 一 樣 個 人 認 為 PHP 是 自 由 軟 體 在 web 應 用 平 台 上 一 個 決 勝 的 工 具, 如 果 沒 有 PHP 的 出 現, 還 會 有 許 多 人 認 為 自 由 軟 體 就 代 表 了 對 開 發 人 員 的 高 技 術 要 求 難 記 的 代 碼 複 雜 的 工 具...PHP 使 一 個 會 使 用 basic 的 人 員 在 極 短 的 時 間 裏 快 迅 學 習 並 完 成 用 戶 需 要 的 應 用 怎 麼 說 PHP 呢? 如 果 說 ASP 是 一 個 COM, 哪 麼 PHP 說 的 更 精 確 了 可 以 說 PHP 是 一 個 純 粹 的 Script 翻 譯 器 這 也 是 PHP 由 3 升 級 為 4 的 一 個 重 大 原 因, 在 4 這 個 版 本 裏 它 重 寫 了 語 法 分 析 器, 從 而 加 快 了 PHP 整 體 的 效 能 而 且 從 中 你 也 就 會 明 白 為 什 麼 PHP 需 要 支 持 這 種 或 是 那 種 擴 充 功 能 時 它 一 定 要 與 相 應 系 統 的 lib 庫 進 行 再 編 譯 的 原 因 正 因 為 它 是 正 宗 的 翻 譯 器, 所 以 它 是 將 script 翻 譯 成 為 需 要 執 行 的 函 數, 再 去 執 行 牠 們, 外 部 擴 充 不 能 由 一 些 動 態 加 載 的 方 式 進 行, 所 以 只 能 靜 態 的 編 譯 進 PHP 中 ( 這 只 能 在 windows 中 除 外 )
優 點 : 1 一 種 能 快 速 學 習 跨 平 台 有 良 好 資 料 庫 交 互 能 力 的 開 發 語 言 ASP 比 不 上 它 的 就 是 這 種 跨 平 台 能 力 了, 而 正 是 它 的 這 種 能 力 讓 Unix/Linux 有 了 一 種 與 ASP 媲 美 的 開 發 語 言 語 法 簡 單 書 寫 容 易 現 在 市 面 上 也 有 了 大 量 的 書, 同 時 Internet 上 也 有 大 量 的 代 碼 可 以 共 享, 對 於 一 個 初 學 者 想 學 些 高 深 的 Unix 下 的 開 發 來 說 是 一 個 決 好 的 入 手 點 2 與 Apache 及 其 它 擴 展 庫 結 合 緊 密 PHP 與 Apache 可 以 以 靜 態 編 譯 的 方 式 結 合 起 來, 而 與 其 它 的 擴 展 庫 也 可 以 用 這 樣 的 方 式 結 合 ( 除 外 的 就 是 Windows 平 台 了 ) 這 樣 的 方 式 的 最 大 的 好 處 就 是 最 大 化 的 利 用 了 cpu 時 和 內 存, 同 時 極 為 有 效 的 利 用 了 apache 的 高 性 能 的 吞 吐 能 力 同 時 外 部 的 擴 展 也 是 靜 態 連 編, 從 而 達 到 了 最 快 的 運 行 速 度 由 於 與 資 料 庫 的 接 口 也 使 用 了 這 樣 的 方 式, 所 以 使 用 的 是 本 地 化 的 調 用, 這 也 讓 資 料 庫 發 揮 了 最 佳 效 能 3 良 好 的 安 全 性 由 於 PHP 本 身 的 代 碼 開 放 所 以 它 的 代 碼 在 許 多 工 程 師 手 中 進 行 了 檢 測, 同 時 它 與 apache 編 譯 在 一 起 的 方 式 也 可 以 讓 它 具 有 靈 活 的 安 全 設 定 所 以 到 現 在 為 止, PHP 具 有 了 公 認 的 安 全 性 能 缺 點 : 1 資 料 庫 支 持 的 極 大 變 化 由 於 PHP 的 所 有 的 擴 展 接 口 都 是 獨 立 團 隊 開 發 完 成 的, 同 時 在 開 發 時 為 了 形 成 相 應 資 料 的 個 性 化 操 作, 所 以 PHP 雖 然 支 持 許 多 資 料 庫, 可 是 針 對 每 種 資 料 庫 的 開 發 語 言 都 完 全 不 同 這 樣 形 成 針 對 一 種 資 料 庫 的 工 發 工 作, 在 資 料 庫 進 行 升 級 後 需 要 開 發 人 員 進 行 幾 乎 全 部 的 代 碼 更 改 工 作 而 為 了 讓 應 用 支 持 更 多 種 的 資 料 庫, 就 需 要 開 發 人 員 將 同 樣 的 資 料 庫 操 作 使 用 不 同 的 代 碼 寫 出 n 種 代 碼 庫 出 來, 讓 程 序 員 的 工 作 量 大 大 增 大 2 安 裝 複 雜 由 於 PHP 的 每 一 種 擴 充 模 塊 並 不 是 完 全 由 PHP 本 身 來 完 成, 需 要 許 多 外 部 的 應 用 庫, 如 圖 形 需 要 gd 庫 LDAP 需 要 LDAP 庫. 這 樣 在 安 裝 完 成 相 應 的 應 用 後, 再 聯 編 進 PHP 中 來 這 也 就 是 我 以 前 在 代 碼 聯 盟 新 聞 組 中 對 網 友 所 說 的 一 定 要 在 FreeBSD/Linux/Unix 下 運 行 PHP 的 原 因 祇 有 在 這 些 環 境 下 才 能 方 便 的 編 譯 對 應 的 擴 展 庫 這 些 都 是 一 般 開 發 人 員 在 使 用 PHP 前 所 先 要 面 對 的 問 題, 正 是 這 樣 的 問 題 讓 許 多 開 發 人 員 轉 而 使 用 其 它 的 開 發 語 言, 必 竟 Unix 沒 有 那 麼 多 的 用 戶 3 缺 少 企 業 級 的 支 持 沒 有 組 件 的 支 持, 哪 麼 所 有 的 擴 充 就 只 能 依 靠 PHP 開 發 組 所 給 出 的 接 口, 事 實 上 這 樣 的 接 口 還 不 夠 多 同 時 難 以 將 集 群 應 用 伺 服 器 這 樣 的 特 性 加 入 到 系 統 中 去 而 一 個 大 型 的 站 點 或 是 一 個 企 業 級 的 應 用 一 定 需 要 這 樣 的 支 持 的 注 : 在 PHP 的 4.0 版 本 以 後 加 入 了 對 servlet/javabean 的 支 持, 也 許 這 樣 的 支 持 會 在 以 後 的 版 本 中 更 加 增 強, 也 許 這 樣 的 支 持 會 是 PHP 以 後 的 企 業 級 支 持 的 起 點 4 缺 少 正 規 的 商 業 支 持 這 也 是 自 由 軟 體 一 向 的 缺 點, 我 想 在 國 內 PHP 的 開 發 人 員 正 在 快 速 增 加, 相 信 在 不 久 的 將 來, 這 樣 的 支 持 能 多 起 來 5 無 法 實 現 商 品 化 應 用 的 開 發 由 於 PHP 沒 有 任 何 編 譯 性 的 開 發 工 作, 所 有 的 開 發 都 是 基 於 腳 本 技 術 來 完 成 的 所 以 所 有 的 源 代 碼 都 無 法 編 譯, 所 以 做 完 成 的 應 用 只 能 是 自 己 或 是 內 部 使 用, 無 法 實 現 商 品 化 總 結 : 適 用 人 群 : 熟 悉 Unix 環 境, 需 要 在 最 少 的 投 入 下 完 成 快 速 的 應 用 開 發 適 用 平 台 :FreeBSD/Linux/Unix 操 作 系 統 Apache 伺 服 器 適 用 應 用 :Internet 高 訪 問 量 快 速 資 料 庫 開 發 的 應 用
學 習 方 式 :Internet 上 國 內 豐 富 的 資 源 Internet 上 豐 富 的 源 代 碼 資 源, 完 全 可 以 參 考 這 樣 的 例 程 來 完 成 自 己 的 應 用 市 場 上 最 近 出 版 的 好 幾 本 PHP 手 冊 推 荐 開 發 工 具 :Home Site/PHPEd 推 荐 開 發 環 境 :FreeBSD 4.1/RedHat 6.1 操 作 系 統 /Apache 1.3.12/MySQL 3.22/P 200/64M RAM/9G HD 推 荐 應 用 環 境 ( 最 少 ):FreeBSD 3.5/MySQL 3.22/Apache 1.3.12/P 200/128M RAM/9G HD 推 荐 應 用 環 境 ( 最 佳 ):FreeBSD 3.5/Sybase 11/Apache 1.3.12/P III 500/512M RAM/18G HD ======================================================================= JSP:Java Server Page JSP 又 是 什 麼 原 因 出 現 的 呢?Java 在 推 向 開 發 人 員 時 出 現 了 重 重 困 難, 首 先 是 Java 缺 少 主 流 系 統 的 廣 泛 支 持, 而 在 所 有 的 平 台 和 技 術 上 都 缺 少 可 以 直 接 參 照 的 應 用 方 式 這 時 java 就 走 向 了 在 各 個 應 用 層 上 的 積 極 進 取, 在 自 己 擅 長 的 與 不 擅 長 的 領 域 都 走 出 了 堅 定 的 腳 步 其 中 最 讓 Web 技 術 人 員 興 奮 的 就 是 Java Servlet 的 出 現 和 JSP 的 漸 漸 成 熟, 這 一 步 步 都 讓 Java 正 式 的 走 向 了 Web 開 發 技 術 的 舞 台 Java 利 用 了 它 的 跨 平 台 技 術, 使 java 的 應 用 能 快 速 的 部 署 在 各 個 平 台 上, 而 真 的 可 以 一 處 編 寫 隨 處 運 行 它 有 較 的 利 用 了 這 個 優 勢, 巧 妙 的 將 java 的 通 用 性 JSP 的 易 用 性 servlet 的 速 度 結 合 在 一 起, 利 用 平 台 部 署 上 的 技 巧 有 效 的 屏 蔽 java 的 速 度 問 題, 所 以 Java 迅 速 的 在 Web 開 發 人 員 的 團 員 中 推 廣 開 來 攜 著 Java Bean EJB Java Application Server Java 事 務 伺 服 器 等 這 樣 的 強 大 後 台 走 向 了 真 正 的 成 熟 應 用 JSP 到 底 是 一 個 什 麼 樣 的 語 言 呢? 實 際 上 JSP 就 是 Java, 祇 是 它 是 一 個 特 別 的 Java 語 言, 加 入 了 一 個 特 殊 的 引 擎, 這 個 引 擎 將 HTTPServlet 這 個 類 的 一 些 對 象 自 動 進 行 初 始 化 好 讓 用 戶 使 用, 而 用 戶 不 用 再 去 操 心 前 面 的 工 作 同 時 這 個 引 擎 又 引 入 了 <JSP:* <%@ 等 一 系 列 的 特 別 語 法, 使 用 這 些 語 法 來 進 行 一 些 特 定 的 操 作, 如 引 用 文 件 URL 轉 向 JavaBean 引 用 等 這 樣 的 操 作, 這 些 都 是 由 引 擎 自 動 幫 你 完 成 初 始 化 的 工 作 我 們 可 以 將 這 個 引 擎 看 作 一 個 JSP 到 Java Servlet 的 生 成 器 或 是 翻 譯 器, 讓 用 戶 不 用 再 面 對 複 雜 的 Servlet 中 的 還 沒 開 始 工 作 就 要 寫 的 幾 十 行 代 碼 這 就 是 JSP-- 一 個 Java Servlet 生 成 器 JSP->Java Servlet Code(.java 文 件 )->Java Runtime Bin Code(.class 文 件 ), 這 就 是 為 什 麼 我 們 第 一 次 運 行 JSP 時 CPU 運 行 能 達 到 很 高 的 原 因, 它 實 際 上 是 調 用 了 JSP 引 擎 來 生 成 java 文 件, 再 用 javac 來 編 譯 它 到 class 文 件, 這 才 能 去 執 行 它 同 時 也 說 明 瞭 在 第 一 次 運 行 以 後, 速 度 為 什 麼 哪 麼 快 的 原 因, 只 要 這 個 JSP 文 件 不 改 變 哪 麼 這 個 操 作 就 不 再 會 進 行 了 ( 除 非 你 刪 除 了 class 文 件 ) 所 以 說,java 有 什 麼 JSP 就 有 什 麼 樣 的 功 能, 與 asp 一 樣,JSP 的 真 正 力 量 是 我 們 永 遠 看 不 到 頭 的! 優 點 : 1 一 處 編 寫 隨 處 運 行 這 是 一 個 程 序 員 的 夢 想, 也 是 從 前 的 程 序 員 的 惡 夢, 為 了 在 不 同 的 平 台 間 運 行, 使 許 多 程 序 員 一 行 行 的 重 寫 代 碼 在 這 一 點 上 java 已 經 給 了 我 最 完 美 的 答 案 它 做 的 要 比 PHP 更 出 色, 除 了 系 統 之 外, 你 的 代 碼 不 用 做 一 點 更 改 的 2 系 統 的 多 台 平 支 持 我 已 經 在 差 不 多 所 有 平 台 上 見 到 了 一 致 的 java servlet/jsp 的 Web Server/Application Server 系 統 它 可 以 讓 你 在 任 意 環 境 做 開 發, 在 任 意 環 境 進 行 系 統 部 署, 在 任 意 環 境 擴 展 相 比 asp/php 的 侷 限 性 是 顯 面 易 見 的 3 強 大 的 的 可 伸 縮 性 從 祇 有 一 個 小 的 jar 文 件 就 可 以 運 行 servlet/jsp 到 由 多 台 伺 服 器 進 行 集 群 和 負 載 均 橫, 到 多 台 Application 進 行 事 務 處 理 消 息 處 理... 一 台 伺 服 器 到 無 數 以 伺 服 器,Java 顯 示 了 一 個 巨 人 的 生 命 力
4 多 樣 化 和 功 能 強 大 的 開 發 工 具 支 持 這 一 點 與 asp 很 像,java 已 經 有 了 許 多 非 常 優 秀 的 開 發 工 具 而 且 有 許 多 可 以 免 費 得 到, 並 且 其 中 的 許 多 已 經 可 以 順 利 的 運 行 於 多 種 平 台 之 下 如 果 你 細 心 的 使 用 牠 們 會 發 現 比 自 己 第 一 面 看 到 牠 們 時 的 功 能 要 強 大 的 多 缺 點 : 1 與 ASP 一 樣,Java 的 一 些 優 勢 正 是 它 致 命 的 問 題 所 在 正 是 由 於 為 了 跨 平 台 的 功 能, 為 了 極 度 的 伸 縮 能 力, 所 以 極 大 的 增 加 了 產 品 的 複 雜 性 這 麼 說, 它 在 擴 展 時 需 要 的 分 成 多 少 塊, 哪 麼 java 系 統 中 就 有 多 少 種 產 品 所 以 你 要 以 看 到 jre jdk jsdk jswdk, 實 際 上 牠 們 只 要 有 效 的 搭 配 在 一 起, 就 可 以 產 生 強 大 的 效 能, 密 不 可 分, 但 是 對 於 一 位 初 學 者 來 說 : 有 沒 有 搞 錯! 難 道 讓 我 運 行 一 個 JSP 就 要 這 麼 多 亂 七 八 糟 的 東 西! 2 從 出 現 的 第 一 天 起 就 被 對 手 痛 罵 的 : 慢 如 老 牛 真 的, 我 在 第 一 次 運 行 我 的 JSP 時, 我 竟 然 以 為 我 的 機 器 死 機 而 將 哪 個 進 程 給 kill 了! 第 一 次 編 譯 運 行 對 於 使 用 者 來 說 真 是 一 場 惡 夢, 在 開 發 時 我 經 常 晚 上 做 夢 在 看 WinNT 的 任 務 管 理 器 CPU 格 全 綠 時 等 著 降 下 來 的 樣 子 和 感 覺 3 技 巧 還 是 技 巧 一 個 短 處 就 一 定 要 付 出 代 價 的 Java 的 運 行 速 度 是 用 將 class 常 駐 內 存 來 完 成 的, 所 以 它 在 一 些 情 況 下 所 使 用 的 內 存 比 起 用 戶 數 量 來 說 卻 實 是 最 低 性 能 價 格 比 了 另 一 方 面 來 說, 它 還 需 要 硬 盤 空 間 來 存 儲 一 系 列 的.java 文 件 和.class 文 件 以 及 對 應 的 版 本 文 件 4 缺 少 系 統 性 的 資 料 這 也 許 不 該 說, 但 是 sun 在 國 內 做 的 卻 實 很 差 勁,java 的 資 烊 在 國 內 極 少, 到 現 在 我 還 沒 有 在 書 店 裏 看 到 一 本 JSP 的 書, 而 對 java 體 系 的 論 述 書 更 是 少 而 又 少, 與 java 相 關 的 書 ( 中 文 版 ) 到 現 在 不 過 三 位 數 而 再 看 看 之 中 大 量 的 具 然 還 在 講 Visual J++ 或 是 Java 1.1 這 樣 的 陣 年 舊 貨 總 結 : 適 用 人 群 : 具 有 較 強 學 習 能 力 和 耐 心 的 開 發 人 員 投 入 低 但 是 希 望 擁 有 較 大 的 伸 縮 能 力 的 應 用 適 用 平 台 :( 太 多 而 只 不 再 一 一 列 說 ) 適 用 應 用 :Internet/Intranet 高 可 靠 性 應 用 Internet/Intranet 與 Client /Server 結 合 的 應 用 系 統 學 習 方 式 :Java 的 Doc 文 檔 和 java 站 點 中 的 一 系 文 檔 Internet 的 源 代 碼 資 源 ( 對 不 起 大 家, 真 的 不 能 提 出 更 好 的 建 議 了, 再 有 的 就 是 大 家 的 能 力 和 運 氣, 以 及 Inetnet 上 網 友 的 幫 助 了 ) 推 荐 開 發 工 具 :JBuilder/Visual Age for java( 這 個 我 沒 用 過, 但 是 有 人 強 力 推 荐 )/Sun Forte for JavaKAWA 推 荐 開 發 環 境 :Windows NT/Windows 2000 開 發 系 統 JBuilder 3.5( 它 能 成 為 Web Server, 甚 至 不 再 需 要 其 它 的 工 具 )Tomcat 3.1JDK 1.3( 可 以 不 安 裝 )Access 2000/P II 266/128M RAM/9G HD 推 荐 應 用 環 境 ( 最 少 ):RedHat Linux 6.2/MySQL 3.22/Apache 1.3.12/Tomcat 3.1/JDK 1.3Beta/PIII 500/512M RAM/9G HD 推 荐 應 用 環 境 ( 最 佳 ):Solaris 8/Sybase 11/iPlanet Enterprise Web Server 4.1/JDK 1.3Beta/Sun Netra T1/1G RAM/18G HD ======================================================================