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 :  

Remove the `javah` tool from the JDK.


The tool has been superseded by superior functionality in javac, added in JDK 8
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

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.


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


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.


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`.