JEP draft: Remove the Native-Header Tool (javah)

OwnerJonathan Gibbons
Created2017/06/23 17:28
Updated2017/10/18 18:24
Componenttools / javah
Discussioncompiler dash dev at openjdk dot java dot net
Reviewed byBrian Goetz, Joe Darcy
Endorsed byBrian Goetz


Remove the javah tool and documentation from the JDK.


The tool has been superseded by superior functionality in javac, added in JDK 8. (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 for upgrading javah to support recent new paradigms, such as API access via the Compiler API in*, or the new java.util.spi.ToolProvider SPI added in JDK 9.


Implementing the removal will include removing the affected files from the JDK 10 Mercurial repositories 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 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, but just as users of the javah command are recommended to use javac -h, so too are users of these dependences recommended to use instead the corresponding support provided for javac.