Eclipse 4.6 Neon 新機能 TOP10!と Spring Boot STS

  • 318
    いいね
  • 2
    コメント

毎年 6 月恒例の統合開発環境 Eclipse の最新版 4.6 Neon リリースに合わせて、Pleiades All in One をリリースしました。Pleiades All in One は Windows 向けの Eclipse 本体と Pleiades プラグインおよび各言語向けの便利なプラグインのセットです。Pleiades プラグインは Java アプリケーションを AOP で動的に日本語化するための Java エージェントです。

メジャーリリース

バージョン 本家リリース日 備考
4.4 Luna 2014/06/25
4.5 Mars 2015/06/24
4.6 Neon 2016/06/22 今回リリース
4.7 Oxygen 2017/06/28
4.8 Photon 2018/06/27 (※)

(※) Oxygen の次のバージョンは、コードネームだとどれが最新か分からないことや、いつの時点か分からないということで、2018.1 や 2018.2 のようなバージョン表記になる方向で調整されています。 ここでコードネーム廃止が議論されていましたが、1 つのバージョンでベータから最終リリースまで 3 年にまたがり(例えば 4.8 は 2017〜2019)、混乱するだけということで、コードネームが継続して使用されることになりました。投票では Pluto (冥王星) になりましたが、Apache ですでに利用されているため、2 位の Photon (光子) に決定しました。

メンテナンスリリース

バージョン 本家リリース日 備考
Neon 1 2016/09/28
Neon 2 2016/12/21
Neon 3 2017/03/23 Java 9 リリース延期が無ければ正式 対応 → 延期

Eclipse のコードネームは天体、神、科学をメインテーマとして毎年多くの案が出され投票によって決定されています。4.6 では Neptune、Nova、Newton などが上位にあがっていましたが商標などの関係で Neon になりました。

Pleiades All in One ダウンロード
http://mergedoc.osdn.jp/pleiades_distros4.6.html
splash4.6.png

メンテナンスリリース変更点

Neon 3 (4.6.3.v20170421)

Pleiades All in One の変更点

・Java、Tomcat 更新
・Subversive 更新

Pleiades の変更点

・Pleiades 更新: MANIFEST.MF や plugin.xml が開けない問題に対応

Neon 3 (4.6.3.v20170323)

Eclipse Neon 2 以降のバグが 54 個修正されました。

Pleiades All in One の変更点

・Eclipse 4.6.3、各ランタイム、プラグインの更新
・PHP 版に Composer プラグイン追加

Pleiades の変更点 (Android Studio、PhpStorm などの日本語化方法)

・Javassist を最新版に更新
・CDT、PDT、PyDev、WTP の差分訳追加
・IDEA AOP 定義を調整してメニュー表示を高速化
・IDEA のメニュー > ファイル > キャッシュの破棄 に連動して終了時にキャッシュをクリアするように AOP 定義追加
・IntelliJ IDEA、PhpStorm 2017.1 対応
・Android Studio 2.3 対応
・[FORUM#79510] バージョン 1.7.14「プロポーザル -> 候補」の修正もれ 200 箇所ほど対応
・一般的な翻訳と乖離している翻訳ルール (元 IBM ルール) を変更
 コード・コンプリート -> コード補完
 プロポーザル -> 候補

Neon 2 (4.6.2.v20161221)

Eclipse Neon 1 以降のバグが 99 個修正されました。

Pleiades All in One の変更点 (Mac 版もリリースしました)

・Mac 版 Pleiades All in One 追加
・Eclipse 4.6.2、各ランタイム、プラグインの更新

・自動デフォルト設定追加・変更
・コンテンツ・タイプのテキストに *.csv 追加 (BOM 検出対応)
 Windows 版ターミナル・ビューのフォントを Consolas に変更 (Windows で文字が重なるのを回避)
 Mac 版テキスト・エディターのフォントを Monaco から Menlo に変更
 Mac 版プラグイン・スパイのショートカットを ⌥⌘F1 から ⌥⇧F1 に変更

Pleiades の変更点

・Eclipse の差分訳追加・修正
・SAP HANA Studio の新規システム作成ウィザードが動作しない問題に対応
・Windows で configuration ディレクトリに書き込み権が無い場合は、(ユーザー)\.pleiades\ に書き込むように修正
・macOS、Linux で configuration ディレクトリに書き込み権が有る場合は、(ユーザー)\.pleiades\ を使用しないように修正
・macOS Eclipse 4.5 以降で Pleiades スプラッシュが表示されなくなっていた問題を修正

Neon 1a (4.6.1.v20161018)

・jar などにシステム・エディターを関連付けたときに NPE が止まらなくなる
・EGit BASIC 認証不具合

Neon 1 で混入した深刻なバグが修正されました。Neon 1 で、これらの問題がすでに発生している場合は、設定 > 一般 > エディター > ファイルの関連付け に設定されている "システム・エディター" をすべて削除し、更新サイト http://download.eclipse.org/mpc/releases/1.5.2/ から更新してください。

Neon 1 (4.6.1.v20160928)

・PHP、Python 版の DBViewer 削除 (Ctrl+C などのショートカットが効かなくなる不具合暫定対応)
・Eclipse 4.6.1、各ランタイム、プラグインの更新
 Glance プラグイン:長時間使用するとステータスバーがフリーズする問題を修正
 Autodetect Encoding プラグイン:文字コードの自動検出機能を追加 (デフォルトは OFF)

・自動デフォルト設定追加・変更
 一般 > ヒープ・ステータスを表示:ON ⇒ OFF (高速化)
 一般 > Glance 検索 > 強調表示:黄色 ⇒ 明るい緑
 一般 > Glance 検索 > 始動時に表示:OFF ⇒ ON
 一般 > キー > 以下のキーバインドを追加
  ズームイン : Ctrl+Numpad_subtract(テンキーの-)、Ctrl+;
  ズームアウト: Ctrl+Numpad_Add(テンキーの+)
 Java > エディター > 構文の色指定 > Java > キーワード 'return':下線 OFF ⇒ ON
 Javadoc の生成ウィザード > 追加の Javadoc オプション: -encoding UTF-8 -charset UTF-8

・Pleiades の変更点
 ・CSS が Shift_JIS と判定されてしまう問題を修正 (HTML は対応済み)
 ・Apache Directory Studio、Aptana、DBeaver、Eclipse、Eclipse Class Decompiler、
  EGit、FindBugs、InstaSearch、m2e、MoreUnit、Mylyn、PDT、Tomcat Launcher、WTP
  の差分訳追加・修正

Eclipse 本体に関しては 99 個のバグが修正されました。
その他、ツールバーのスタイルがフラットになりました。
eclipse_4.6.1_toolbar.fw.png

Eclipse Neon 新機能・変更点 TOP10

Eclipse 4.6 Neon では数百個のバグが修正され、多くの機能追加・改善が行われました。

No1. JavaScript ES6 対応他

  • ES6 対応
  • Grunt & Gulp タスク実行
  • Bower & NPM ウィザード、実行
  • Node.js ランタイム
  • JavaScript デバッガ

No2. メモリ消費量の低減

これは Eclipse の機能ではありませんが、Java8 Update20 で追加された G1GC のオプション UseStringDeduplication が eclipse.ini に指定されるようになりました。

-XX:+UseG1GC
-XX:+UseStringDeduplication

No3. Git ステージング・ビュー

Git のコミットとプッシュを行う便利なビューが実装されました。D&D でステージ (git add) できます。今までどおりのダイアログも使用できます。
x.jpg

No4. 部分一致でのコンテンツ・アシスト

  • 候補一覧で一致した文字部分を強調表示
  • 部分一致で作動させるかを ON/OFF 可能に

No5. エディターで行折り返し

昔から要望が多かったエディターでの行折り返し表示がサポートされました。ツールバーのアイコン、Alt + Shift + Y で切り替え可能です。
WS000000.JPG

No6. 最大化などの操作性向上

  • Ctrl+M でビューの最大化、元に戻す
  • Alt+F11 でフル・スクリーン切り替え

No7. JSON エディター

https://github.com/angelozerr/eclipse-wtp-json から eclipse.org にコントリビュートされました。
eclipse_json_editor.jpg

No8. 編集中ファイルの定期保管

デフォルトでは OFF になっています。一般 > エディター > 自動保管 から設定してください。

No9. 高解像度ディスプレイの高 DPI 表示

Qiita - Eclipse 4.6 Neon で High DPI対応 された

No10. その他色々

  • 起動高速化、UI 性能改善、アップデート高速化
  • Eclipse 実行環境は Java 8 が必須に
  • WTP の Tomcat 9 対応
  • Java 保管アクションにダイヤモンド演算子への変換追加
  • "if" のコンテンツ・アシストで == null と != null 候補を表示
  • Ctrl+、Ctrl- でエディターのフォント拡大縮小
  • ワークスペース選択ダイアログに最近使ったワークスペースの一覧を表示して選択・削除
  • ファイルの関連付け設定で「関連付けられていないファイルのオープン」の挙動を設定
  • null アノテーションの型を複数指定可能
  • ダイアログのダークテーマ対応
  • 名前変更ポップアップにオプションを開くためのリンクを表示
  • ファイル検索でバイナリーファイルを対象にするオプションを追加
  • クイック・アクセスで Ctrl+3 で表示切り替え
  • アノテーション新規作成時に Target アノテーションなどのメタアノテーションの追加オプション追加
  • リファクタリング:パラメータを新規フィールドに割り当て
  • Java > コード・スタイル > フォーマッター > 編集 > 小括弧 に関する設定追加

Pleiades All in One 追加・変更点

LiveReload プラグイン追加

Eclipse で LiveReload を可能にするプラグインを追加しました。このプラグインと Eclipse のインクリメンタルビルド機能により、CSS や JavaScript などの静的ファイルだけでなく、Java ソースの変更差分もサーバーの再起動なしでブラウザに即時反映されます。ブラウザ側では LiveReload アドオン (Chrome、Firefox、Safari) で通知を受け取り、ブラウザを自動的にリロードしてくれるため F5 を押す必要はありません。スマホなどアドオンが難しい環境では livereload.js を埋め込むオプションがあります。
WS000000.JPG

使い方はサーバー・ビュー > 新規サーバー : 基本 > LiveReload サーバー > 完了 で追加します。このサーバーはあくまでもブラウザへの変更通知用で、通常のサーバー定義のようにアプリケーションを追加するものではありません。この作成した LiveReload サーバーを起動しておき、別途アプリケーションのサーバーをデバッグ起動することで利用できるようになります。Tomcat の場合、Java ソース変更でサーバーが再起動して重くならないように WTP のホットデプロイ設定が必要ですが、後述の Pleiades の「WTP ホットデプロイをデフォルトで有効にして高速化」により設定不要です。

MoonRise UI ダークテーマ・プラグイン追加

最近はいつもマーケットプレースのダウンロード TOP 10 に入っている定番のプラグインを追加しました。All in One には以前からエディターの色を変更する Color Theme プラグインが含まれていますが、これと組み合わせることで Eclipse 全体を黒基調の外観にすることができます。
WS000000.JPG

メニューから設定を開き下記などを設定してください。

  • 基本的な設定
    • 一般 > 外観 : テーマ : MonnRise (standalone)
    • 一般 > 外観 > 色テーマ : 黒系のエディター配色を選択 (上のイメージは Havenjark)
  • こだわり設定
    • 一般 > 外観 > 色およびフォント : 基本 > コンテンツ・アシスト背景色
    • 一般 > 外観 > 色およびフォント : 基本 > コンテンツ・アシスト前景色
    • 一般 > 外観 > 色およびフォント : Java > Javadoc ビューの背景
    • 起動/デバッグ > コンソール : 色を変更

Jadclipse (Jad + JD-Core) から Eclipse Class Decompiler プラグインへ変更

逆コンパイルプラグインを Java 8 のラムダなどに対応可能な Eclipse Class Decompiler に変更しました。一部の設定が保存できないバグがありましたが、作者へ報告して修正版をリリースしてもらいました。Pleiades All in One では FernFlower がデフォルトとして設定されています。
WS000001.JPG

逆コンパイラー 特徴
CFR Java8 ラムダ、String switch 対応
FernFlower Java8 ラムダ対応、高速、IntelliJ 標準搭載
JD-Core Java5 対応、高速
Jad Java 1.4 以前、クローズドソース
Procyon Java8 ラムダ、Enum と String switch、遅い

▼逆コンパイル結果サンプル
Procyon は遅いですが、唯一 Enum の switch 文が解決できています。

CFR
private IStatus doQuery(final QueryData queryData, final Set<? extends INode> nodes) {
      try {
          ContentType queryType;
          this.queryContentType = queryType = this.contentType;
          final IStatus[] result = new IStatus[1];
          this.context.run(true, true, new IRunnableWithProgress(){
              private static  int[] $SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType;
              public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                  switch (.$SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType()[queryType.ordinal()]) {
                      case 4: {
                          result[0] = MarketplaceViewer.this.getCatalog().popular(monitor);
FernFlower
private IStatus doQuery(final MarketplaceViewer.QueryData queryData, final Set<? extends INode> nodes) {
  try {
    final MarketplaceViewer.ContentType e = this.contentType;
    this.queryContentType = e;
    final IStatus[] status1 = new IStatus[1];
    this.context.run(true, true, new IRunnableWithProgress() {
      public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        switch ($SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType()[e.ordinal()]) {
        case 1:
          status1[0] = MarketplaceViewer.this.getCatalog().recent(monitor);
JD-Core
private IStatus doQuery(QueryData queryData, Set<? extends INode> nodes) {
  try {
    ContentType queryType = this.contentType;
    this.queryContentType = queryType;
    IStatus[] result = new IStatus[1];
    this.context.run(true, true, new IRunnableWithProgress(queryType, result, nodes, queryData) {
      public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        switch ($SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType()[this.val$queryType.ordinal()]) {
        case 4:
          this.val$result[0] = MarketplaceViewer.this.getCatalog().popular(monitor);
Jad
private IStatus doQuery(final QueryData queryData, final Set nodes) {
      final IStatus result[];
      final ContentType queryType = contentType;
      queryContentType = queryType;
      result = new IStatus[1];
      context.run(true, true, new IRunnableWithProgress() {
          final MarketplaceViewer this$0;
          private final ContentType val$queryType;
          private final IStatus val$result[];
          private final Set val$nodes;
          private final QueryData val$queryData;
          private static int $SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType[];
          public void run(IProgressMonitor monitor)
              throws InvocationTargetException, InterruptedException {
              switch($SWITCH_TABLE$org$eclipse$epp$internal$mpc$ui$wizards$MarketplaceViewer$ContentType()[queryType.ordinal()]) {
              case 4: // '\004'
                  result[0] = getCatalog().popular(monitor);
Procyon
private IStatus doQuery(final QueryData queryData, final Set<? extends INode> nodes) {
  try {
    final ContentType queryType = this.contentType;
    this.queryContentType = queryType;
    final IStatus[] result = { null };
    this.context.run(true, true, (IRunnableWithProgress) new IRunnableWithProgress() {
      public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        switch (queryType) {
        case POPULAR: {
          result[0] = MarketplaceViewer.this.getCatalog().popular(monitor);

クラスファイルをダブルクリックすることでデフォルトのクラス逆コンパイラーで開きます。また右クリックやツールバーから任意の逆コンパイラーで開くこともできます。
WS000002.JPG

新規ウィザードに Gradle と Maven 追加

標準の Java プロジェクト以外は、新規 > プロジェクト... からダイアログを開いてツリーから選択する必要がありましたが、現状に合わせて Java パースペクティブのコンテキストメニュー > 新規の直下に Gradle と Maven の新規プロジェクト作成のショートカットを追加しました。
WS000000.JPG

Glance プラグインの Neon 対応

Neon で Glance が動作しなくなっていたため、ひとまず Github で fork して対応しました。更新サイトも公開しています。

Autodetct Encoding プラグイン追加

ステータスバーにファイルのエンコーディングと改行の種類を表示するプラグインを追加しました。多くのエディターや IDE によくある機能ですが、Eclipse には無かったため作成してマーケットプレースに登録しました。Pleiades All in One 以外にインストールする場合は次のボタンを実行中の Eclipse へ D&D してください。btn-install.png

改行の表示、変換
改行の変換

現在のエンコーディング設定の表示、変更、変換
エンコーディングの変更
"エンコーディング設定の変更" は Eclipse のファイル単位の設定を変更するもので、文字化けする場合などに使用します。"文字セットの変換" はファイルを書き換えた上でエンコーディング設定も変更します。自動検出には juniversalchardet を使用していますが、勝手に設定が変更されるわけではなく選択肢にラベルとして表示されます。なお、エンコーディング設定は、ファイル > フォルダ > プロジェクト > ワークスペースの順で優先されます。継承とは上位設定を使用するという意味です。他にコンテンツ・タイプごとの設定があり、これはファイル個別に設定されていない場合に使用されます。

JStyle プラグイン削除

Pleiades の AOP によりタブや改行文字を変更するようにしました。後述の「空白文字表示の変更」を参照してください。

Limy Code プラグイン削除

リソースに共通のヘッダーを付加、などのコードに関する機能を持つプラグインを削除しました。Limy プロパティー・エディターは引き続き含まれています。

Tomcat プラグイン削除

Tomcat プラグインは Tomcat サーバ操作専用の Eclipse プラグインです。軽量で便利なプラグインなのですが、このプラグイン前提の環境が少なくなってきたのと、Tomcat を含む様々な AP サーバを利用可能なプラグイン WTP との設定で混乱も散見されていたので、今回の All in One からは削除しました。オリジナルの Sysdeo の更新は止まっていますが、SourceForge で Tomcat 9 対応やバグフィックスが続けられています。必要な場合は、マーケットプレースで検索するか、次のボタンを実行中の Eclipse へドラッグしてインストールしてください。btn-install.png

XAMPP と PHP をバージョンアップ

1.8.2-6 (PHP 5.4.31) → 5.6.21
XAMPP は PHP、Python、Ultimate の Full Edition に付属しています。

XAMPP コントロール・パネルの日本語化

xampp-control.exe の画面をちょっとだけ日本語化しました。
WS000000.JPG

自動デフォルト設定

下記の設定を追加、変更しました。Pleiades All in One のすべてのデフォルト設定は http://mergedoc.osdn.jp/pleiades_distros4.6.html の自動デフォルト設定一覧を参照してください。

  • 一般 > エディター > テキスト・エディター : 空白文字を表示 ON
    • 可視性の確認 : 空白 OFF、透過レベル 80 → 60
  • 一般 > エディター > ファイルの関連付け : *.properties > 関連付けられたエディター
     Limy プロパティー・エディタープロパティー・ファイル・エディター
  • 一般 > コンテンツ・タイプ : Java プロパティー・ファイル > デフォルト・エンコード
     ISO-8859-1UTF-8
  • 一般 > 外観 > 色とフォント : 基本 > テキスト・エディター・ブロック選択フォント 10 → 9
  • Java > デバッグ :
    • ホット・コード置換に失敗したときにエラーを表示 OFF
    • ホット・コードの置換がサポートされていない場合にエラーを表示 OFF
  • Java > 逆コンパイラー :
    • デフォルト逆コンパイラ JD-Core → FernFlower
    • 逆コンパイル・レポートを表示 ON
    • オリジナル行番号をコメントとして出力 ON
    • デバッグのためにコードをそろえる ON
    • メジャー・バージョン更新の確認 OFF
  • JSON > JSON ファイル > エディター > 構文の色の指定 : 文字列値 > 斜体 OFF
  • 検証 : JSON バリデーター OFF

重要な変更点としてプロパティー・ファイルのコンテンツ・タイプ設定を UTF-8 に、デフォルトのエディター関連付けを native2ascii を行わない Eclipse 標準のエディターに変更しました。これは 10 年ほど前に Java 6 がリリースされるまでは native2ascii が必須でしたが、現在ではほとんどのライブラリーやフレームワークが UTF-8 に対応しているなどの現状に合わせたものです。ちなみに Properties や ResourceBundle クラスは UTF-8 を指定して読み込めば、ISO-8859-1、UTF-8 どちらの形式でも (混在していても) 正しく読み込むことができます。native2ascii を自動で行う Limy プロパティー・エディターを使用する必要がある場合は、ファイルの関連付けを変更するか、ファイルを右クリック > 次で開く > Limy プロパティー・エディターを選択してください。

Pleiades 本体の変更点

  • Eclipse Neon スプラッシュ画像追加
  • Javadoc 優先ホバー表示が機能しなくなっていたため対応
  • ウィンドウタイトルに表示されるワークスペース名が訳される問題を修正
  • 訳を格納している properties ファイルを UTF-8 に変更
  • [#35674] Javassist を 3.20.0-GA に更新

差分訳の追加・修正

AnyEdit、Buildship、CDT、CheckStyle、Eclipse 4.5、Eclipse 4.6、EGit、Encoding StatusBar、JBoss Tools、JDEclipse、JDT、m2e、Mylyn、Oomph、PDT、PyDev、RSE、STS、Subversive、Tomcat Launcher、Wildfly サーバーアダプターWTP、更新マネージャー

WTP ホットデプロイをデフォルトで有効にして高速化

WTP Tomcat アダプターには他のアダプターにはない独自設定があり、デフォルトでは以下のように「自動再ロード使用可能」が ON になっているため Java ソースを変更するたびに再起動してしまいます。Pleiades 1.6.8 以降では再起動しないように、デフォルトで OFF としホットデプロイが有効になるように構成されています。関連する設定で「概要」タブ > 公開 >「リソース変更時に自動的に公開」があり、これを OFF にすることでも再起動はしなくなりますが、静的リソースも反映されてなくなるので公開設定は ON のままにしておいてください。
WS000001.JPG

あとはデバッグモードで起動することで Eclipse のホットコード置換 (HCR) が有効となり、強力なインクリメンタルビルド機能により、メソッドボディの変更であればデバッグで停止中のコードでも変更部分のみが即時反映されます。Eclipse LiveReload プラグインと組み合わせた場合は画面に即時反映され、効率良く開発することができます。ただし、メソッドボディ以外の変更、例えばメソッド引数やクラス名の変更などは反映されないため、「デバッグ・モードでサーバーを始動」アイコンを押して再起動する必要があります。なお、Pleiades All in One Neon では下記のオプションがデフォルトで OFF にされているため、ホットコード置換失敗ダイアログは表示されません。

  • 設定 (ツールバーの歯車アイコンまたは F10) > デバッグ
    • ホット・コード置換に失敗したときにエラーを表示: OFF
    • ホット・コードの置換がサポートされていない場合にエラーを表示: OFF

空白文字表示の変更

改行やタブなどを表示するプラグインとして JStyle があります。また Eclipse 3.3 からは標準で空白文字の表示が導入され、3.7 ではタブや改行の種類別に表示の ON/OFF が可能になりました。空白文字表示するという機能に関しては同じなのですが、Eclipse 標準の表記が独特なこともあり、JStyle の提供を継続していましたが、Pleiades 1.6.9 以降では 下記のように Eclipse 標準の空白文字表記を一般的なエディターと同じような表記に変更するための AOP 定義を pleiades-config.xml に追加しました。2016/08/06 追記pleiades-config.xml の変更を反映するには -clean で再起動してください。

dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/conf/pleiades-config.xml:104行目あたり
    <!-- Eclipse 標準の空白文字表記を変更 -->
    <pointCut editPoint="execution" timing="before">
        <advice><![CDATA[
            $3  = $3.equals("·"  ) ? "ᴜ"   // 半角空白 例:▫ᵁᐡᶸᓑᴜՍ
                : $3.equals("°"  ) ? "□"   // 全角空白
                : $3.equals("»"  ) ? "^"   // タブ 例:›^|
                : $3.equals("¤¶" ) ? "↵"   // CRLF 例:↩⤾⤶↲↵┘
                : $3.equals("¤"  ) ? "←"   // CR
                : $3.equals("¶"  ) ? "↓"   // LF
                : $3;
        ]]></advice>
        <jointPoint className="org.eclipse.jface.text.WhitespaceCharacterPainter" methodName="draw"/>
    </pointCut>

この設定により、下記の真ん中の Eclipse 標準に対して右側の表示となります。標準では CRLF が「¤」と「¶」の 2 文字ですが「↵」1 文字となります。

JStyle Eclipse 標準 Eclipse 標準 Pleiades カスタム
1jstyle.jpg 2eclipse.jpg 3eclipse_pleiades.jpg

全表示/非表示の切り替えはツールバーの から行えます。タブや改行、空白などの個別の表示/非表示は、設定(F10) > 一般 > エディター> テキスト・エディター > 空白文字を表示の右側の「可視性の構成」リンクを開いて設定することができます。

JStyle は SWT を直接書き換えたもので Windows 専用でしたが、今回の対応は標準機能の表記を Pleiades で変更しているだけのため OS 非依存です。別の文字に変更したい場合は上記 pleiades-config.xml の ? の右側の文字を変更してください。既存の Pleiades 環境でもこの設定を追加すれば変更可能です。今のところ、Eclipse 4.6 Neon 以降の JStyle はリリース保留中です。ただ、JStyle には独自の機能として「太字を通常文字と同じ幅で表示する」オプションがありました。これに関しては Eclipse 本家のバグトラッカー Bug 69253 Force monospace font feature にかなり昔から要望があがっており、そもそも JStyle の同機能は、ここに投稿されたパッチを取り込んだものです。太字等幅機能が必要な方は eclipse.org にユーザー登録して vote して本家の機能として取り込んでもらいましょう。なお、コーディング用フォントとして人気がある Windows Consolas や Adobe と Google による Source Han Code JP N (Source Code Pro と源ノ角ゴシックの合成) のような太字を元から持つ等幅フォントを使用すれば太字も等幅で表示することができます。

Spring Tool Suite (STS) Neon 版

Spring 公式の Eclipse プラグイン STS が Spring Boot に合わせて刷新されたので翻訳を追加しました。(STS は Pleiades All in One には含まれていません。マーケットプレースから "STS" で検索してインストールすることができます。) Spring Boot はフレームワークやライブラリではなく、様々な OSS コンポーネントを統合するために色々なタスク向けのデフォルト自動設定を活用することにより XML 無しで、簡単に開発・実行ができ、劇的に生産性を向上させる仕組みです。Spring Boot の設定の多くは各分野のエキスパートにより定義されています。なお、STS を導入すると非常に重くなるため、Spring 以外でも Eclipse を使用している場合は別途用意することをお勧めします。

Java マイクロサービス他 Google トレンド

WS000001.fw.png
Seasar のサポート終了が目前の 2016/9/26 に迫っていることも関係してか、Spring Boot の勢いがすごいことになっています。仕様である Java EE も参考のために比較していますが、Spring Boot でも Java EE の要素技術は使用可能です。以下に機能をいくつかご紹介します。

Spring Boot プロジェクト作成ウィザード

Spring には Spring Initializr というプロジェクトの雛形を作成する Web サービスがあります。これで作成したプロジェクトを zip ファイルとしてダウンロードして各種 IDE にインポートできますが、STS の新規プロジェクト作成ウィザードは、このサービスを呼び出してプロジェクトを作成してくれます。IDEA や NetBeans でも同じ方法が採用されています。

Spring パースペクティブの場合、新規 > Spring スターター・プロジェクトを選択します。それ以外のパースペクティブの場合は、新規 > プロジェクト... > Spring から選択してください。Spring レガシー・プロジェクトは Spring Boot を使用しないで Spring プロジェクトを作成する場合に使用します。入門コンテンツのインポートについては後述の一覧を参照してください。
WS000001.JPG

Maven か Gradle かを選択します。Gradle は古い STS 版から Eclipse 公式の Buildship 版へ移行中のため、いずれかを選択できるようになっています。パッケージングは jar または war、言語は Java 以外に groovy、kotlin が選択可能です。
WS000003.JPG

次に使用するライブラリーやフレームワークを選択します。たくさんの選択肢がありますが、後述の「Spring Boot の入門コンテンツ一覧」に示すプロジェクトとしてインポート可能な多くのサンプルコードが用意されており、動かして確認することができます。Web の場合は以下のような組み合わせが多いのではないでしょうか。

  • DevTools : デフォルト自動設定や開発環境向けのツール
  • Web : Spring MVC
  • Thymeleaf : Spring MVC で使用する画面テンプレート
  • JPA : Spring Data JPA

start.fw.png

これらは後からでも build.gradle や pom.xml の依存関係として追加・変更できるので適当でもかまいません。なお、Buildship の場合は、今のところ build.gradle を編集しても自動的に反映してくれないため、プロジェクトを選択して F5 や右クリックしてリフレッシュを実行する必要があります。

Boot ダッシュボード

ワークスペースにある Spring Boot アプリケーションが Boot ダッシュボードに自動的に表示され、起動/デバッグや停止が簡単にできます。WTP のサーバー・ビューと似ていますが、これは Web アプリだけでなくバッチなども同じように操作可能です。その他、ngrok 経由で簡単にローカル開発環境を外部公開したり、Cloud Foundary に公開したりできる機能があります。
WS000002.JPG

Spring LiveReload vs Eclipse LiveReload

Spring Boot には Loaded によるホットスワップがありましたが追加設定などが必要だったこともあり、DevTools による高速再起動が導入されました。DevTools を使用した Web アプリケーションを jar のマイクロサービスとして Boot ダッシュボードから起動する場合、前述の Eclipse LiveReload プラグインを使用しなくても Spring LiveReload が使用できます。

Qiita - spring-boot-devtoolsで開発効率上げようぜ、的な。 (Spring Boot 1.3)
"cache properties"や"automatic restarts"の動作を画面に反映させるためには、ブラウザで更新ボタンをクリックする必要があって、面倒だよね。LiveReload機能を使うと、ブラウザの更新を行うための通知を自動でしてくれるので、アプリが再起動した直後にブラウザが自動更新されるようになるよ!

Eclipse HCR と比較すると、Spring DevTools による Automatic Restart は対象となるクラスローダーが開発対象のクラスのみに絞り込まれているとはいえ、多少もたつき感があります。war として構成する場合は高速な Eclipse の HCR と LiveReload 機能を使用することができますが反映範囲が限定されます。以下に方式による違いを示します。

ホットデプロイ
方法
メソッド
ボディ変更
シグネチャ
変更
コントローラ
クラス名変更
速度 備考
Eclipse 自動再ロード WTP Tomcat 自動再起動
Eclipse HCR 失敗時にダイアログ表示可能
Spring DevTools アプリクラスローダー再起動
Spring Loaded javaagent 設定が必要

Spring プロパティー・エディター

application.properties や application.yml のコンテンツ・アシスト、ホバー、存在しないキーの警告、値の型によるエラー表示などがサポートされています。ConfigurationProperties アノテーション、spring-boot-configuration-processor、propdeps-plugin を使用することで、アプリケーション独自のプロパティーにも対応することができます。
WS000002.JPG

Spring Boot のプロパティー・ファイルのエンコーディングのデフォルト設定は UTF-8 で、Pleiades All in One の Neon 以降のバージョンでもコンテンツ・タイプで Spring プロパティー・ファイルのエンコードが UTF-8 に設定されているため、特に設定を変更する必要はありません。ただし、Limy プロパティー・エディターで開いて保存してしまうと native2ascii が必要な古い形式になってしまうため注意してください。

起動構成で上書きするプロパティーでもコンテンツ・アシストが利用可能です。
WS000000.JPG

Thymeleaf エディター

Spring MVC で JSP の代わりに推奨されている HTML テンプレート Thymeleaf の Eclipse プラグインが thymeleaf.org から提供されています。下記の更新サイトからインストールし、プロジェクト右クリック > Thymeleaf > Thymeleaf ネーチャーの追加 で機能を有効にすることができます。
http://www.thymeleaf.org/eclipse-plugin-update-site/
WS000001.JPG

Spring Boot の入門コンテンツ一覧

STS のインポートウィザードで、様々なサンプルコードが含まれるプロジェクトをインターネット経由で取得し、インポートできます。Gradle か Maven 形式かを選択でき、ほとんどがすぐに実行できるサンプルコードを含むシンプルで分かりやすい最小構成のプロジェクトになっています。やりたいことは大概見つかるんじゃないでしょうか。

入門コンテンツ名 内容
JPA でデータ・アクセス Spring Data JPA を使用して JPA のデータ永続化と連携する
MongoDB でデータ・アクセス MongoDB でデータを永続化する
Neo4j でデータ・アクセス グラフ構造データベース Neo4j NoSQL データストアのオブジェクトおよび関連を永続化する
REST で JPA データ・アクセス Spring Data REST を使用して RESTful なハイパーメディアベースのデータ永続化と連携する
REST で JPA データ・アクセス Spring Data REST を使用して RESTful なハイパーメディアベースのデータ永続化と連携する
Twitter データ・アクセス Twitter からユーザー・データにアクセスする
Spring Boot Actuator で RESTful な Web サービスを構築 アプリケーションの監視やメトリクスを計測する Spring Boot Actuator と RESTful な Web サービスを作成する
非同期メソッドの作成 非同期サービス・メソッドを作成する
LDAP でユーザー認証 LDAP でアプリケーションをセキュアにする
バッチ・サービスの作成 基本的なバッチ駆動ソリューションを作成する
Spring でデータ・キャッシング Spring でメモリー内にデータをキャッシュする
集中構成 Spring Cloud Config からアプリケーション設定を管理する
サーキット・ブレーカー Hystrix を使用してサービスを緩やかに低減させる
Ribbon および Spring Cloud でクライアント・サイド・ロード・バランシング クライアントを中断することなくサービスの動的なアップ・ダウンをサポートする
RESTful Web サービスの使用 Spring の RestTemplate で Web ページ・データを取得する
AngularJS で RESTful Web サービスの使用 AngularJS で Web ページ・データを取得する
Backbone.js で RESTful Web サービスの使用 Backbone.js で Web ページ・データを取得する
iOS から RESTful Web サービスを使用 iOS から Web ページ・データを取得する
jQuery で RESTful Web サービスの使用 jQuery で Web ページ・データを取得する
rest.js で RESTful Web サービスの使用 rest.js で Web ページ・データを取得する
Sencha Touch で RESTful Web サービスの使用 Sencha Touch で Web ページ・データを取得する
SOAP Web サービスの使用 WSDL ベースのサービスを使用するクライアントを作成する
Spring Boot JAR を WAR へ変換 Spring Boot JAR ベースのアプリケーションを WAR ファイルに変換する
Vaadin で CRUD UI を作成 動的な UI を構築するために Vaadin および Spring Data JPA を使用する
デバイスの検出 Web サイトにアクセスしているデバイスの種類を検出するために Spring を使用する
Gradle で Java プロジェクトの構築 Gradle で Java プロジェクトを構築する
Gradle で Spring YARN プロジェクトの構築 Gradle で Spring YARN プロジェクトを構築する
フォーム送信処理 Spring で Web フォームの作成と送信する
Web サイト設定処理 Web サイトのモバイルやタブレットの表示をユーザーが選べるように Spring を使用する
データの統合 Spring Integration を使用してデータを取得するアプリケーションを構築、処理してファイルに書き込む
IntelliJ IDEA で入門ガイドを操作 IntelliJ IDEA で入門ガイドを操作する
トランザクションの管理 トランザクションを使用してコードの重要な部分をラップする
Maven で Java プロジェクトの構築 Maven を使用して Java プロジェクトをビルドする
Maven で Spring YARN プロジェクトの構築 Maven を使用して Spring YARN プロジェクトをビルドする
JMS でメッセージング JMS ブローカーを使用してメッセージをパブリッシュおよびサブスクライブする
RabbitMQ でメッセージング Spring および RabbitMQ でシンプルなパブリッシュおよびサブスクライブ・アプリケーションを作成する
Reactor で非同期、イベント駆動型アプリケーションを作成 非同期、メッセージ駆動システムを構築する
Redis でメッセージング メッセージ・ブローカーとして Redis を使用する
WebSocket および msgs.js を使用してインタラクティブな Web アプリケーションを構築 msgs.js を使用して WebSocket でブラウザーとサーバー間のメッセージを送受信する
WebSocket を使用してインタラクティブな Web アプリケーションを構築 WebSocket でブラウザーとサーバー間のメッセージを送受信する
SOAP Web サービスの生成 Spring で SOAP ベースの Web サービスを作成する
Reactor で写真アップロード サムネイル画像の RESTful マイクロサービス作成する
Facebook でアプリケーション登録 Facebook で統合するアプリケーションを登録する
Twitter でアプリケーション登録 Twitter でアプリを登録する
Spring で JDBC を使用してリレーショナル・データにアクセス Spring JDBC Template でリレーショナル・データにアクセスする
ハイパーメディア駆動 RESTful Web サービスの構築 Spring でハイパーメディア駆動の RESTful な Web サービスを作成する
RESTful Web サービスの構築 Spring で RESTful な Web サービスを作成する
RESTful Web サービスのクロス・オリジン・リクエストを使用可能可 クロス・オリジン・リソース・シェアリングをサポートする RESTful Web サービスを Spring で作成する (CORS)
ルーティングおよびフィルタリング Netflix Zuul を使用してマイクロサービスへリクエストをルーティングおよびフィルタリングする
タスクのスケジュール Spring でタスクをスケジュールする
Web アプリケーションのセキュリティー保護 Spring Security を使用して Web アプリケーションを保護する
サービス登録およびディスカバリー Eureka でサービスを登録および検索する
Spring MVC でモバイル Web コンテンツの提供 Spring MVC および Spring Mobile で Web ページを作成する
Spring MVC で Web コンテンツの提供 Spring MVC と Thymeleaf テンプレートで Web ページを作成する
Spring Boot でアプリケーションの構築 最小構成でアプリケーションを構築する
Spring Boot + JS でアプリケーション配備 Spring Boot CLI + Javascript でリッチなアプリケーションを素早く作成する
Docker で Spring Boot Maven または Gradle で Spring Boot アプリケーションから Docker コンテナーを作成する
Spring Cloud + Lattice Lattice をセットアップして Spring Cloud アプリへ配備する
Spring XD を使用して Twitter ライブ・データのストリームを作成 Twitter からローカル・ファイルへライブ・データをストリーミングする
STS で入門ガイドを操作 Spring Tool Suite で入門ガイドをインポートする (STS)
STS から Cloud Foundry へ配備 STS から Cloud Foundry へ Spring アプリケーションを配備する
ファイルのアップロード マルチパート・ファイルのアップロードを受け入れる Spring アプリケーションを構築する
フォーム入力の検証 Spring でフォームの検証を実行する
シンプル YARN アプリケーション シンプルな Spring YARN アプリケーションを構築する
シンプル単一プロジェクト YARN アプリケーション シンプルな Spring YARN アプリケーションを構築する
バッチ YARN アプリケーション Spring Batch YARN アプリケーションを構築する
再始動可能 YARN アプリケーション 再始動可能な Spring Batch YARN アプリケーションを構築する
YARN アプリケーションのテスト Spring YARN アプリケーションのテストする