Since the early days of Java, OEM vendors targeting embedded targets do support AOT compilation, with possible PGO feedback.
Some vendors like IBM, also provide similar capabilities on their regular Java toolchains.
And Maxime finally graduated as Graal/Substrate, which is also another way of compiling Java.
But all in all, everyone is transitioning to the benefits of bytecode as intermediate executable format.
Even some cool LLVM optimizations, like ThinLTO, are only possible thanks to using bytecode.