提取 JAR 檔案

無限制 作業。檔案大小可達 2.5GB。免費,永遠免費。

私密與安全

一切都在您的瀏覽器中進行。您的檔案絕不接觸我們的伺服器。

極速

無需上傳,無需等待。在您拖放檔案的瞬間即可轉換。

完全免費

無需帳戶。無隱藏費用。無檔案大小限制花招。

什麼是 JAR 格式?

Java 封存檔

Java 檔案(JAR)檔案格式是一種與平台無關的檔案格式,用於將多個檔案彙總並壓縮成單一檔案。它建立在 ZIP 檔案格式之上,用於分發 Java 類別和相關的元資料和資源。JAR 檔案是 Java 平台的基本組成部分,使開發人員能夠以標準化且有效率的方式封裝和部署 Java 應用程式和函式庫。

JAR 檔案包含類別檔案、資源檔案和元資料的集合。類別檔案包含已編譯的 Java 位元組碼,可由 Java 虛擬機器(JVM)執行。資源檔案可以包含各種類型的資料,例如影像、組態檔案或 Java 應用程式所需的其它資源。元資料提供有關 JAR 檔案內容及其處理方式的資訊。

JAR 檔案的結構遵循特定佈局。在根目錄層級,有一個 META-INF 目錄,其中包含元資料檔案。此目錄中最重要的檔案是 MANIFEST.MF 檔案,它是一個純文字檔案,提供有關 JAR 檔案內容的資訊。清單檔案可以指定各種屬性,例如應用程式的 main 類別、類別路徑相依性、版本資訊和安全性設定。

除了 META-INF 目錄之外,JAR 檔案還可以有一個或多個子目錄,用於組織類別檔案和資源檔案。子目錄結構通常反映 JAR 檔案中所包含 Java 類別的套件階層。例如,如果一個類別屬於套件 com.example.myapp,它將儲存在路徑 com/example/myapp/ 下的 JAR 檔案中。

JAR 格式的主要優點之一是它能夠壓縮其包含的檔案。預設情況下,JAR 檔案使用 ZIP 壓縮演算法來縮小檔案大小。這種壓縮不僅可以節省儲存空間,還可以減少透過網路傳輸 JAR 檔案所需的時間。但是,重要的是要注意,壓縮套用於 JAR 檔案中的個別檔案,而不是整個檔案。

可以使用各種工具和函式庫建立和處理 JAR 檔案。Java 開發套件(JDK)提供 jar 命令列工具,允許開發人員建立、更新和解壓縮 JAR 檔案。jar 工具支援各種選項,用於指定 JAR 檔案的內容、設定清單屬性和管理數位簽章。

除了命令列工具之外,開發人員還可以透過 Java API 以程式化方式建立和處理 JAR 檔案。java.util.jar 套件提供 JarFile、JarEntry 和 JarOutputStream 等類別,使開發人員能夠以程式化方式讀取和寫入 JAR 檔案。這些 API 允許精細控制 JAR 檔案的內容和元資料。

JAR 檔案在 Java 應用程式的部署和分發中扮演著至關重要的角色。它們提供一種便利的方式,可以將所有必要的類別檔案、資源和相依性封裝到一個單一檔案中,該檔案可以輕鬆地在任何支援 Java 的平台上分發和執行。JAR 檔案可用於分發函式庫、架構和獨立應用程式。

JAR 檔案的一個常見用例是建立可執行 JAR 檔案,也稱為「fat」或「uber」JAR。可執行 JAR 檔案包含所有必要的相依性,並且可以直接由 Java 執行時間環境執行。若要建立可執行 JAR,清單檔案必須指定作為應用程式進入點的 main 類別。當執行 JAR 檔案時,JVM 會自動啟動指定的 main 類別。

JAR 檔案也支援數位簽章,這允許驗證 JAR 檔案的完整性和真實性。數位簽章確保 JAR 檔案的內容未被竄改,並且 JAR 檔案來自受信任的來源。JDK 提供的 jarsigner 工具用於簽署和驗證 JAR 檔案。

JAR 檔案的另一個重要功能是它們可以作為類別路徑組件。類別路徑是一組 JVM 搜尋類別檔案和資源的位置。可以將 JAR 檔案新增到類別路徑,允許 JVM 定位和載入 JAR 檔案中的類別。這允許模組化開發和使用封裝為 JAR 檔案的第三方函式庫。

總之,Java 檔案(JAR)檔案格式是一個多功能且廣泛使用的容器,用於封裝和分發 Java 應用程式和函式庫。它提供一種標準化方式,可以將類別檔案、資源檔案和元資料彙總到一個單一的壓縮檔案中。JAR 檔案簡化了部署、啟用模組化開發,並支援壓縮、數位簽章和類別路徑管理等功能。了解 JAR 格式對於從事 Java 應用程式封裝和部署的 Java 開發人員至關重要。

檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。

兩大支柱:建模與編碼

多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。

常見格式怎麼做

DEFLATE(被 gzipzlibZIP 採用)把 LZ77 和霍夫曼編碼結合。其規格完全公開:DEFLATERFC 1951、zlib 封裝RFC 1950以及 gzip 檔案格式RFC 1952。Gzip 針對串流設計並明確不提供隨機存取。PNG 影像則把 DEFLATE 規範為唯一的壓縮方式(視窗最多 32 KiB),詳見 PNG 規格「Compression method 0… deflate/inflate… at most 32768 bytes」W3C/ISO PNG 第二版

Zstandard (zstd): 針對高壓縮率與極快解壓而設計的通用壓縮器。格式記載於RFC 8878(以及HTML 鏡像)和 GitHub 上的參考規格文件。與 gzip 類似,基本框架並不追求隨機存取。zstd 的絕招是字典:從語料擷取的小樣本能大幅改善許多小型或相似檔案的壓縮(參閱python-zstandard 字典文件Nigel Tao 的示例)。各實作同時支援「非結構化」與「結構化」字典(討論)

Brotli: 為網頁內容(如 WOFF2 字體、HTTP)優化,結合靜態字典與類 DEFLATE 的 LZ+熵編碼核心。規格載於RFC 7932,文件同時指出滑動視窗為 2WBITS-16,WBITS 介於 [10, 24](1 KiB-16 B 至 16 MiB-16 B),並且不嘗試隨機存取。Brotli 常在網頁文字上優於 gzip,解碼也相當快速。

ZIP 容器: ZIP 是一種檔案封存格式,可存放使用多種壓縮法(deflate、store、zstd 等)的項目。權威規格是 PKWARE 的 APPNOTE(參見APPNOTE 入口托管副本以及美國國會圖書館的概覽ZIP File Format (PKWARE)/ZIP 6.3.3)。

常見問題解答

什麼是檔案壓縮?

檔案壓縮是一個減少檔案或檔案群大小的過程,通常用於節省儲存空間或加速網路傳輸。

檔案壓縮是如何運作的?

檔案壓縮運作原理,透過識別並移除數據中的冗餘資訊。它使用演算法將原始數據編碼在較小的空間裡。

檔案壓縮有什麼類型?

兩種主要的檔案壓縮類型是無失真及有失真壓縮。無失真壓縮可以完美地恢復原始檔案,然而有失真壓縮在一些資料品質的損失下能得到更大的壓縮程度。

請給出一個檔案壓縮工具的範例?

一個常見的檔案壓縮工具範例是WinZip,它支援多種壓縮格式包括ZIP與RAR。

檔案壓縮會影響檔案質量嗎?

在無失真壓縮中,質量保持不變。然而,在有失真壓縮中,可能會有顯著的質量下降,因為它刪除了一些較不重要的數據以便更大程度地減少檔案大小。

檔案壓縮安全嗎?

是的,相對於資料的完整性來說,檔案壓縮是安全的,尤其是無失真壓縮。然而,如同所有檔案,被壓縮的檔案也可能受到惡意軟體或病毒的攻擊,所以總是需要有專業的安全軟體以保護。

什麼類型的檔案可以壓縮?

幾乎所有種類的檔案都可以被壓縮,包括文字檔案、圖像、音訊、視頻和軟體檔案。然而,壓縮程度可以因檔案類型而有顯著的不同。

什麼是ZIP檔?

ZIP檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。

我可以壓縮一個已經壓縮過的檔案嗎?

技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。

我該如何解壓壓縮的檔案?

解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。