Che cos'è il formato di file PACK?
Un file .pack è un contenitore di archivio dati Pack200 utilizzato per memorizzare file JAR compressi per facilitarne il download via rete. I file .pack vengono solitamente salvati con un suffisso aggiuntivo .gz - il pacchetto di distribuzione standard è denominato .jar.pack.gz ed è prodotto dallo strumento a riga di comando pack200 di Java.
Un JAR è un archivio ZIP che funge anche da formato eseguibile per la Java virtual machine. Pack200, standardizzato nel 2004 sotto JSR 200, ricodifica i constant pool dei file class di un JAR utilizzando un algoritmo binario specializzato; combinato con GZIP, un file .pack.gz può essere fino al 60% più piccolo del JAR originale e quindi significativamente più veloce da scaricare - l'obiettivo primario del formato per Java Web Start e la distribuzione di applet nel browser.
Pack200 è ora obsoleto. Oracle ha deprecato gli strumenti a riga di comando pack200 e unpack200 in Java 11 (JEP 336, 2018) e li ha rimossi completamente in Java 14 (2020). I file legacy .pack o .pack.gz possono essere decompressi solo utilizzando un ambiente JDK 8-13; il flusso .pack grezzo inizia con il numero magico 0xCAFED00D.
Sicurezza e incolumità
RISCHIO: MEDIUMUn file .pack in sé è un dato inerte, ma si decomprime in un JAR Java contenente bytecode eseguibile - decomprimere ed eseguire JAR solo da fonti attendibili, poiché un JAR malevolo può eseguire codice arbitrario sotto il JRE. Pack200 è stato una nota superficie di attacco storica (CVE nel decompressore), quindi utilizzare una build JDK aggiornata durante la decompressione. Evitare i portali di download di terze parti per «PACK opener»; utilizzare invece i JDK Oracle/Adoptium per unpack200.
Dettagli del formato
in sintesi- Git packfile (.pack) - All'interno di .git/objects/pack, Git memorizza gli oggetti in file .pack binari (con un indice .idx); gestiti da Git, mai aperti manualmente.
- Minecraft / pacchetto risorse giochi (.pack) - Alcuni giochi e modpack utilizzano .pack per risorse aggregate o pacchetti di texture; la struttura è specifica del motore (spesso basata su ZIP).
- Skype / pacchetto dati app (.pack) - Varie applicazioni scrivono blob di dati interni «.pack»; il significato dipende interamente dal programma.
Programmi che aprono file PACK
Dettagli tecnici
specifiche approfondite| Tipo di formato | Contenitore JAR compresso binario Pack200 |
| Numero magico | 0xCAFED00D all'offset byte 0 nel flusso .pack grezzo; intestazione GZIP 0x1F8B all'offset 0 nella comune forma .pack.gz |
| Ordine dei byte | Big-endian |
| Compressione | Algoritmo di ricodifica constant-pool Pack200; GZIP/DEFLATE esterno applicato nella forma di distribuzione standard .pack.gz |
| Rapporto di compressione | Fino a circa il 60% più piccolo rispetto all'equivalente JAR compresso con semplice GZIP |
| Tipo MIME | application/x-java-pack200 |
| Specifica | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, introdotto nel 2004) |
| Numero massimo di voci | Eredita il limite di 65.535 voci di JAR/ZIP |
| Crittografia | Nessuna; le firme digitali esistenti del codice JAR vengono preservate e mantenute da pack200/unpack200 |
| Controllo integrità | GZIP CRC-32 sull'involucro esterno .pack.gz; firme JAR verificate indipendentemente dopo la decompressione |
| Dimensione tipica del file | 50 KB - 20 MB (sempre più piccolo del JAR sorgente che codifica) |
| Stato | Deprecato in Java 11 (JEP 336, 2018); strumenti pack200 e unpack200 rimossi in Java 14 (2020) |
| Strumenti di decompressione | unpack200 (solo JDK 8-13); anche 7-Zip su Windows per l'ispezione |
| Caso d'uso primario | Riduzione delle dimensioni di download dei JAR per applicazioni Java Web Start e applet del browser |
| Piattaforme compatibili | Windows, Linux, macOS - qualsiasi piattaforma con JDK/JRE 8-13 installato |
| Rilasciato | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Ultima versione | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Standard aperto | Sì · royalty-free |
| Specifica | docs.oracle.com |
Conversioni PACK
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file PACK.