Make onInitialized mechanism in SimpleLanguageServer more 'robust' w.r.t. to subtle timing issues. The intention of onInitalize is typically to guarantee some initialization code. Therefore it should also be called even if the 'initialized' even is already past.
headless services
The main parts of the tooling for Spring Boot apps are implemented as headless services, running in separate processes. Those services can be consumed in existing IDEs by using the Language Server Protocol from Visual Studio Code.