Emacs で LSP(Language Server Protocol) を使用した Java IDE 環境 (技術解説編)

概要

具体的な設定方法等については Emacs で LSP(Language Server Protocol) を使用した Java IDE 環境 (実践編) をご覧ください。

Ubuntu にて OpenJDK/Maven/IntelliJ IDEAインストールしてIDEによる開発環境を作成したのですが、Emacsのヘヴィユーザの私としてはやはりどうも馴染めません。

Emacsで同様の環境が構築できないかを探ります。

行いたいことは、下記の通りです。

  • ソースコードに基づく補完
  • 部分的なコードの実行、デバッグ、テストの実行

初期調査

どうやら、LSP(Language Server Protocol)を使用するEmacsパッケージを使用することでやりたいことができそうです。

下記が参考となった動画、ページです。

上記ページから私が理解したことは下記です。

  • LSPは、自動補完、定義への移動、シンボルの参照などの機能をツールに依存せずに汎用的に提供するためのプロトコル。
  • 元々は Visual Studio Code で使用するために Microsoft が開発したもの
  • C,C++,Java,Python,Go… など多数の言語に対応している
  • Javaの場合、LSPに対応した Language server、LSP client それぞれ複数の実装が存在する

Language server

提供されている Language server

Javaの場合、少なくとも下記3つが提供されているようです。

  • Eclipse JDT Language Server
    • github.com/eclipse/eclipse.jdt.ls
    • Maintainer : Eclipse Foundation, Red Hat, Microsoft
  • java-language-server
    • github.com/georgewfraser/vscode-javac
    • Maintainer : georgewfraser
  • Language Server for Java by Apache NetBeans
    • marketplace.visualstudio.com/items?itemName=ASF.apache-netbeans-java
    • Maintainer : Apache NetBeans
Copied title and URL