Re:A Picture of Java in 2020
by Constellarise on Tuesday September 22, 2020 @12:14PM
(#24556278)
Language server protocols are just re-inventing IDEs, but instead of using shared memory and interacting with the compiler directly you have to use an inefficient JSON pipeline.
Re:A Picture of Java in 2020
by omnicognate on Tuesday September 22, 2020 @01:10PM
(#24557132)
No, the choice of a client/server model was a design decision, one that is not unique to LSP and is also used by some IDEs for various reasons (see, for example, JetBrains Rider). Performance is absolutely fine - the only data that needs to be transferred is that needed to drive the UI, which is trivial over a local socket. Had that not been the case, there are plenty of ways LSP could have been designed as an in-proc library interface and remained just as open as it is.
What makes LSP not 'integrated' in the sense of the I in IDE is the fact that it is decoupled from the editor, allowing one editor to work with many language servers and one language server to work with many editors.
I don't care at all if someone prefers IntelliJ over Emacs (that's a pure matter of taste) but the idea that it's impossible for an editing environment that isn't delivered as a single, integrated monolith to expose powerful language-specific tools such as interactive lints, large scale refactorings, debuggers (check out DAP for the debugging equivalent of LSP), etc was never true as a technical matter and is increasingly untrue in the real world.
One of the best developments in dev tooling in recent years is that it is starting to be seen as the norm for new languages to provide canonical language server implementations. Long may that trend continue.