JSP 誕生背景
Java 推向開發者時面臨重重困難:缺乏主流系統廣泛支援,各平台技術缺乏可直接參照的應用方式。Java 於是在各應用層積極進取,Java Servlet 的出現與 JSP 漸趨成熟,讓 Java 正式登上 Web 開發舞臺。Java 憑藉跨平台特性,實現「一次編寫,到處執行」,巧妙結合 Java 通用性、JSP 易用性、Servlet 速度,透過平台部署技巧有效屏蔽速度問題,迅速在 Web 開發群體中推廣,並攜手 Java Bean、EJB、Application Server、交易伺服器等強大後台邁向成熟應用。
JSP 本質解析
JSP 實質上就是 Java,只是加入特殊引擎的 Java 語言。引擎自動初始化 HttpServlet 相關物件供使用者直接使用,並引入 <jsp:*>、<%@ 等特殊語法,支援引用檔案、URL 轉向、JavaBean 引用等操作。可將此引擎視為 JSP 到 Java Servlet 的生成器/翻譯器:
JSP 原始碼 (.jsp) → Java Servlet 代碼 (.java) → Java 執行位元碼 (.class)
這就是首次執行 JSP 時 CPU 飆高的原因——引擎生成 .java 再編譯為 .class。之後若 JSP 未修改,該過程不再重複(除非刪除 .class),故後續執行極快。Java 有什麼功能,JSP 就有什麼功能,其真正力量如同 ASP 一樣深不可測。
JSP 強勢優勢
- 一次編寫,到處執行:程式設計師的夢想,Java 做得比 PHP 更徹底,除系統外代碼零修改。
- 多平台系統支援:幾乎所有平台都有一致的 Servlet/JSP Web/Application Server,開發、部署、擴展環境任意切換,ASP/PHP 的侷限性顯而易見。
- 強大擴展性:從單一 JAR 執行 Servlet/JSP 到多伺服器叢集負載平衡、多 Application Server 交易訊息處理,展現巨人生命力。
- 多樣化強大開發工具:眾多優秀工具且多為免費、跨平台,深入使用會發現功能遠超初見。
JSP 劣勢短板
- 複雜度高:為跨平台與極致擴展,產品極其複雜。擴展需多少塊,就有多少種產品(JRE、JDK、JSDK、JSWDK…),初學者直呼「運行個 JSP 怎麼這麼多東西!」
- 首次執行緩慢:被對手罵為「慢如老牛」。首次編譯執行對使用者是惡夢,開發時常見 CPU 全綠等待降溫。
- 記憶體佔用大:靠 Class 常駐記憶體換取速度,記憶體/用戶數比極低,還需硬碟空間存放 .java/.class/版本檔。
- 中文資源匱乏:Sun 在國內推廣不力,書店難覓 JSP 專書,Java 體系中文書不足三位數,多為陳舊 Visual J++ 或 Java 1.1 內容。
總結建議
- 適用人群:具較強學習能力與耐心的開發者;投入低但期望高擴展能力的應用。
- 適用平台:極多,不一一列舉。
- 適用應用:Internet/Intranet 高可靠性應用、Internet/Intranet 與 Client/Server 結合系統。
- 學習途徑:Java Doc 文件、Java 站點文件、網路原始碼資源。
- 推薦開發工具:JBuilder / Visual Age for Java / Sun Forte for Java / KAWA
- 推薦開發環境:Windows NT/2000 + JBuilder 3.5 (可作 Web Server) + Tomcat 3.1 + JDK 1.3 (可選) + Access 2000 / PII 266 / 128M RAM / 9G HD
- 推薦部署環境 (最低):RedHat Linux 6.2 + MySQL 3.22 + Apache 1.3.12 + Tomcat 3.1 + JDK 1.3 Beta / PIII 500 / 512M RAM / 9G HD
- 推薦部署環境 (最佳):Solaris 8 + Sybase 11 + iPlanet Enterprise Web Server 4.1 + JDK 1.3 Beta + Sun Netra T1 / 1G RAM / 18G HD