首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 應用程式與 Applet 使用 JAR/CAB/ZIP 封存加速載入

     編輯:Java 相關知識

為什麼需要封存?

Applet 由多個 .class 檔案組成。傳統載入需為每個 class 建立獨立 HTTP 連線(Socket),連線建立/關閉開銷大,嚴重拖慢啟動速度。將所有 class 打包成單一封存檔,僅需**一個連線**即可下載全部。

三大封存格式對比

格式推動者HTML 參數現狀
JAR (Java Archive)Sun/JavaSoft (JDK 1.1+)archive="app.jar"**標準、跨平台、支援簽名、壓縮、資源檔**,首選
ZIPNetscapearchive="app.zip"早期方案,**僅存儲不壓縮** (zip -0/pkzip -e0),已被 JAR 取代
CABMicrosoft<param name=cabbase value="app.cab">IE 專用,逐漸淘汰

建立封存檔


# JAR (推薦)
jar cvf app.jar *.class  # 或包含圖片、音頻等資源

# ZIP (僅存儲,不壓縮)
zip -0 app.zip *.class   # -0 為數字零,表示存儲模式
# 或 pkzip -e0 app.zip *.class

# CAB (需 Microsoft Cabinet SDK)
# cabarc -r app.cab *.class

HTML 同時支援三種格式(向下相容)


<applet name="Hello" code="HelloWorld" width="50" height="50"
    codebase="https://example.com/classes"
    archive="hello.jar">       <!-- JAR for Java 1.1+ / 現代瀏覽器 -->
    <param name="cabbase" value="hello.cab">  <!-- CAB for IE -->
</applet>

瀏覽器優先嘗試支援的格式:支援 JAR 的用 JAR,舊 IE 用 CAB,極舊 Netscape 用 ZIP(需額外指定 archive="hello.zip")。不支援封存的瀏覽器退回逐個 class 下載。

JAR 進階:封裝資源檔與簽名

  • JAR 可包含類別、**圖片、音頻、配置檔**等任意資源,程式中用 getClass().getResourceAsStream("/image.png") 讀取。
  • 簽名:jarsigner -keystore my.keystore app.jar myalias,授信後可突破沙箱限制(讀寫本地檔、連線任意主機)。
  • MANIFEST.MF 可聲明 Main-Class、Class-Path、Sealed 等屬性。

應用程式(非 Applet)直接執行 JAR

  • Windows/JRE 安裝後關聯 .jar 雙擊執行。
  • 命令列:java -jar app.jar(需 Manifest 指定 Main-Class)。
  • Solaris 2.6+ 核心級支援直接執行 JAR(視同原生可執行檔)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved