JEP 410: Remove the Experimental AOT and JIT CompilerJEP 410: Remove the Experimental AOT and JIT CompilerOwnerVladimir KozlovTypeFeatureScopeJDKStatusClosed / DeliveredRelease17Componenthotspot / compilerDiscussionhotspot dash compiler dash dev at openjdk dot java dot netEffortSDurationSReviewed byMikael VidstedtCreated2021/03/10 02:59Updated2021/08/05 02:44Issue8263327Summary
Remove the experimental Java-based ahead-of-time (AOT) and just-in-time (JIT) compiler.  This compiler has seen little use since its introduction and the effort required to maintain it is significant.  Retain the experimental Java-level JVM compiler interface (JVMCI) so that developers can continue to use externally-built versions of the compiler for JIT compilation.
Motivation
Ahead-of-time compilation (the jaotc tool) was incorporated into JDK 9 as an experimental feature via JEP 295.  The jaotc tool uses the Graal compiler, which is itself written in Java, for AOT compilation.
The Graal compiler was made available as an experimental JIT compiler in JDK 10 via JEP 317.
We have seen little use of these experimental features since they were introduced, and the effort required to maintain and enhance them is significant.  These features were not included in the JDK 16 builds published by Oracle, and no one complained.
Description
Remove three JDK modules:

jdk.aot — the jaotc tool
jdk.internal.vm.compiler — the Graal compiler
jdk.internal.vm.compiler.management — Graal's MBean

Preserve these two Graal-related source files so that the JVMCI module (jdk.internal.vm.ci, JEP 243) continues to build:

src/jdk.internal.vm.compiler/share/classes/module-info.java
src/jdk.internal.vm.compiler.management/share/classes/module-info.java

Remove HotSpot code related to AOT compilation:

src/hotspot/share/aot — dumps and loads AOT code
Additional code guarded by #if INCLUDE_AOT

Finally, remove tests as well as code in makefiles related to Graal and AOT compilation.
Alternatives
Developers who wish to use the Graal compiler for either AOT or JIT compilation can use GraalVM.
Risks and Assumptions
We assume that developers actively using these features have had sufficient notice of this removal.
InstallingContributingSponsoringDevelopers' GuideVulnerabilitiesJDK GA/EA BuildsMailing listsWiki
                      · IRCBylaws · CensusLegalWorkshopJEP ProcessSource codeMercurialGitHubToolsGitjtreg harnessGroups(overview)AdoptionBuildClient LibrariesCompatibility & Specification ReviewCompilerConformanceCore LibrariesGoverning BoardHotSpotIDE Tooling & SupportInternationalizationJMXMembersNetworkingPortersQualitySecurityServiceabilityVulnerabilityWebProjects(overview,
      archive)AmberBabylonCRaCCaciocavalloClosuresCode ToolsCoinCommon VM InterfaceCompiler GrammarDetroitDevelopers' GuideDevice I/ODukeGalahadGraalIcedTeaJDK 7JDK 8JDK 8 UpdatesJDK 9JDK
      (…,
       21,
       22,
       23)JDK UpdatesJavaDoc.NextJigsawKonaKullaLambdaLanaiLeydenLilliputLocale EnhancementLoomMemory Model UpdateMetropolisMission ControlMulti-Language VMNashornNew I/OOpenJFXPanamaPenrosePort: AArch32Port: AArch64Port: BSDPort: HaikuPort: Mac OS XPort: MIPSPort: MobilePort: PowerPC/AIXPort: RISC-VPort: s390xPortolaSCTPShenandoahSkaraSumatraTiered AttributionTsanType AnnotationsValhallaVeronaVisualVMWakefieldZeroZGC

        © 2024 Oracle Corporation and/or its affiliates
        Terms of Use
        ·
        
            License: GPLv2
        · Privacy
        · Trademarks
