I've been out of the loop on the AoT side of Java for a while now. How do these systems handle dynamic class-loading / code generation and things like hot patching?
Those are purely compile-time constructs.
That being said, generics and factory patterns aren't a problem for graal at all. Reflection and dynamic class loading are the biggest offenders.
Do you know about its workings?
Which means that the AOT generator has a finite set of classes to.comsider ?
And similarly, all the Spring/Boot dynamic features are a finite combination ?
(I have work on huge JVM systems with huge classpath directories but ultimately these run time polymorphism are finite?)