Eclipse3.3の新機能

Eclipseの次期バージョンの3.3が近づいてきたということで、目玉機能がピックアップされていた。なかなか便利そうだ。


というわけで、ちょっと3.3の新機能から個人的に興味深い部分をM1〜M5の範囲で追ってみた。
ちなみにSWTとPDEは興味が無いのでスルー。

(JDT) Paste type declaration creates new project

JavaのコードをクリップボードからPackage Explorerにペーストすると、自動的にプロジェクトと.javaファイルを生成してくれるという機能。
ちょっとしたコードを試してみたいときに有効らしい。

(JDT) Rename refactoring in editor

Rename refactoringがダイアログではなくエディタ内で直接行えるようになるとのこと。
ちょっとしたリネームのときにストレスが減るかも。

(JDT) Class file editor shows disassembled code

Class File Editorでソースファイルが無いときはバイトコードをディスアセンブルして表示してくれるとのこと。
サードパーティ製のライブラリなんかで、リファレンスでは事足りず、かといってソースを持ってくるのも面倒だなぁ、というときに助かりそう。
まぁディスアセンブルコードなので読解が大変そうだけど。

(Platform) Undo support for resource operations

リソースに対する操作がアンドゥできるようになるとのこと。
ファイルの削除やコピーなんかは今まではアンドゥできなかったんだけど、これが出来るようになるのは大きいね。

(JDT) @Override for implementations of interface methods

interfaceの実装メソッドに@Overrideアノテーションを付けることが出来るようになるとのこと。
……あれ、出来なかったんだっけ。

(JDT) Content Assist for variables with unresolved type

未解決の型の変数に対してもコードアシストが働くようになるとのこと。
これはすごく嬉しい。



  • コードアシストを行うには型が解決している必要がある。

    >手でimport文を書くか完全修飾せねばならない。

  • 未解決なりにもコードが完結していれば、補完機能によってimport文の追加または完全修飾が行える。

    >手でコードを全部書かなければならない。


取っ掛かりは自分でなんとかしなければならなかったのが、普通にコードを書けばたぶんクラスパスの範囲内で適当に候補を出してくれて、なおかつ";"のタイミングでimport文の追加 or 完全修飾まで行ってくれるわけだ。

(JDT) Convert anonymous to nested class as quick assist

無名クラスをインナークラスとしてリファクタリング可能になるとのこと。
スレッド処理なんかで、はじめはちょろっと書いてたのが段々大きくなってきて外だししたくなった、という時に便利かも?

(JDT) New quick fix: Create method from @Override

@Overrideアノテーションのquick fixで未オーバーライドなメソッドを自動的に生成出来るようになるとのこと。
派生クラスのコーディングがちょっと楽になりそう。

(Platform) Show invisible whitespace characters

空白や改行を可視化出来るようになるとのこと。
空白や改行が見えないのはものすごい落ち着かなくて、わざわざJStyleというプラグインを入れているのだが、標準対応してくれるのは嬉しい。
あー、でも全角空白とかどうなのかな。UnicodeカテゴリのZsとかで扱ってくれればいけそう。

(Platform) Improved text diffing algorithm

diffのアルゴリズムが改善されて、処理に要する時間が短縮されるとのこと。
今のプロジェクトで2万行、1.8MBというファイル*1があるのだが、これのdiffがもうとにかく遅くて……。

(JDT) Refactoring without save

ファイルを保存せずにリファクタリングが実行出来るようになるとのこと。
リソースのアンドゥとも相まって気軽にリファクタリングが行えるようになりそう。
単一ファイル内ならまだしも複数ファイルにまたがる場合は、元に戻せなくなるのが怖くてなかなか実行できなかったからなぁ。

Grouping of JARs and class folders in Package Explorer

Package Explorer内のJARファイルやクラスフォルダをグルーピング出来るようになるとのこと。
今はプロジェクトの直下にずらーっと並んでいてものすごい邪魔なので早くスッキリさせたい。

(Platform) Text drag and drop in text editors

テキストエディタ内で選択範囲のドラッグ&ドロップ編集が出来るようになるとのこと。
基本的にはコピペすれば済むことなんだけど、諸事情によりクリップボードを経由せずに移動させたいことがあるのでちょっと嬉しい。

(Platform) Highlighting of individual changes in text merge

Compare editorのハイライトが行単位ではなく文字単位でマーキングされるとのこと。
これはかなり嬉しい。

(JDT) Completion in catch clause

catch節でコードアシストを行うと、try節でthrowされ得るクラスを候補に出してくれるとのこと。
ちょっと便利。

まとめ

全体的にコードアシストやリファクタリングに関する強化が図られているように見受けられた。
使い勝手がいまいちだった部分や、手入力せざるを得なかった部分がスムーズに処理できるようになりそうな予感。


自分は興味が無かったので取り上げなかったが、MYCOMジャーナルの記事にもあるように、SWTとPDEに関しても大幅に強化されているようだ。


MYCOMジャーナルのまとめでは「全体的には地味なバージョンアップだが…」と結ばれているが、個人的にはかなり楽しみにできそうなバージョンアップだ。
新機能というよりは機能強化という感じなので、そういった意味で「地味」という感じなのかな。



■参考
http://download.eclipse.org/eclipse/downloads/drops/S-3.3M5-200702091006/eclipse-news-M5.htmlEnabling Open Innovation & Collaboration | The Eclipse Foundation

*1:プログラムコードじゃないよ。