Language Server Protocol, which will be officially unveiled today, features a JSON-based data exchange protocol for providing language services consistently across different code editors and IDEs. The protocol can be used between client tools and language servers to integrate features such as auto complete, goto definition, and find all references. Language server is a term being applied to the language intelligence programs that are providing the services.
Language Server Protocol aims to change the game in tooling support. Most programming languages have been optimized for use with a single tool, which limits opportunities for language providers to reach a wide audience, Codenvy said.
The common protocol gives developers access to intelligence for many languages within their favorite tools. Developers can access language assistants including syntax analysis, outlining, and refactoring within the IDE or editor of their own choice.
Languages and technologies initially supported by Language Server Protocol include C, C++, C#, Java, RAML, TypeScript, JSON, CSS, and Haxe, said Tyler Jewell, Codenvy's CEO. Backers plan to pursue support for other languages such as Python and Ruby. "We have to do work to reach out to those communities," Jewell said.
Microsoft defined the common language server protocol after integrating its OmniSharp tooling and TypeScript servers into its Visual Studio Code source code editor. Codenvy is supporting the project as well with its Eclipse Che developer workspace server and cloud IDE.
"We developed the protocol based on many learnings and contributions from teams across Microsoft and partners," Microsoft said in a statement. "Visual Studio Code is the first Microsoft product to take advantage of this protocol but in the future other Microsoft products may adopt it as well, including Visual Studio and Xamarin."
Red Hat's Harry Mower, senior director of developer programs, said the protocol provides a way to create languages that can more easily plug into existing developer tools. Red Hat is developing Java support for the protocol.
Driving the protocol has been a shift to micro-services and developers writing business logic in any language, Jewell said. Previously, companies such as Microsoft or Red Hat were wedded to a particular language and provided proprietary tooling. "They protected that stack and made it proprietary and guarded it with zealotry that was very intense. All that has changed."
Either a third-party registry or a bundling of the language server inside of an IDE is necessary to enable Language Server Protocol. An open governance model for the protocol still must be developed, according to Jewell.
At the Eclipse Foundation, Executive Director Mike Milinkovich called the protocol an important step forward for developer tools. "It will make it easier for tool providers such as the Eclipse IDE, Che, and Orion projects, to support multiple languages."