Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[performance] explore options to deploy and run the language server from JAR files #1293

Closed
martinlippert opened this issue Jul 15, 2024 · 2 comments
Assignees
Labels
for: eclipse something that is specific for Eclipse for: vscode something that is specific for VSCode theme: internal-architecture theme: performance type: enhancement

Comments

@martinlippert
Copy link
Member

At the moment, we run the language server from an exploded file structure to achieve the best startup performance. With the latest improvements in Spring Boot 3.3, we should explore whether we can use a different, JAR-oriented deployment layout with similar or even better startup performance.

This would allow us to have a much shallower file structure in the language server plugins and would allow us to remove the extra packaging in Windows (and ship the distribution as a regular ZIP file again). And it will pave the way for further optimizations, like running with CDS enabled.

Step 1 would be to switch to the new standard jar-mode layout: https://docs.spring.io/spring-boot/reference/packaging/efficient.html + validate startup performance is not degrading.

If that works, we could migrate the language server plugins to use this new layout (both on Eclipse and VSCode).

Next steps would be to remove the extra Windows packaging/unzipping parts and experiment with CDS as an additional speedup. The use of CDS might be a bit more difficult to do, since the CDS archive file is JVM and OS specific, so we probably can't produce the right one at build time. Instead, we might need to create one while running the language server for the first time, and then re-using the created archive file for subsequent startups - with this logic being located in the launcher implementations for Eclipse and VSCode.

@martinlippert martinlippert added type: enhancement theme: performance theme: internal-architecture for: eclipse something that is specific for Eclipse for: vscode something that is specific for VSCode labels Jul 15, 2024
@martinlippert martinlippert added this to the Backlog milestone Jul 15, 2024
@BoykoAlex BoykoAlex modified the milestones: Backlog, 4.25.0.RELEASE Jul 26, 2024
@BoykoAlex BoykoAlex self-assigned this Jul 26, 2024
@BoykoAlex
Copy link
Contributor

Looks like new deployment layout outperforms exploded JAR by at least a 100ms on startup. Switching VSCode extensions was rather straight-forward... For Eclipse plugins it'd be great to find a maven plugin that extracts a jar...

@BoykoAlex
Copy link
Contributor

Switched to new JAR layout with df9fbcd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
for: eclipse something that is specific for Eclipse for: vscode something that is specific for VSCode theme: internal-architecture theme: performance type: enhancement
Projects
None yet
Development

No branches or pull requests

2 participants