Question about Project Leyden: why choose "static run-time images"?

Glavo zjx001202 at gmail.com
Mon May 23 08:49:23 UTC 2022


Hello, everyone. I'm excited to see OpenJDK's quest to improve startup
speed, but I have a confusion about Project Leyden.

As far as I know, there are currently two efforts in the Java community to
improve startup speed:

* OpenJ9[1], Zing JVM[2] and Dragonwell[3] reduces JIT warm-up time by
caching profiling data or JIT results.
  This approach greatly improves startup speed with little sacrifice in
functionality and flexibility.
* GraalVM native-image introduces the concept of "closed-world assumption",
at the expense of
  flexibility and partial functionality, statically compiles Java code,
reduces startup time and reduces size.
  Relatively speaking, it is more expensive, and we need to limit ourselves
to use it better.

When I got to know Project Leyden, it seems to me that its purpose and cost
are very much the same as GraalVM native-image.
So, why did Project Leyden choose this approach? Why not opt for a more
general way like OpenJ9?
What decisive advantage does it have over GraalVM native-image that make us
need to start over?

Thanks

[1]: https://docs.azul.com/prime/Use-ReadyNow.html
[2]: https://www.eclipse.org/openj9/docs/shrc/#aot-code-and-jit-data
[3]:
https://github.com/alibaba/dragonwell8/wiki/Alibaba-Dragonwell8-User-Guide#jwarmup


More information about the leyden-dev mailing list