Java開発ではローカルのWindowsやmacOSのIntelliJ IDEAやEclipseなどのIDEを利用しますが、Node.jsやPythonなどスクリプト言語の開発はVimやEmacsのエディタという方も多いと思います。Eclimを使うとJavaも同じようにエディタから開発をすることができます。クラウドの仮想マシンに開発環境を構築すればローカルの設定依存せずターミナルからSSH接続していつでも同じ開発ができます。
仮想マシン
クラウドに仮想マシンを用意します。今回はUbuntu 16.04 LTS (Xenial Xerus)にJavaの開発環境を構築します。
$ cat /etc/os-release |
パッケージを更新しておきます。
$ sudo apt-get update && sudo apt-get dist-upgrade -y |
Java
Java 8のSDKをインストールします。OpenJDK以外でも構いません。
$ sudo apt-get install openjdk-8-jdk -y |
Eclipse Oxygen
EclimはEclipseに接続してエディタからEclipseの一部の機能を使えるようにします。2017年6月にリリースされたEclipse Oxygen (4.7)をダウンロードします。
$ wget http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/epp/downloads/release/oxygen/R/eclipse-java-oxygen-R-linux-gtk-x86_64.tar.gz |
Emacs
Emacs24をインストールします。
$ sudo apt-get install emacs24-nox emacs24-el -y |
Cask
Emacsパッケージ管理のCaskです。インストールにはGitとPythonが必要です。
$ sudo apt-get install git python -y |
~/.emacs.d
ディレクトリに以下のような設定ファイルを用意します。
$ tree ~/.emacs.d |
init.el
はinit-loaderを使いファイルを分割します。~/.emacs.d/inits/08-eclim.el
以外はお好みで利用してください。
- ~/.emacs.d/init.el
(require 'cask "~/.cask/cask.el") |
Caskにインストールするパッケージを記述します。Java開発用にeclimとcompany-emacs-eclimをインストールします。
- ~/.emacs.d/Cask
(source gnu) |
Eclimの設定はREADMEに従います。ポップアップダイアログとコード補完機能はcompany-modeを使います。
- ~/.emacs.d/inits/08-eclim-el
(require 'eclim) |
以下は必須ではありませんがEmacsでよく使う設定です。C-h
でバックスペースのキーバインドを変更します。
- ~/.emacs.d/inits/00-keybindings.el
(define-key global-map "\C-h" 'delete-backward-char) |
Emacsのメニューを非表示にします。
- ~/.emacs.d/inits/01-menu.el
(menu-bar-mode 0) |
行末の空白削除、バックアップを作らない、タブ設定などです。
- ~/.emacs.d/inits/02-files.el
(when (boundp 'show-trailing-whitespace) |
最後にcask
コマンドを実行してパッケージをインストールします。
$ cd ~/.emacs.d |
Eclim
Installing on a headless serverにあるようにXサーバーが必要なEclipseをヘッドレスで利用するため仮想フレームバッファのXvfbをインストールします。
$ sudo apt-get install xvfb build-essential -y |
Eclipseのディレクトリに移動してEclimをインストールします。
$ cd /opt/eclipse |
Xvfbとeclimdを起動します。
$ Xvfb :1 -screen 0 1024x768x24 & |
サンプルプロジェクト
maven-archetype-quickstartのアーキタイプからサンプルプロジェクトを作成しEclimの動作確認をします。最初にSDKMAN!からMavenをインストールします。
$ curl -s get.sdkman.io | /bin/bash |
適当なディレクトリでmvn archetype:generate
を実行します。Eclipseの設定ファイルもmvn eclipse:eclipse
で作成します。
$ mkdir ~/java_apps && cd ~/java_apps |
Emacsを起動します。
$ emacs |
アーキタイプから生成したプロジェクトをEclipseにインポートします。
M-x eclim-project-import |
ミニバッファでProject Directoryを聞かれるのでプロジェクトのディレクトリを指定します。
Project Directory: ~/java_apps/spike/ |
Hello world!
に日付を追加しました。
- ~/java_apps/spike/src/main/java/com/example/App.java
package com.example; |
date.get
まで入力するとポッップアップとミニバッファに候補が表示されます。カーソルでgetMinutes
を選択してエンターを押します。
C-x C-s
でファイルを保存するとEclim reports 0 errors, 1 warnings.
と表示されます。getMinutes
にアンダーラインが引かれそこにカーソルを移動するとミニバッファにエラーメッセージが出ます。Hello worldなのでここでは無視します。
mainメソッドがあるJavaファイルをバッファに表示してeclim-run-class
を実行するとコンパイルとmainメソッドが走ります。
M-x eclim-run-class |