Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] Pack200 compression


Sorry that no one has replied.  There is not so much active work being done on p2.  Indeed pack200 is relatively important for p2 because of course pack200 significantly reduces the size of the downloads.   Having worked a lot with p2 while implementing Oomph, I expect there will be significant problems if p2 runs with a JRE that doesn't include the pack200 executable.

If you look at org.eclipse.equinox.internal.p2.jarprocessor.Utils.getPack200Commands(String) you'll see that p2 actually uses the unpack200 executable, not some Java library.

And in org.eclipse.equinox.internal.p2.artifact.processors.pack200.Pack200ProcessorStep.initialize(IProvisioningAgent, IProcessingStepDescriptor, IArtifactDescriptor) you'll see initialization fails when pack200 is absent:

In general, it seems a relatively daunting task to keep up with the more rapid releases of Java in terms of maintaining pack200 support for any changes to the byte code format.

Also note that the builds we all do at Eclipse will need to continue to produce pack200 files for this to remain useful, so whatever is done to support unpacking will also have to provide the support for packing and that will need to be available in all the CBI (Maven/Tycho) builds.


On 24.06.2018 04:19, Peter Firmstone wrote:
As you may or may not be aware, Oracle has chosen to deprecate Pack200 in Java 11 and removal in a later version, citing maintenance as the reason.

I've taken the Pack200 implementation from Apache Harmony, which, at  version 150.7, is somewhat behind the latest Pack200 standard version 170.1.

Unlike the Pack200 implementation in OpenJDK that written in C++, Harmony's is written in Java and uses ASM 3.1.

I have updated the library to ASM 6.2 and have started implementing later Pack200 standard features.

Some of these are relatively difficult to understand, such as the StackMapTable Attribute and other components are relatively easy to implement.

I've also started looking at the latest JVM 10 standard, and thinking about how to support bytecode features in that as well.

The code can be found here:

I'd appreciate any help people can provide, since Pack200 is also important to p2, I'd also happily donate any additional code and participate in it's development here, if the p2 project see's value.


p2-dev mailing list
To change your delivery options, retrieve your password, or unsubscribe from this list, visit

Back to the top