Pack200

Last updated

Pack200, specified in JSR 200 [1] (J2SE 1.5), deprecated in JEP 336 [2] (Java SE 11) and removed in JEP 367 (Java SE 14), [3] is a compacting archive format developed by Sun, capable of reducing JAR file sizes by up to a factor of 9, [4] with a factor of 3 to 4 seen in practice. [5] [6] Pack200 is optimized for compressing JAR archive files, specifically the Java bytecode portion of the JAR files. Applications of this technology include faster Java application deployment over Java Web Start.

Contents

After Pack200, gzip compression is usually applied. In HTTP compression, such content is specified by the Content-Encoding type pack200-gzip. When stored as a file, the extension .pack.gz is used. [7]

Pack200 may also refer to the Pack200 compression tools (pack200 and unpack200) provided in the Java Development Kit from Java 5 until Java 14.

Design

Pack200 modifies the contents of the Java class files in the JAR archive undergoing compression. Transformations to the class files include merging constant pools and removing duplicated attributes. [8] The format is not lossless; it is possible for a JAR file after unpacking to not be identical to how it was before packing. [9]

Related Research Articles

A file archiver is a computer program that combines a number of files together into one archive file, or a series of archive files, for easier transportation or storage. File archivers may employ lossless data compression in their archive formats to reduce the size of the archive.

gzip GNU file compression/decompression tool

gzip is a file format and a software application used for file compression and decompression. The program was created by Jean-loup Gailly and Mark Adler as a free software replacement for the compress program used in early Unix systems, and intended for use by GNU. Version 0.1 was first publicly released on 31 October 1992, and version 1.0 followed in February 1993.

zlib DEFLATE codec library

zlib is a software library used for data compression. zlib was written by Jean-loup Gailly and Mark Adler and is an abstraction of the DEFLATE compression algorithm used in their gzip file compression program. zlib is also a crucial component of many software platforms, including Linux, macOS, and iOS. It has also been used in gaming consoles such as the PlayStation 4, PlayStation 3, Wii U, Wii, Xbox One and Xbox 360.

Jakarta Enterprise Beans is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web container provides a runtime environment for web related software components, including computer security, Java servlet lifecycle management, transaction processing, and other web services. The EJB specification is a subset of the Java EE specification.

Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices. Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME. As of December 22, 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME.

In computing, Deflate is a lossless data compression file format that uses a combination of LZ77 and Huffman coding. It was designed by Phil Katz, for version 2 of his PKZIP archiving tool. Deflate was later specified in RFC 1951 (1996).

ZIP is an archive file format that supports lossless data compression. A ZIP file may contain one or more files or directories that may have been compressed. The ZIP file format permits a number of compression algorithms, though DEFLATE is the most common. This format was originally created in 1989 and was first implemented in PKWARE, Inc.'s PKZIP utility, as a replacement for the previous ARC compression format by Thom Henderson. The ZIP format was then quickly supported by many software utilities other than PKZIP. Microsoft has included built-in ZIP support in versions of Microsoft Windows since 1998 via the "Windows Plus!" addon for Windows 98. Native support was added as of the year 2000 in Windows ME. Apple has included built-in ZIP support in Mac OS X 10.3 and later. Most free operating systems have built in support for ZIP in similar manners to Windows and Mac OS X.

JAR (file format) Java archive file format

A JAR is a package file format typically used to aggregate many Java class files and associated metadata and resources into one file for distribution.

7-Zip Open-source file archiver

7-Zip is a free and open-source file archiver, a utility used to place groups of files within compressed containers known as "archives". It is developed by Igor Pavlov and was first released in 1999. 7-Zip has its own archive format called 7z, but can read and write several others.

Jakarta XML Binding is a software framework that allows Jakarta EE developers to map Java classes to XML representations. JAXB provides two main features: the ability to marshal Java objects into XML and the inverse, i.e. to unmarshal XML back into Java objects. In other words, JAXB allows storing and retrieving data in memory in any XML format, without the need to implement a specific set of XML loading and saving routines for the program's class structure. It is similar to xsd.exe and XmlSerializer in the .NET Framework.

WinRAR File archiver

WinRAR is a trialware file archiver utility for Windows, developed by Eugene Roshal of win.rar GmbH. It can create and view archives in RAR or ZIP file formats, and unpack numerous archive file formats. To enable the user to test the integrity of archives, WinRAR embeds CRC32 or BLAKE2 checksums for each file in each archive. WinRAR supports creating encrypted, multi-part and self-extracting archives.

The following tables compare general and technical information for a number of file archivers. Please see the individual products' articles for further information. They are neither all-inclusive nor are some entries necessarily up to date. Unless otherwise specified in the footnotes section, comparisons are based on the stable versions—without add-ons, extensions or external programs.

In computing, Java Web Start is a deprecated framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser. The technology enables seamless version updating for globally distributed applications and greater control of memory allocation to the Java virtual machine.

HTTP compression Capability that can be built into web servers and web clients

HTTP compression is a capability that can be built into web servers and web clients to improve transfer speed and bandwidth utilization.

The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the Java Language Specification (JLS); changes to the JLS are managed under JSR 901. In September 2017, Mark Reinhold, chief Architect of the Java Platform, proposed to change the release train to "one feature release every six months" rather than the then-current two-year schedule. This proposal took effect for all following versions, and is still the current release schedule.

The Java Platform Module System specifies a distribution format for collections of Java code and associated resources. It also specifies a repository for storing these collections, or modules, and identifies how they can be discovered, loaded and checked for integrity. It includes features such as namespaces with the aim of fixing some of the shortcomings in the existing JAR format, especially the JAR Hell, which can lead to issues such as classpath and class loading problems.

The Java Development Kit (JDK) is a distribution of Java Technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle steward. It provides software for working with Java applications. Examples of included software are the virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for a Java programmer.

Pack is a Unix shell compression program based on Huffman coding.

Zopfli Data compression software

Zopfli is a data compression library that performs Deflate, gzip and zlib data encoding. It achieves higher compression ratios than mainstream Deflate and zlib implementations at the cost of being slower. Google first released Zopfli in February 2013 under the terms of Apache License 2.0.

B1 is an open archive file format that supports data compression and archiving. B1 files use the file extension ".b1" or ".B1" and the MIME media type application/x-b1. B1 incorporates the LZMA compression algorithm. B1 archive combines a number of files and folders into one or more volumes, optionally adding compression and encryption. Construction of the B1 archive involves creating a binary stream of records and building volumes of that stream. The B1 archive format supports password-based AES-256 encryption. B1 files are created and opened with its native open-source B1 Pack Tool, as well as B1 Free Archiver utility.

References

  1. "JSR 200: Network Transfer Format for Java Archives" . Retrieved 2014-06-09.
  2. "JEP 336: Deprecate the Pack200 Tools and API" . Retrieved 2018-11-10.
  3. "JEP 367: Remove the Pack200 Tools and API" . Retrieved 2020-06-02.
  4. "Pack200: A Packed Class Deployment Format For Java Applications". docs.oracle.com. Retrieved 2022-05-14.
  5. "Smaller Java". dzone.com. Retrieved 2022-05-14.
  6. "Combining Ant, Jar, Signatures and Pack200". bfo.com. Retrieved 2022-05-14.
  7. "Pack200 and Compression for Network Deployment". web.mit.edu. Retrieved 2022-05-14.
  8. "Pack200 Compression Method". www.advancedinstaller.com. Retrieved 2022-05-14.
  9. "Commons Compress – Commons Compress Pack200 Package". commons.apache.org. Retrieved 2022-05-14.