I want to make sure you're talking about the same thing.
I want to make sure you're talking about the same thing.
To be clear: JVM enables the feature, so “technically” JVM allows hot code reload. Not sure how useful this is in practice for non-Clojure JVM users.
Debuggers also use the functionality to allow live code editing and expression evaluation when paused on a breakpoint
[1] https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoa...
There are limits to how much you can change in existing loaded class code, but if you are just loading up new dynamically generated code you can do pretty much anything.
Its a big reason why some of these Java frameworks are so fast. They can generate highly optimized code on the fly, load it, and have it running alongside the existing app code within a few hundred milliseconds. And the Java JIT will optimize it as if the code was there the whole time.
This makes performance optimizations easy that would be impossible in AOT languages like Go, C, C++, Rust, etc