(e.g. Visual Age for Smalltalk) A Java IDE -> written in Java (e.g. Eclipse) A TypeScript IDE -> written in Typescript (e.g. Visual Studio Code) 2 In the old days
adopt a new language, developers request good IDE support (language smartness) It is usually not enough to support one IDE, you need to support all the popular IDEs
What does that mean? Implement different extensions for different IDEs Adopt totally different extension APIs, individually for each IDE Write each IDE extension in a specific language (e.g. in Java for Eclipse, in Typescript for Visual Studio Code, etc.)
part of Visual Studio Code to: • Separate language support from core code editor • Let people implement language support in whatever language they prefer • Allow language support to be written once, not over and over again for every IDE You can read everything about it here: https://microsoft.github.io/language-server-protocol/ 9 Introduction
Language Server JSON-RPC knows almost nothing about a language focuses on editing experience knows everything about a specific language knows nothing about the concrete environment (UI)
server need to make some sense out of the files inside of the workspace • Identify projects • Resolve the classpath and dependencies • Parse and understand the files 24 The work inside the language server
IDE) Java Language Server JSON-RPC Spring Boot Language Server Knows all about Java projects, how to resolve the classpath, how to find types, etc. Need to know about Java as well (e.g. to provide content-assist in Spring XML config files)