If you keep up with the LSP space, this is now possible with Vim
https://github.com/eclipse/eclipse.jdt.ls
https://github.com/georgewfraser/java-language-server
Are both good examples. You'll need a corresponding client like this one
https://github.com/prabirshrestha/vim-lsp
There are others, but this one is pretty good. Next release of Neovim will have one built into the editor. Frankly, it's a bit of a hassle but once you get an LSP provider set up you can get one for just about any language you're using