Übersetzung des Artikels Wie sich das Language Server-Protokoll auf die Zukunft von IDEs auswirkt
Ursprünglicher Autor Mehul Mohan
Seit seiner Einführung hat Visual Studio Code das Entwickler-Ökosystem im Alleingang so stark beeinflusst, dass es kein Zurück mehr geben wird. Es ist ein kostenloses und Open Source Public Domain Tool und ein sehr leistungsfähiges Tool.
Dank VSCode brachte Microsoft 2016 eine weitere sehr wichtige Sache hervor, die weniger bekannt ist. Dies ist das Language Server-Protokoll.
Was ist das Sprachserverprotokoll?
(Language Server Protocol - LSP) - ( HTTP FTP).
- , . - , (, , ), - , , CMD/Ctrl- , .
, . HTTP JSON-RPC .
LSP?
, VSCode ? , VSCode, IntelliSense , C, Python, Java ..? LSP.
IntelliSense HTML/CSS/JavaScript VSCode ( , PyCharm Python). LSP .
JSON-RPC?
JSON-RPC JSON (Remote Procedure Call). ( , REST ), - , API REST.
JSON-RPC:
// Request
curl -X POST —data '{
"jsonrpc": "2.0",
"method": "runThisFunction",
"params": [ "some-param", 2 ],
"id": 1
}'
// Response
{
"jsonrpc": "2.0",
"result": "codedamn",
"id": 1
}
JSON RPC. JSON-RPC, runThisFunction
, .
LSP + JSON-RPC
LSP JSON-RPC . :
Content-Length: <bytes of JSON>\r\n\r\n<json-payload>
:
Content-Length: 78
{"jsonrpc":"2.0","method":"runThisFunction","params":["some-param",2],"id":1}
LSP , Content-Length
, CRLF
\r\n
. , ccls
, , :
, , ccls
, , runThisFunction
. , Content-Length
JSON-RPC.
?
LSP, Microsoft M x N M + N.
M = (C, C++, PHP, Python, Node, Swift, Go ..).
N = (VSCode, Eclipse, Notepad++, Sublime Text ..).
, M N , M*N . .
Mit dem Aufkommen des LSP war das einzige, was im Editor noch übrig war, die Unterstützung für das Sprachserverprotokoll hinzuzufügen. Danach kann sich jeder, der einen Sprachserver erstellt (gemäß den LSP-Standards), problemlos in den Code-Editor integrieren, ohne dass der Editor "weiß", mit welcher Sprache er arbeitet!
Die Zukunft der IDE
Da Sprachserver für verschiedene Programmiersprachen implementiert sind, können Entwickler den Editor ihrer Wahl auswählen. Ohne an eine bestimmte Sprache gebunden zu sein. Sie müssen sich nicht mehr einschränken, zum Beispiel nur noch XCode for Swift-Entwicklung oder PyCharm for Python. Darüber hinaus können LSPs direkt in JavaScript eingebettet werden, um IntelliSense im Browser zu unterstützen! Dies ist eine großartige Zeit für Programmierer!