Additionally in modern Java there are even the options of AOT and JIT caches, which can be reused across runs.
Or if staying on Linux, JVM snapshots.