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

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

**メジャーリリース**

|バージョン|本家リリース日|備考|
|---|---|---|
|[4.4 Luna](http://qiita.com/cypher256/items/39a3b54522e2f1cf4aa5)|2014/06/25||
|[4.5 Mars](http://qiita.com/cypher256/items/9561ed5d5cbc91bb2ec5)|2015/06/24||
|4.6 Neon|2016/06/22|今回リリース|
|[4.7 Oxygen](http://qiita.com/cypher256/items/e308d920dfaf15892baa)|2017/06/28||
|[4.8 Photon](https://qiita.com/cypher256/items/4fa470a93b8ff6690492)|2018/06/27|(※)|

_(※) Oxygen の次のバージョンは、~~コードネームだとどれが最新か分からないことや、いつの時点か分からないということで、2018.1 や 2018.2 のようなバージョン表記になる方向で調整されています。~~ [ここで](https://bugs.eclipse.org/bugs/show_bug.cgi?id=493490)コードネーム廃止が議論されていましたが、1 つのバージョンでベータから最終リリースまで 3 年にまたがり（例えば 4.8 は 2017〜2019）、混乱するだけということで、コードネームが継続して使用されることになりました。[投票では Pluto (冥王星)](http://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_857d2f9744a2ea31) になりましたが、Apache ですでに利用されているため、2 位の Photon (光子) に決定しました。_
<font color="red">**2018/09/25 追記**</font>： <a href="/cypher256/items/4fa470a93b8ff6690492">*コードネームは廃止されました。*</a>

**メンテナンスリリース**

|バージョン|本家リリース日|備考|
|---|---|---|
|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](https://qiita-image-store.s3.amazonaws.com/0/45147/3dc05f35-cf56-62f2-5f12-2af95f8e587f.png)

#<i class="fa fa-check-circle" style="font-size:1em;"></i> メンテナンスリリース変更点

####**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 以降の<a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=15544124&query_format=advanced&resolution=FIXED&target_milestone=4.6.3">バグが 54 個修正</a>されました。

Pleiades All in One の変更点

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

Pleiades の変更点 (<a href="http://qiita.com/cypher256/items/a87179fbe8dd7f63ec4e">Android Studio、PhpStorm などの日本語化方法</a>)

```
・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 以降の<a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=15544124&query_format=advanced&resolution=FIXED&target_milestone=4.6.2">バグが 99 個修正</a>されました。

Pleiades All in One の変更点 (<a href="http://qiita.com/cypher256/items/233795f4fc58a704ee47">Mac 版もリリースしました</a>)

```
・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 個のバグが修正](https://bugs.eclipse.org/bugs/buglist.cgi?classification=Eclipse&classification=RT&product=Equinox&product=JDT&product=PDE&product=Platform&query_format=advanced&resolution=FIXED&target_milestone=4.6.1)されました。
その他、ツールバーのスタイルがフラットになりました。
![eclipse_4.6.1_toolbar.fw.png](https://qiita-image-store.s3.amazonaws.com/0/45147/cd1aa623-60f3-b552-c9cf-9aa9baafe689.png)

#<i class="fa fa-check-circle" style="font-size:1em;"></i> 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](https://qiita-image-store.s3.amazonaws.com/0/45147/461ec6f9-d6a8-ccdb-5533-3f832ea55316.jpeg)

####**No4. 部分一致でのコンテンツ・アシスト**
- 候補一覧で一致した文字部分を強調表示
- 部分一致で作動させるかを ON/OFF 可能に

####**No5. エディターで行折り返し**
昔から要望が多かったエディターでの行折り返し表示がサポートされました。ツールバーのアイコン、Alt + Shift + Y で切り替え可能です。
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/38930e5c-af10-54e9-8e43-595edf7b5b14.jpeg)

####**No6. 最大化などの操作性向上**
- Ctrl+M でビューの最大化、元に戻す
- Alt+F11 でフル・スクリーン切り替え

####**No7. JSON エディター**
https://github.com/angelozerr/eclipse-wtp-json から eclipse.org にコントリビュートされました。
![eclipse_json_editor.jpg](https://qiita-image-store.s3.amazonaws.com/0/45147/03fa0628-f08e-1eff-c054-f1e786c32e1f.jpeg)

####**No8. 編集中ファイルの定期保管**
デフォルトでは OFF になっています。一般 > エディター > 自動保管 から設定してください。

####**No9. 高解像度ディスプレイの高 DPI 表示**
> [Qiita - Eclipse 4.6 Neon で High DPI対応 された](http://qiita.com/moris/items/fcabc56ccc45270c76e4)

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

#<i class="fa fa-check-circle" style="font-size:1em;"></i> Pleiades All in One 追加・変更点

####**LiveReload プラグイン追加**
Eclipse で [LiveReload を可能にするプラグイン](http://tools.jboss.org/features/livereload.html)を追加しました。このプラグインと Eclipse のインクリメンタルビルド機能により、CSS や JavaScript などの静的ファイルだけでなく、Java ソースの変更差分もサーバーの再起動なしでブラウザに即時反映されます。ブラウザ側では LiveReload アドオン (Chrome、Firefox、Safari) で通知を受け取り、ブラウザを自動的にリロードしてくれるため F5 を押す必要はありません。スマホなどアドオンが難しい環境では livereload.js を埋め込むオプションがあります。
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/6dc0218b-f28d-65a4-b5d9-19a06d254453.jpeg)

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

####**MoonRise UI ダークテーマ・プラグイン追加**
最近はいつもマーケットプレースのダウンロード TOP 10 に入っている定番のプラグインを追加しました。All in One には以前からエディターの色を変更する Color Theme プラグインが含まれていますが、これと組み合わせることで Eclipse 全体を黒基調の外観にすることができます。
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/1306528e-1dc1-80f4-0624-d48e80c238e9.jpeg)

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

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

####**Jadclipse (Jad + JD-Core) から Eclipse Class Decompiler プラグインへ変更**
逆コンパイルプラグインを Java 8 のラムダなどに対応可能な Eclipse Class Decompiler に変更しました。一部の設定が保存できないバグがありましたが、作者へ報告して修正版をリリースしてもらいました。Pleiades All in One では FernFlower がデフォルトとして設定されています。
![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/256f8ce7-2202-3dab-c75e-ecd90ce4e973.jpeg)

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

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

```java: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);
```
```java: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);
```
```java: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);
```
```java: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);
```
```java: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](https://qiita-image-store.s3.amazonaws.com/0/45147/e97f28ff-8853-2d6d-7790-bb870043abb0.jpeg)

####**新規ウィザードに Gradle と Maven 追加**
標準の Java プロジェクト以外は、新規 > プロジェクト... からダイアログを開いてツリーから選択する必要がありましたが、現状に合わせて Java パースペクティブのコンテキストメニュー > 新規の直下に Gradle と Maven の新規プロジェクト作成のショートカットを追加しました。
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/eaf2cdde-8297-ff19-7089-627c9cc523fa.jpeg)

####**Glance プラグインの Neon 対応**
Neon で Glance が動作しなくなっていたため、ひとまず [Github で fork](https://github.com/cypher256/glance) して対応しました。更新サイトも公開しています。

####**Autodetct Encoding プラグイン追加**
ステータスバーにファイルのエンコーディングと改行の種類を表示するプラグインを追加しました。多くのエディターや IDE によくある機能ですが、Eclipse には無かったため[作成してマーケットプレースに登録](https://marketplace.eclipse.org/content/autodetect-encoding)しました。Pleiades All in One 以外にインストールする場合は次のボタンを実行中の Eclipse へ D&D してください。[![btn-install.png](https://qiita-image-store.s3.amazonaws.com/0/45147/a7c2f281-1940-33ef-72cb-76c4fb981085.png "実行中の Eclipse へドラッグ&ドロップ")](http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2925771)

改行の表示、変換
![改行の変換](https://raw.githubusercontent.com/cypher256/eclipse-encoding-plugin/master/image/ending_select.jpg)

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

####**JStyle プラグイン削除**
Pleiades の AOP によりタブや改行文字を変更するようにしました。後述の「空白文字表示の変更」を参照してください。

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

####**Tomcat プラグイン削除**
Tomcat プラグインは Tomcat サーバ操作専用の Eclipse プラグインです。軽量で便利なプラグインなのですが、このプラグイン前提の環境が少なくなってきたのと、Tomcat を含む様々な AP サーバを利用可能なプラグイン WTP との設定で混乱も散見されていたので、今回の All in One からは削除しました。オリジナルの Sysdeo の更新は止まっていますが、[SourceForge](https://sourceforge.net/projects/tomcatplugin/files/) で Tomcat 9 対応やバグフィックスが続けられています。必要な場合は、マーケットプレースで検索するか、次のボタンを実行中の Eclipse へドラッグしてインストールしてください。[![btn-install.png](https://qiita-image-store.s3.amazonaws.com/0/45147/a7c2f281-1940-33ef-72cb-76c4fb981085.png "実行中の Eclipse へドラッグ&ドロップ")](http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=1963651)

####**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](https://qiita-image-store.s3.amazonaws.com/0/45147/23c1f2bf-a1c9-18ff-d2b6-4f482ab7bebc.jpeg)

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

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

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

#<i class="fa fa-check-circle" style="font-size:1em;"></i> 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](https://qiita-image-store.s3.amazonaws.com/0/45147/ecaeaa01-e522-d0e8-c7a9-bf1beee97aaa.jpeg)

あとは**デバッグモードで起動することで 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 追記**： <font color="red">*pleiades-config.xml の変更を反映するには -clean で再起動してください。*</font>

```xml: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](https://qiita-image-store.s3.amazonaws.com/0/45147/09e8bc2d-221c-5674-570b-91688ed4db03.jpeg)|![2eclipse.jpg](https://qiita-image-store.s3.amazonaws.com/0/45147/0a6ac0d3-bfd1-a6ac-8a1b-9405e1f29154.jpeg)|![3eclipse_pleiades.jpg](https://qiita-image-store.s3.amazonaws.com/0/45147/778d19cd-a37e-f773-bb61-a17e22e8e882.jpeg)|

全表示/非表示の切り替えはツールバーの <img src="http://help.eclipse.org/mars/topic/org.eclipse.platform.doc.user/images/show_whitespace_chars.gif"> から行えます。タブや改行、空白などの個別の表示/非表示は、設定(F10) > 一般 > エディター> テキスト・エディター > 空白文字を表示の右側の「可視性の構成」リンクを開いて設定することができます。

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

#<i class="fa fa-check-circle" style="font-size:1em;"></i> Spring Tool Suite (STS)

Spring 公式の Eclipse プラグイン STS が Spring Boot に合わせて刷新されたので翻訳を追加しました。(STS は Pleiades All in One には含まれていません。マーケットプレースから "STS" で検索してインストールすることができます。) 
<font color="red">**2018/09/25 追記**</font>： <a href="/cypher256/items/4fa470a93b8ff6690492#spring-対応">*2018-09 以降、含まれるようになりました。*</a>

Spring Boot はフレームワークやライブラリではなく、様々な OSS コンポーネントを統合するために色々なタスク向けのデフォルト自動設定を活用することにより XML 無しで、簡単に開発・実行ができ、劇的に生産性を向上させる仕組みです。Spring Boot の設定の多くは各分野のエキスパートにより定義されています。

####**Java マイクロサービス他 Google トレンド**
![WS000001.fw.png](https://qiita-image-store.s3.amazonaws.com/0/45147/10bf2dd7-5a18-c928-a269-e1e38353cc7d.png)
Seasar のサポート終了が目前の 2016/9/26 に迫っていることも関係してか、Spring Boot の勢いがすごいことになっています。仕様である Java EE も参考のために比較していますが、Spring Boot でも Java EE の要素技術は使用可能です。以下に機能をいくつかご紹介します。

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

Spring パースペクティブの場合、新規 > Spring スターター・プロジェクトを選択します。それ以外のパースペクティブの場合は、新規 > プロジェクト... > Spring から選択してください。Spring レガシー・プロジェクトは Spring Boot を使用しないで Spring プロジェクトを作成する場合に使用します。入門コンテンツのインポートについては後述の一覧を参照してください。
![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/6d99f7f9-c880-ded9-2d9d-66e93ac3784b.jpeg)

Maven か Gradle かを選択します。Gradle は古い STS 版から Eclipse 公式の Buildship 版へ移行中のため、いずれかを選択できるようになっています。パッケージングは jar または war、言語は Java 以外に groovy、kotlin が選択可能です。
![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/3a19eab2-a006-96ed-b324-2a68085dd30c.jpeg)

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

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

![start.fw.png](https://qiita-image-store.s3.amazonaws.com/0/45147/fd6eb2a9-c6ae-bdf6-08d4-0a71136b9bdb.png)

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

####**Boot ダッシュボード**
ワークスペースにある Spring Boot アプリケーションが Boot ダッシュボードに自動的に表示され、起動/デバッグや停止が簡単にできます。WTP のサーバー・ビューと似ていますが、これは Web アプリだけでなくバッチなども同じように操作可能です。その他、ngrok 経由で簡単にローカル開発環境を外部公開したり、Cloud Foundary に公開したりできる機能があります。
![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/1603941a-e736-9389-bf60-362a45ddca95.jpeg)

####**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)](https://qiita.com/IsaoTakahashi/items/f99d5f761d1d4190860d)
"cache properties"や"automatic restarts"の動作を画面に反映させるためには、ブラウザで更新ボタンをクリックする必要があって、面倒だよね。LiveReload機能を使うと、ブラウザの更新を行うための通知を自動でしてくれるので、アプリが再起動した直後にブラウザが自動更新されるようになるよ！

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

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

####**Spring プロパティー・エディター**
application.properties や application.yml のコンテンツ・アシスト、ホバー、存在しないキーの警告、値の型によるエラー表示などがサポートされています。ConfigurationProperties アノテーション、spring-boot-configuration-processor、propdeps-plugin を使用することで、アプリケーション独自のプロパティーにも対応することができます。
![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/eb93ea94-ed1b-f746-8c0e-d5ee3589267b.jpeg)

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

起動構成で上書きするプロパティーでもコンテンツ・アシストが利用可能です。
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/bdb97cb1-232e-6f02-9fa1-f8f6587bfe4b.jpeg)

####**Thymeleaf エディター**
Spring MVC で JSP の代わりに推奨されている HTML テンプレート Thymeleaf の Eclipse プラグインが thymeleaf.org から提供されています。下記の更新サイトからインストールし、プロジェクト右クリック > Thymeleaf > Thymeleaf ネーチャーの追加 で機能を有効にすることができます。
http://www.thymeleaf.org/eclipse-plugin-update-site/
![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/45147/ff08abd0-46cf-086b-51af-0e3efd384613.jpeg)

####**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 アプリケーションのテストする|