Many don't use them, because they are commercial tools, and many developers nowadays don't like to pay for software.
The only limitation is that for reflection code one needs to white list which classes end up on the binary.
All major third party commercial JVMs always had the capability of AOT to native code, it was just tabu at Sun.
Oracle has other point of view thus kept the Maxime project alive, rebranded it into Graal, and now those that don't like to pay for developer tools can also enjoy AOT compilation to native code via SubstrateVM, GraalVM and Graal integration into OpenJDK.
Just Windows support is not yet fully done for the time being.
Their long term roadmap is to rewrite the C++ parts of OpenJDK in Java itself, also known as Project Metropolis.
OpenJDK 11 also adopted a feature already common in another commercial JVMs, which allows a JVM to dump a JIT image before existing. Which then allows for AOT like startup on the 2nd execution onwards.
Also Java isn't the only safe alternative to C, those that don't mind lack of generics can just pick Go instead of dealing with C.
Which then we already have several high profile projects using it, including Google's exploratory microkernel based OS.
The only limitation is that for reflection code one needs to white list which classes end up on the binary.
All major third party commercial JVMs always had the capability of AOT to native code, it was just tabu at Sun.
Oracle has other point of view thus kept the Maxime project alive, rebranded it into Graal, and now those that don't like to pay for developer tools can also enjoy AOT compilation to native code via SubstrateVM, GraalVM and Graal integration into OpenJDK.
Just Windows support is not yet fully done for the time being.
Their long term roadmap is to rewrite the C++ parts of OpenJDK in Java itself, also known as Project Metropolis.
OpenJDK 11 also adopted a feature already common in another commercial JVMs, which allows a JVM to dump a JIT image before existing. Which then allows for AOT like startup on the 2nd execution onwards.
Also Java isn't the only safe alternative to C, those that don't mind lack of generics can just pick Go instead of dealing with C.
Which then we already have several high profile projects using it, including Google's exploratory microkernel based OS.