JDK-8234596 : removal of Pack200 Tools and API
  • Type: CSR
  • Component: tools
  • Sub-Component: jar
  • Priority: P3
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 14
  • Submitted: 2019-11-21
  • Updated: 2019-12-09
  • Resolved: 2019-12-09
Related Reports
CSR :  
Description
Summary
-------

Remove the jdk.pack module, the pack200 and unpack200 tools, and the Pack200 API in `java.util.jar`. Remove also the `-n` option from `jar` tool. 

Problem
-------

Pack200 is a complex and elaborate technology. The file format is tightly coupled to the class file format and the JAR file format, both of which have evolved in ways unforeseen by JSR 200. The compression benefit is not significant, and can be solved with deployment tools. Overall, the cost of maintaining Pack200 outweighs the benefit of including it in Java SE and the JDK.

Solution
--------

Remove `jdk.pack` module that includes the pack200 and unpack200 tools.
Remove `java.util.jar.Pack200` class and  `java.util.jar.Pack200.Packer` and `java.util.jar.Pack200.Unpacker` interfaces. Also remove the `-n` option from the `jar` tool.

Specification
-------------

The following APIs are removed:
```
java.util.jar.Pack200
java.util.jar.Pack200.Packer
java.util.jar.Pack200.Unpacker
```

The `pack200` and `unpack200` command line tools are removed.

The JDK-specific module `jdk.pack` is removed.

The `jar -n` option is removed.
Comments
Moving to Approved.
09-12-2019

Note this request needs to be Finalized and then Approved before the changeset is pushed.
09-12-2019

Moving to Provisional; see code review comments on core-libs thread.
03-12-2019

[~vromero] Yes Alan's rewrite of the specification section to show what was removed is preferable to all the deleted Javadoc IMO. Thanks.
25-11-2019

[~alanb] I created the CSR from the implementation task not from the JEP. If you go to the JEP, JDK-8232022, the subtask listed there is the implementation, JDK-8234542, task not the CSR.
24-11-2019

I added Class file constructs to the list of the interfaces application to this CSR and added myself as Reviewer. I added the "release-note" label to JDK-8234542 as this change will need a release note. One other thing is that the CSR is usually sub-task of the implementation change rather than a sub-task of the JEP. You might have to move the CSR to JDK-8234542.
23-11-2019

[~alanb] thanks for the edits. I have changed the compatibility risk to "Low"
22-11-2019

I reformatted the Specification section a bit, I think it's much easier to read now. The compatibility risk is currently liked as "minimal", I think "Low" or "Medium" would be more accurate.
22-11-2019

[~alanb], [~dholmes], does the specification section look better now?
22-11-2019

The specification section would be easier to review if the diffs were removed so that this section only lists the elements from the Java SE APIs and the JDK (tooling and CLI options in the JDK case).
22-11-2019

[~dholmes] I only included in the specification section the javadoc that was removed, there are many other files removed. Also Joe always ask for the changes to the javadoc to be included in the CSR to keep an archive of the changes. I can just mention what will be removed in the specification and later include the API removed for future reference
22-11-2019

The "specification" section is only concerned with specification changes, we do not need/want a webrev showing all the deleted code files - thanks.
22-11-2019