Vad är filformatet PACK?
En .pack-fil är en Pack200-dataarkivcontainer som används för att lagra komprimerade JAR-filer för enklare nedladdning via nätverk. .pack-filer sparas vanligtvis med ett extra .gz-suffix - standardpaketet för leverans heter .jar.pack.gz och skapas av Javas kommandoradsverktyg pack200.
En JAR är ett ZIP-arkiv som även fungerar som det körbara formatet för Javas virtuella maskin. Pack200, standardiserat 2004 under JSR 200, omkodar en JAR-fils «constant pools» för klassfiler med en specialiserad binär algoritm; kombinerat med GZIP kan en .pack.gz-fil bli upp till 60 % mindre än den ursprungliga JAR-filen och därmed betydligt snabbare att ladda ner - vilket var formatets primära mål för Java Web Start och applet-leverans i webbläsare.
Pack200 är numera föråldrat. Oracle fasade ut kommandoradsverktygen pack200 och unpack200 i Java 11 (JEP 336, 2018) och tog bort dem helt i Java 14 (2020). Äldre .pack- eller .pack.gz-filer kan endast dekomprimeras med en JDK 8-13-miljö; den råa .pack-strömmen börjar med de magiska byten 0xCAFED00D.
Säkerhet & trygghet
RISK: MEDIUMEn .pack-fil i sig är inerta data, men den dekomprimeras till en Java JAR som innehåller körbar bytekod - packa endast upp och kör JAR-filer från källor du litar på, eftersom en skadlig JAR kan köra godtycklig kod under JRE. Pack200 var en känd historisk attackyta (CVE:er i uppackaren), så använd en aktuell JDK-version vid uppackning. Undvik tredjepartsportaler för «PACK-öppnare»; använd istället JDK:er från Oracle/Adoptium för unpack200.
Formatdetaljer
i ett nötskal- Git packfile (.pack) - Inuti .git/objects/pack lagrar Git objekt i binära .pack-filer (med ett .idx-index); hanteras av Git, öppnas aldrig manuellt.
- Minecraft / resurs-pack för spel (.pack) - Vissa spel och mod-paket använder .pack för buntade resurser eller texturpaket; strukturen är motor-specifik (ofta ZIP-baserad).
- Skype / app-datapaket (.pack) - Olika applikationer skriver interna «.pack»-datablobbar; innebörden beror helt på programmet.
Program som öppnar PACK-filer
Tekniska detaljer
djup specifikation| Formattyp | Binär Pack200-komprimerad JAR-container |
| Magiskt nummer | 0xCAFED00D vid byte-offset 0 i den råa .pack-strömmen; GZIP-header 0x1F8B vid offset 0 i den vanliga .pack.gz-formen |
| Byteordning | Big-endian |
| Komprimering | Pack200-algoritm för omkodning av constant-pools; yttre GZIP/DEFLATE tillämpas i standardformen .pack.gz |
| Komprimeringsgrad | Upp till ~60 % mindre än motsvarande vanlig GZIP-komprimerad JAR |
| MIME-typ | application/x-java-pack200 |
| Specifikation | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, introducerad 2004) |
| Max antal arkivposter | Ärver JAR/ZIP-taket på 65 535 poster |
| Kryptering | Ingen; befintliga JAR-kodsignaturer bevaras och återskapas av pack200/unpack200 |
| Integritetskontroll | GZIP CRC-32 på det yttre .pack.gz-höljet; JAR-signaturer verifieras oberoende efter uppackning |
| Typisk filstorlek | 50 KB - 20 MB (alltid mindre än käll-JAR-filen den kodar) |
| Status | Utfasad i Java 11 (JEP 336, 2018); verktygen pack200 och unpack200 borttagna i Java 14 (2020) |
| Verktyg för uppackning | unpack200 (endast JDK 8-13); även 7-Zip på Windows för inspektion |
| Primärt användningsområde | Minimering av JAR-nedladdningsstorlek för Java Web Start-applikationer och webbläsar-applets |
| Kompatibla plattformar | Windows, Linux, macOS - alla plattformar med JDK/JRE 8-13 installerat |
| Släppt | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Senaste version | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | docs.oracle.com |
PACK-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om PACK-filer.