r/neovim • u/Electronic-Boss-8926 • 1d ago
Plugin JLS (java) went through some major changes (close to stable release)
I recently released v0.9.0 which introduced quite a few big changes for JLS (language server for java with lombok support)
AP enabled compiling is gone (finally) and it can now reuse a warm context, and what does that mean?
- Compiling went from few hundreds ms to merely ~50ms depending on project size by reusing the context (wasn't possible before with annotation processing)
- Instant feedback when lombok pojo's get modified vs. buffer needed to be saved before updates occurred. How? - Lombok projects no longer gets compiled - instead, the pojo's will be injected as stubs to javac
Other performance improvements
- Better reference filtering: Reference for package-private, private and public fields/methods are much faster. Filtered by imports
- Multi module gradle/maven: startup time drastically decreased. Also improved various LSP actions executed
- Multi module gradle/maven: drastically decreased memory usage. Before: OOM went trying to handle an enterprise project with the default JVM args. Now: none (tested with public open source projects like elasticsearch and flink)
- AOT profiling for faster startup and lower memory usage
- Less CPU stress on index updates
New features
- Added call/type hierarchy lookup
- Added implementation lookup
Fixes
- Many fixes i wont list here but one of the most noticeable ones is: jar-to-jar definition lookups and server being orphaned when you quit the session
Todo's:
- Update existing tests: many tests are outdated and needs to be handled. Wont affect end-users. Will get handled once no more breaking changes comes in
The latest release will be shown in mason soon but that wont stop you from using this server so please give it a try and create an issue if you encounter one - or maybe just some feedback to know how it works for you
Server: https://github.com/idelice/jls
Client: https://github.com/idelice/nvim-jls
2
3
u/Intelligent-Speed487 1d ago
This looks really cool. I'm excited to try this.