nvim-lspconfig VS nvim-jdtls

Compare nvim-lspconfig vs nvim-jdtls and see what are their differences.

nvim-jdtls

Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls (by mfussenegger)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
nvim-lspconfig nvim-jdtls
523 75
9,426 913
3.4% -
9.7 7.0
6 days ago about 1 month ago
Lua Lua
Apache License 2.0 GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

nvim-lspconfig

Posts with mentions or reviews of nvim-lspconfig. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-03.
  • JetBrains' unremovable AI assistant meets irresistible outcry
    5 projects | news.ycombinator.com | 3 Feb 2024
    I suggest looking for blog posts about this, you're gunnuh wanna pick out a plugin manager and stuff. It's kind of like a package manager for neovim. You can install everything manually but usually you manually install a plugin manager and it gives you commands to manage the rest of your plugins.

    These two plugins are the bare minimum in my view.

    https://github.com/nvim-treesitter/nvim-treesitter

    Treesitter gives you much better syntax highlighting based on a parser for a given language.

    https://github.com/neovim/nvim-lspconfig

    This plugin helps you connect to a given language LSP quickly with sensible defaults. You more or less pick your language from here and copy paste a snippet, and then install the relevant LSP:

    https://github.com/neovim/nvim-lspconfig/blob/master/doc/ser...

    For Python you'll want pylsp. For JavaScript it will depend on what frontend framework you're using, I probably can't help you there.

    pylsp itself takes some plugins and you'll probably want them. https://github.com/python-lsp/python-lsp-server

    Best of luck! Happy hacking.

  • Neovide – a simple, no-nonsense, cross-platform GUI for Neovim
    17 projects | news.ycombinator.com | 31 Jan 2024
    Adding language support it neovim isn't very difficult once you're setup. I use nvim-lspconfig[1] and just about any language you could need is documented[2]. But like others have mentioned there are batteries included distributions of neovim if that's your cup of tea.

    [1]: https://github.com/neovim/nvim-lspconfig/

    [2]: https://github.com/neovim/nvim-lspconfig/blob/master/doc/ser...

  • A guide on Neovim's LSP client
    7 projects | dev.to | 13 Jan 2024
    If we can't find the basic usage in the documentation we can go to nvim-lspconfig's github repository. In there we look for a folder called server_configurations, this contains configuration files for a bunch of language servers.
  • Do I need NeoVIM?
    11 projects | /r/neovim | 7 Dec 2023
    https://github.com/hrsh7th/nvim-cmp This is an autocompletion engine https://github.com/nvim-treesitter/nvim-treesitter This allows NeoVim to install parsing scripts so NeoVim can do things like code highlighting. https://github.com/williamboman/mason.nvim Not strictly necessary, but allows you to access a repo of LSP, install them, and configure them for without you actively messing about in config files. https://github.com/neovim/nvim-lspconfig Also not strictly necessary, but vastly simplifies LSP setup. https://github.com/williamboman/mason-lspconfig.nvim This lets the above two plugins talk to each other more easily.
  • cpp setting problem
    4 projects | /r/neovim | 6 Dec 2023
    This specific issue talks about fixing clangd for that error: https://github.com/neovim/nvim-lspconfig/issues/2184. The issue is ongoing for ccls AFAIK but for clangd, this has been discussed and fixed in the past already.
  • Need help to set up the pbkit language server
    2 projects | /r/neovim | 21 Sep 2023
    I am trying to set up the pbkit language server for protobuf files. Since it is not part of the nvim-lspconfig repo's server configurations, I have to figure the way out myself. It doesn't seem to be too difficult, as I can start from the bufls configuration there. The following is what I have at the moment:
  • Using nvim-lint as a null-ls alternative for linters
    4 projects | /r/neovim | 14 Aug 2023
    Personally, i think nvim-lint is the best alternative currently, specially so because it has no dependencies on external binaries. This guide assumes you already have your LSP set up with nvim-lspconfig (or an alternative like lsp-zero). You should also have an way to install the linters you are gonna need, i highly recommend Mason with mason-lspconfig.
  • The Future of the Vim Project
    6 projects | news.ycombinator.com | 10 Aug 2023
    Basically neovim can act as a client to a variety of different language servers (https://github.com/neovim/nvim-lspconfig/blob/master/doc/ser...) which give neovim IDE capabilities. This can be done in original Vim also but requires external plugins which can be a pain to compile and install. Neovim has it built in.
  • SQL LSP dialect
    2 projects | /r/neovim | 4 Aug 2023
    I'm struggling to get [sqlls](https://github.com/joe-re/sql-language-server) with [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) to use Postgres syntax.
  • LazyVim
    32 projects | news.ycombinator.com | 16 Jul 2023
    I see where you're coming from. FWIW, I've been using Neovim for an odd 7 years or so and only use plugins where absolutely necessary. I'll usually just add an appropriate BufWritePost (trigger after saving the buffer) autocommand for the language's file extension that does what I want. Or I'll add a keybind in .config/nvim/ftplugin/.vim (or .lua).

    The default LSP client config at https://github.com/neovim/nvim-lspconfig#suggested-configura... sets everything up for you, if you're using an LSP server. I'm not sure why it hasn't been merged into the Neovim repo; possibly because they want to keep the editor core fast and minimal.

    All this means you have to do a little more configuring than with something like VSCode, but to be honest, I haven't legitimately needed to make big changes to my config in a few years. There's stuff I add for fun (like little lua scripts to manage my clipboard and to layout tabs the way I want), but to maintain a 'VSCode' level of functionality none of it's needed. The advantage of spending a little extra time, for me, has been that my edit 'fits like a glove', so to speak :)

nvim-jdtls

Posts with mentions or reviews of nvim-jdtls. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-09.
  • Noob here, would neovim work for my usecase
    2 projects | /r/neovim | 9 Dec 2023
    Java is actually pretty good with Neovim, jdtls and this plugin. One of the best language servers and I'm using it on a regular base with medium to large projects, mostly spring-based. No Android though.
  • Client 2 quit with exit code 1 and signal 0 when opening a .java files
    2 projects | /r/neovim | 10 Nov 2023
    -- See `:help vim.lsp.start_client` for an overview of the supported `config` options. local config = { -- The command that starts the language server -- See: https://github.com/eclipse/eclipse.jdt.ls#running-from-the-command-line cmd = { -- πŸ’€ 'java', -- or '/path/to/java17_or_newer/bin/java' -- depends on if `java` is in your $PATH env variable and if it points to the right version. '-Declipse.application=org.eclipse.jdt.ls.core.id1', '-Dosgi.bundles.defaultStartLevel=4', '-Declipse.product=org.eclipse.jdt.ls.core.product', '-Dlog.protocol=true', '-Dlog.level=ALL', '-Xmx1g', '--add-modules=ALL-SYSTEM', '--add-opens', 'java.base/java.util=ALL-UNNAMED', '--add-opens', 'java.base/java.lang=ALL-UNNAMED', -- πŸ’€ '-jar', '~/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_1.6.500.v20230717-2134.jar', -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ -- Must point to the Change this to -- eclipse.jdt.ls installation the actual version -- πŸ’€ '-configuration', '~/.local/share/nvim/mason/packages/jdtls/config_linux', -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ -- Must point to the Change to one of `linux`, `win` or `mac` -- eclipse.jdt.ls installation Depending on your system. -- πŸ’€ -- See `data directory configuration` section in the README '-data', '/path/to/unique/per/project/workspace/folder' }, -- πŸ’€ -- This is the default if not provided, you can remove it. Or adjust as needed. -- One dedicated LSP server & client will be started per unique root_dir root_dir = require('jdtls.setup').find_root({'.git', 'mvnw', 'gradlew'}), -- Here you can configure eclipse.jdt.ls specific settings -- See https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request -- for a list of options settings = { java = { } }, -- Language server `initializationOptions` -- You need to extend the `bundles` with paths to jar files -- if you want to use additional eclipse.jdt.ls plugins. -- -- See https://github.com/mfussenegger/nvim-jdtls#java-debug-installation -- -- If you don't plan on using the debugger or other eclipse.jdt.ls plugins you can remove this init_options = { bundles = {} }, } -- This starts a new client & server, -- or attaches to an existing client & server depending on the `root_dir`. require('jdtls').start_or_attach(config)
  • [HELP] ftplugin and lazy loading in NvChad
    2 projects | /r/neovim | 11 Jun 2023
    This and this provided no viable solutions for me
  • Does anyone config java for neovim?
    7 projects | /r/neovim | 25 Apr 2023
    Hello, you need mfussenegger/nvim-jdtls to use eclipse lsp (for java) with neovim, there are plenty of tutorials and even stackoverflow questions on this subject if you need help setting it up πŸ˜ƒ
    7 projects | /r/neovim | 25 Apr 2023
    I use the plugins nvim-jdtls and mason.nvim, you must have the binay java 17 or newer available in your PATH.
    7 projects | /r/neovim | 25 Apr 2023
    Sure. Any server that lspconfig supports will work. But for java development is better if you use nvim-jdtls. The documentation in lsp-zero has a guide on how to setup nvim-jdtls.
  • I can't seem to figure it out
    3 projects | /r/neovim | 24 Apr 2023
    Here' my java.lua for nvim-jdtls which solves the nil issue and add more features.
  • does anyone try neovim as a Java ide?
    8 projects | /r/neovim | 17 Apr 2023
    I know what you mean. After 3 distinct attempts I finally got it working myself, about a week ago. It's a really joy using this LSP. I followed these instructions (https://github.com/mfussenegger/nvim-jdtls) BUT I allowed Mason to install the jdtls binaries. This time around I decided to verify every single step of the process (by using print statements in the Lua config file and checking the results with the 'messages' command). It turns out that some of the parameters at the top of the config file that reference the various jdtls directories were incorrect. I would print the value and would check the path using the 'ls' command. In the end things worked out beautifully. All you need is the jdtls stuff Mason installs, your workspace directory, the autocommand under the ftplugin directory, and the main config file. Let me if you'd like to see my config files.
    8 projects | /r/neovim | 17 Apr 2023
    I use https://github.com/mfussenegger/nvim-jdtls/tree/master
    8 projects | /r/neovim | 17 Apr 2023

What are some alternatives?

When comparing nvim-lspconfig and nvim-jdtls you can also consider the following projects:

coc.nvim - Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

null-ls.nvim - Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.

nvim-lsp-installer - Further development has moved to https://github.com/williamboman/mason.nvim!

coc - Chroniques OubliΓ©es Contemporain

ale - Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

clangd - clangd language server

python-lsp-server - Fork of the python-language-server project, maintained by the Spyder IDE team and the community

vim-lsp-settings - Auto configurations for Language Server for vim-lsp

nvim-treesitter - Nvim Treesitter configurations and abstraction layer

ansible-language-server - 🚧 Ansible Language Server codebase is now included in vscode-ansible repository

NvChad - Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

typescript-language-server - TypeScript & JavaScript Language Server