Hvad er PACK-filformatet?
En .pack-fil er en Pack200-dataarkivcontainer, der bruges til at gemme komprimerede JAR-filer for lettere netværksdownload. .pack-filer gemmes typisk med en ekstra .gz-endelse - den standardiserede leveringspakke hedder .jar.pack.gz og produceres af Javas pack200-kommandolinjeværktøj.
En JAR er et ZIP-arkiv, der også fungerer som det eksekverbare format for Java Virtual Machine. Pack200, standardiseret i 2004 under JSR 200, omkoder en JAR-fils class-fil-konstantpuljer ved hjælp af en specialiseret binær algoritme; kombineret med GZIP kan en .pack.gz-fil være op til 60 % mindre end den originale JAR og dermed betydeligt hurtigere at downloade - hvilket var formatets primære mål for Java Web Start og levering af browser-applets.
Pack200 er nu forældet. Oracle udfasede pack200- og unpack200-kommandolinjeværktøjerne i Java 11 (JEP 336, 2018) og fjernede dem helt i Java 14 (2020). Gamle .pack- eller .pack.gz-filer kan kun dekomprimeres ved hjælp af et JDK 8-13-miljø; den rå .pack-strøm begynder med de magiske bytes 0xCAFED00D.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .pack-fil i sig selv er inerte data, men den dekomprimeres til en Java JAR, der indeholder eksekverbar bytecode - udpak og kør kun JAR-filer fra kilder, du har tillid til, da en ondsindet JAR kan køre vilkårlig kode under JRE. Pack200 var en kendt historisk angrebsflade (CVE'er i udpakkeren), så brug en aktuel JDK-build ved udpakning. Undgå tredjeparts «PACK opener»-downloadportaler; brug Oracle/Adoptium JDK'er til unpack200 i stedet.
Formatdetaljer
kort fortalt- Git-packfile (.pack) - Inden i .git/objects/pack gemmer Git objekter i binære .pack-filer (med et .idx-indeks); administreres af Git, åbnes aldrig manuelt.
- Minecraft / spil-ressourcepakke (.pack) - Nogle spil og modpacks bruger .pack til bundtede ressourcer eller teksturpakker; strukturen er motor-specifik (ofte ZIP-baseret).
- Skype / app-datapakke (.pack) - Forskellige applikationer skriver interne «.pack»-datablokke; betydningen afhænger helt af programmet.
Programmer der åbner PACK-filer
Tekniske detaljer
dyb specifikation| Formattype | Binær Pack200-komprimeret JAR-container |
| Magisk nummer | 0xCAFED00D ved byte-offset 0 i den rå .pack-strøm; GZIP-header 0x1F8B ved offset 0 i den almindelige .pack.gz-form |
| Byte-rækkefølge | Big-endian |
| Komprimering | Pack200-algoritme til omkodning af konstantpuljer; ydre GZIP/DEFLATE anvendt i den standardiserede .pack.gz-leveringsform |
| Komprimeringsforhold | Op til ~60 % mindre end den tilsvarende almindelige GZIP-komprimerede JAR |
| MIME-type | application/x-java-pack200 |
| Specifikation | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, introduceret 2004) |
| Maks. arkivposter | Arver JAR/ZIP-loftet på 65.535 poster |
| Kryptering | Ingen; eksisterende JAR-kodesignaturer bevares og føres uændret igennem af pack200/unpack200 |
| Integritetskontrol | GZIP CRC-32 på den ydre .pack.gz-beholder; JAR-signaturer verificeres uafhængigt efter udpakning |
| Typisk filstørrelse | 50 KB - 20 MB (altid mindre end den kilde-JAR, den koder) |
| Status | Udfaset i Java 11 (JEP 336, 2018); pack200- og unpack200-værktøjer fjernet i Java 14 (2020) |
| Udpakningsværktøjer | unpack200 (kun JDK 8-13); også 7-Zip på Windows til inspektion |
| Primært anvendelsesområde | Minimering af JAR-downloadstørrelse for Java Web Start-applikationer og browser-applets |
| Kompatible platforme | Windows, Linux, macOS - enhver platform med JDK/JRE 8-13 installeret |
| Udgivet | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Seneste version | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Åben standard | Ja · royaltyfri |
| Specifikation | docs.oracle.com |
PACK-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om PACK-filer.