Qu'est-ce que le format de fichier PACK ?
Un fichier .pack est un conteneur d'archive de données Pack200 utilisé pour stocker des fichiers JAR compressés afin de faciliter le téléchargement sur le réseau. Les fichiers .pack sont généralement enregistrés avec un suffixe supplémentaire .gz - le lot de distribution standard est nommé .jar.pack.gz et produit par l'outil en ligne de commande pack200 de Java.
Un JAR est une archive ZIP qui sert également de format exécutable pour la machine virtuelle Java. Pack200, standardisé en 2004 sous le JSR 200, réencode les pools de constantes des fichiers de classe d'un JAR à l'aide d'un algorithme binaire spécialisé ; combiné avec GZIP, un fichier .pack.gz peut être jusqu'à 60 % plus petit que le JAR d'origine et donc nettement plus rapide à télécharger - l'objectif principal du format pour Java Web Start et la distribution d'applets de navigation.
Pack200 est désormais obsolète. Oracle a déprécié les outils en ligne de commande pack200 et unpack200 dans Java 11 (JEP 336, 2018) et les a entièrement supprimés dans Java 14 (2020). Les fichiers hérités .pack ou .pack.gz ne peuvent être décompressés qu'à l'aide d'un environnement JDK 8-13 ; le flux .pack brut commence par le nombre magique 0xCAFED00D.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .pack lui-même est une donnée inerte, mais il se décompresse en un JAR Java contenant du bytecode exécutable - ne décompressez et n'exécutez que des JAR provenant de sources de confiance, car un JAR malveillant peut exécuter du code arbitraire sous le JRE. Pack200 était une surface d'attaque historique connue (CVE dans le décompresseur), utilisez donc une version récente du JDK lors de la décompression. Évitez les portails de téléchargement tiers « PACK opener » ; utilisez plutôt les JDK d'Oracle/Adoptium pour unpack200.
Détails du format
en bref- Fichier pack Git (.pack) - À l'intérieur de .git/objects/pack, Git stocke les objets dans des fichiers binaires .pack (avec un index .idx) ; géré par Git, jamais ouvert manuellement.
- Minecraft / pack de ressources de jeu (.pack) - Certains jeux et packs de mods utilisent .pack pour les ressources groupées ou les packs de textures ; la structure est spécifique au moteur (souvent basée sur ZIP).
- Skype / pack de données d'application (.pack) - Diverses applications écrivent des blocs de données internes « .pack » ; la signification dépend entièrement du programme.
Programmes qui ouvrent les fichiers PACK
Détails techniques
spécifications approfondies| Type de format | Conteneur JAR compressé binaire Pack200 |
| Nombre magique | 0xCAFED00D à l'offset d'octet 0 dans le flux .pack brut ; en-tête GZIP 0x1F8B à l'offset 0 dans la forme courante .pack.gz |
| Ordre des octets | Big-endian |
| Compression | Algorithme de réencodage du pool de constantes Pack200 ; GZIP/DEFLATE externe appliqué dans la forme de distribution standard .pack.gz |
| Taux de compression | Jusqu'à ~60 % plus petit que le JAR équivalent compressé uniquement avec GZIP |
| Type MIME | application/x-java-pack200 |
| Spécification | JSR 200 - Network Transfer Format for JAR Files (Java SE 5.0, introduit en 2004) |
| Nombre max d'entrées d'archive | Hérite du plafond de 65 535 entrées du JAR/ZIP |
| Chiffrement | Aucun ; les signatures de code JAR existantes sont préservées et restituées par pack200/unpack200 |
| Vérification d'intégrité | GZIP CRC-32 sur l'enveloppe externe .pack.gz ; signatures JAR vérifiées indépendamment après décompression |
| Taille de fichier typique | 50 Ko - 20 Mo (toujours plus petit que le JAR source qu'il encode) |
| Statut | Déprécié dans Java 11 (JEP 336, 2018) ; outils pack200 et unpack200 supprimés dans Java 14 (2020) |
| Outils de décompression | unpack200 (JDK 8-13 uniquement) ; également 7-Zip sur Windows pour l'inspection |
| Cas d'utilisation principal | Minimiser la taille de téléchargement des JAR pour les applications Java Web Start et les applets de navigation |
| Plateformes compatibles | Windows, Linux, macOS - toute plateforme avec JDK/JRE 8-13 installé |
| Publié | 2004 (Java SE 5.0 / J2SE 1.5 - JSR 200 'Network Transfer Format for JAR Files') |
| Dernière version | Pack200 as specified through JSR 200; deprecated in Java 11 (2018), removed in Java 14 (2020) |
| Standard ouvert | Oui · libre de droits |
| Spécification | docs.oracle.com |
Conversions PACK
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers PACK.