JDK-8182758 : JEP 313: Remove the Native-Header Generation Tool (javah)
  • Type: JEP
  • Component: tools
  • Sub-Component: javah
  • Priority: P3
  • Status: Closed
  • Resolution: Delivered
  • Fix Versions: 10
  • Submitted: 2017-06-23
  • Updated: 2018-01-10
  • Resolved: 2018-01-10
Related Reports
Relates :  
Relates :  
Sub Tasks
JDK-8191054 :  
JDK-8191354 :  
JDK-8194127 :  
Description
Summary
-------

Remove the `javah` tool from the JDK.

Motivation
----------

The tool has been superseded by superior functionality in javac, added in JDK 8
([JDK-7150368](https://bugs.openjdk.java.net/browse/JDK-7150368)).
This functionality provides the ability to write native header files at the time
that Java source code is compiled, thereby eliminating the need for a separate
tool.

Focusing on the support provided by `javac` eliminates the need to upgrade
`javah` to support recent new paradigms, such as API access via the 
Compiler API in `javax.tools.*`, or the new `java.util.spi.ToolProvider` SPI added in JDK 9.


Description
-----------

Implementing the removal will include removing the affected files from
the Mercurial repositories, including documentation files, as well as
supporting makefile changes.


Testing
-------

Any testing will be limited to verifying the `javah` command is 
not present.

Risks and Assumptions
---------------------

There are no engineering issues with excising `javah` from the JDK,
because the tool is no longer used by JDK, or when building the JDK.

Users have been warned of the pending removal since JDK 9,
in which a warning is generated each time the `javah` tool is invoked.

Dependences
-----------

There are no direct JDK dependences on the `javah` tool. Externally,
there are some derivatives of `javah`, such as the Ant 
[javah task](https://ant.apache.org/manual/Tasks/javah.html),
but just as users of the `javah` command are recommended to
use `javac -h`, so too are users of these dependences are recommended to
use instead the corresponding support provided for `javac`.