Summary
The class java.lang.Compiler has been non-functional for a long time. It was terminally deprecated in Java 9. Time has come to remove it.
Problem
JDK-4285505 summarizes the problem like this:
The class java.lang.Compiler supposedly provides a high level reflective interface to the underlying JIT. This interface is effectively ignored by Hotspot, and by many other implementations.
We have long ago abandoned efforts for a standaradized JIT interface. JITs and their technologies vary too widely. At the user level, it is unclear why control of a quality-of-implementation factor like a JIT needs to be available in a portable form.
The @deprecated notice in the Javadocs of the class states:
JIT compilers and their technologies vary too widely to be controlled effectively by a standardized interface. As such, many JIT compiler implementations ignore this interface, and are instead controllable by implementation-specific mechanisms such as command-line options. This class is subject to removal in a future version of Java SE.
A search in a large corpus of Java code indicates that the class is very rarely used:
A search of 3M classes in 130k artifacts found just 8 references to this class. 6 of the 8 are versions of the same thing seem to be an off-label usage in a class named net.openhft.chronicle.core.Jvm where it calls Compiler.enable() instead of Thread.onSpinWait on older JDK releases.
Solution
Remove the class java.lang.Compiler. This class has no use or references within OpenJDK.
Specification
Remove the following class:
java.lang.Compiler
- csr of
-
JDK-8205129 Remove java.lang.Compiler
-
- Resolved
-
- relates to
-
JDK-8041676 remove the java.compiler system property
-
- Closed
-