Hi Yi Yang and everyone,
Thanks a lot for creating the incubator project and initiating the discussions (catching up after some slowdown on my side for a couple of days from last week)! Truly excited about the collaboration and the potential it may achieve. A few high level thoughts before diving deep into the technical discussions.
GoalThe startup incubator project has similar traits (or subset of those) as the
OpenJDK Leyden project, which targets for producing a static image for optimized startup time, slow-to-peak performance and runtime memory footprint. The static image may include pre-generated class metadata, Java heap objects and compiled code. It would be good to have that broader goal in mind when we collaborate. Our JDK 11 based collaboration here may help innovations in OpenJDK head and fuel inspirations for Leyden.
Milestones and Roadmap
You brought up the question about future roadmap. It would be good to identify the achievable milestones. Based on our previous discussions, we both are interested in improving OpenJDK CDS (Class Data Sharing) based heap archiving for more general class pre-initialization as a short-term milestone. Based on my past experiences from AOT work on JavaME CVM, pre-resolving constant pool references (pre-initialization assists pre-resolving) help generate more optimal ahead-of-time compiled code. Are there other ideas that we can explore beyond those? It's a good idea to document the milestones and roadmap in https://github.com/adoptium/jdk11u-fast-startup-incubator/wiki.
Code review and feature/bug tracking
Which bug system can be used to help track features and bugs for our JDK 11 based collaboration here? Are there established Eclipse Foundation code review and commit rules that we can follow when collaborating using the
jdk11u-fast-startup-incubator repository?
Please see more comments inlined below.
Hi all,
There I have some ideas about pre-initialization:
1. Backports
As discussed with @jiangli before,
> The current general class pre-initialization work is based on JDK 11 with some backports from OpenJDK 12 & 13, particularly with the backport for
https://bugs.openjdk.java.net/browse/JDK-8206009. Majority of the needed backports have already landed in OpenJDK 11. We still need to backport JDK-8206009 to jdk11u-dev-class-preprocessing.
This seems to be a good starting point, I can try to backport it.
Yes, the majority of the needed backports have already landed in OpenJDK 11.
Besides, do you think there is any prerequisite patch that we must backport right now?
I'll run a full comparison against OpenJDK 11 and send out the list of needed additional backports tomorrow or the day after tomorrow.