R42日記スマートフォン用の表示で見るR42日記この日記は私的なものであり所属会社の見解とは無関係です。takahashikznITmediaに寄稿しました。リリース版で追加された機能の解説を追加はいどうも。毎年恒例のリリースがやって参りました。(去年の分はこれ)今日はまだリリース前日なので、まとまった解説ページが無いようです。そこで、http://eclipse.org/downloads/packages/eclipse-standard-43-rc3/keplerrc3から各マイルストーンビルドを辿り、新機能の解説を寄せ集めました。2013-07-01時点で、いくつかのページがリンク切れになっています)以下、マイルストーンビルドの時系列順に解説します。Eclipse本体及びJDTが対象です。その他(PDE等)はお察し下さい。(if-else文をswitch文に変換するクイックアシスト)if-else文をswitch文に変換するクイックアシストを追加しました。逆に、switch文をif-else文に変換するクイックアシストもあります。(曖昧ないし不正な可変長引数のコードを無理やりコンパイルする)JDK6以前のコンパイラには、以下のように宣言された可変長引数のコードがコンパイルできてしまうというバグがありました。このバグはJDK7では解消しており、『曖昧な呼び出しである』というコンパイルエラーになります。Junoにおいても、これに準拠した仕様となっています。JDK6以前がターゲットプラットフォームな方にとってはこの仕様は困るということで、システムプロパティ"tolerateIllegalAmbiguousVarargsInvocation"を指定することで、強制的にコンパイルできるようにしました。...-vmargs-DtolerateIllegalAmbiguousVarargsInvocation=true...注意:この設定をONにする代償として、JDK7およびEclipseの標準設定ではコンパイルできる以下の様なコードがコンパイルエラーになります。(ecjコマンドラインコンパイラのオプションを追加)以前はEclipseの設定画面のみで指定できたオプションを、ecjコマンドラインコンパイラの引数でも指定できるようにしました。enablednullアノテーションの宣言が矛盾している箇所を検知。enablednullアノテーションの宣言が冗長な箇所を検知。enablednull可能性が未知な値を@NotNullとして宣言している箇所をを検知。(コンテンツアシストで、コンストラクタ呼び出しの開始位置にプレースホルダーを置く)org.eclipse.jdt.core.CompletionContext.TL_CONSTRUCTOR_STARTという定数が以下の位置を表すらしいです。プラグイン開発者向け。(サッシでウィンドウのデタッチ)これまでは、デタッチされたウィンドウには機能制限があったのですが、その制限がなくなったそうです。(調節されたドラッグ)ツールバーをドラッグで動かせるようになりました。パースペクティブスイッチャーもドラッグできるようになり、ウィンドウの右か左にドラッグすると垂直に配置されます。(ネストしたプロジェクトのインポート)プロジェクトのソースツリー内に含まれるネストしたプロジェクトもインポート対象として検索できるようになりました。(デバッガのコンテンツアシストでもJavadocを表示)むしろ、今まで無かったということに気が付きませんでした。(起動設定で、-XStartOnFirstThreadオプションを省略できるように)OSXでSWTのプログラムを起動する場合に、-XStartOnFirstThreadオプションの有無を指定できるようになりました。(起動設定で、エクスポートされたクラスパスエントリのみを含むか否かを指定できるように)以下の画像参照。(手抜き)グローバルな設定なので、起動設定の移行は不要とのことです。(起動設定のダイアログで警告を表示できるように)これまではOKかエラーの2択だったのが、警告も表示できるようになったそうです。(まだ書いている途中のコードが呼び出しているメソッドのJavadocを表示できるように)Javadocビューと宣言ビューで、まだ書いている途中のコードが呼び出すメソッドのJavadocを表示できるようになったそうです。(不要な型引数を検知する)実際には使われていないクラスの型引数を検知できるようになりました。デフォルトではOFFになっているので、コンパイラ設定でONにして下さい。(インタフェースの実装メソッドでは@Overrideアノテーションの補完をOFFに)Eclipseには元々、@Overrideを補完する機能が備わっています。これを、インタフェースの実装メソッドではOFFにできるようになりました。(パフォーマンス向上)体感できるくらいにパフォーマンスが向上したそうです。エディタを開いたり編集したり閉じたりするのが遅かった箇所での向上が顕著だとか。メモリリークもかなり修正。(スタックトレースコンソールに直接貼り付け)これまでは、スタックトレースコンソールに何かを貼り付ける場合はダイアログでいちいち指定しなければならなかったのが、それが不要になったそうです。DOMの論理的な構造)DOMをデバッガで扱う際、プレーンなJavaオブジェクトではなく、XMLの構造に従ったオブジェクトツリー表示という特別扱いになるそうです。ま、いまどきDOMを直接扱うコードを書くことなんてめったにないとは思いますが。(文字列を連結するクイックアシスト)文字列を連結するクイックアシストが追加されました。(nullアノテーションの継承)Eclipse独自機能であるnullアノテーションですが、以下の画像にある通り、宣言を継承するかどうか指定できるようになりました。nullアノテーションを使ったり使わなかったりと混在しているコードの移行を支援するために追加したそうです。これまでは、nullアノテーションが宣言されたメソッドをオーバーライドしている箇所では、nullアノテーションの宣言が必須でした。4.3では、コンパイラの設定でこの振る舞いを変更できます。この結果、以下の通りnullアノテーションが継承できるようになっています。(著名なユーティリティを使う場合のリソースリーク解析を改善)GoogleとApache由来のライブラリがリソースリーク解析の考慮に含まれるようになりました。IOUtils#closeQuietlyのようなメソッドは明らかにクローズを行なっているので、Closeable#closeを明示的に呼ばなくてもクローズされているものと判定するようになりました。これにより、例えば以下の画像のような警告が抑制されるようになっています。『著名なユーティリティ』のホワイトリストは、現状ではハードコーディングされており、ユーザーによる指定はできません。Indigoでリリースされたnull解析ですが、とうとうフィールドにも適用可能となりました。フィールドが@Nullableであると宣言されるとき、全てのフィールドアクセスは暗黙的にnullポインター参照であると通知されます。完全に検知できるわけではなく、参照の別名が存在していたり並列処理などのケースではnullポインター参照の可能性が依然として残ります。安全性と利便性のバランスを考慮した結果、『フィールドへの構文的null解析』を使えるようにしました。このオプションをONにすると、コンパイラは限定的な範囲のコードに対して、以下の解析を試みます。以下のコードでは、12行目で確認が行わているので13行目のアクセスは安全であると解釈します。17行目ではエラーになります。barの呼び出しの副作用によりnullableがnullになる可能性があるから)と解釈されるからです。(パッケージJavadocのホバー表示)package-info.javaまたはpackage.htmlの内容をホバーで表示できるようになりました。(不要なパラメータを除去するクイックアシスト)不要なパラメータを除去するクイックアシストが使えるようになりました。(パッケージ作成におけるパッケージ名補完)パッケージ作成を伴う全てのウィザードは、パッケージ名のデフォルトが指定済みとなりました。デフォルトで選択されるパッケージ名は、もしまだ何のパッケージも宣言されていないならばプロジェクト名です。ソースツリーが唯一のパッケージを含む場合、それがデフォルトになります。(移行ウィザード)移行ウィザードが追加されました。プラグインの再インストールを支援します。Eclipse自体の更新が行われたか、初回起動時に移行ウィザードが起動します。(ファイル検索における単語一致)ファイル検索で単語一致が使えるようになったようです。(最後に開いた検索ダイアログタブを記憶)最後に開いた検索ダイアログのタブを記憶しておけるようになりました。(ガード節のクイックアシスト)長いif文などでは、条件が一致しなければさっさとreturnして終わり、という書き方のほうが可読性が高いことがあります。これをいわゆる"ガード節"と呼びますが、クイックアシストでガード節を抽出できるようになりました。(Javadocホバーで、パッケージ名をクリック可能に)Javadocを表示するホバー内でパッケージ名をクリックできるようになりました。(Javadocビューの同期状態を表示)Javadocビューの内容が、現在の選択要素とリンクしているか否かを表示するようになりました。(JUnitのバージョンを4.11に統一)表題通り。(デバッグ中の総称型の検知を改善)総称型の解釈に失敗しているために、コンパイルエラーになる評価式の扱いを改善したそうです。(非標準JRE/JDKライブラリのソース位置情報API)たぶんプラグイン開発者向け。(『リソースを開く』ダイアログの機能追加)『リソースを開く』ダイアログで、ファイルを開くときにパースペクティブまたはエディタを選択できるようになりました。(インストールの修復)プラグインの依存関係エラーなどを修復するウィザードが追加されました。(OSGiコンソール経由でのスレッド停止)バグのあるプラグインが無限ループなどで応答しなくなった時、これまではEclipseのプロセスごとKillしないとダメでした。これからは、-consoleというオプション付きでEclipseを起動することでOSGiコンソールが起動します。mainと入力することで、mainスレッドで直ちにIllegalStateExceptionを発生させることができます。これで大抵は無限ループを抜けることができるはず。localhost:12345でOSGiコンソールをいつでも使用可能です。(拡張for文で型名を補完)拡張for文を型名なしで記述しても(この時点ではまだコンパイルエラー)、補完できるようになりました。(接頭語なしでのテンプレート/キーワード補完)最初の文字を打ち込まなくてもテンプレートおよびキーワード補完ができるようになりました。(コンテンツアシスト後に型引数を削除)コンテンツアシストで総称型を入力後、それが不要な場合に'<'を削除すれば、対応する'>'までを一発で削除してくれるようになりました。(戻り値がvoidなメソッド呼び出しの後に自動でセミコロンを追加)コンテンツアシストで、戻り値がvoidなメソッドを保管した場合、自動でセミコロンが付くようになりました。invocationコンテンツアシストにおいて、メソッド戻り値の型に関係無く、セミコロンキーをメソッド呼び出し候補の確定に使えるようになりました。メソッド呼び出しコードを保管後、末尾にセミコロンが付きます。(JUnitテストのテンプレート名を変更)JUnit4が標準になったので、テンプレート名が単に'test'になりました。(@Ignoreされたテストへの専用アイコン)これまで、@Ignoreされたテストはテストをパスしたものとして表示されていましたが、これからは『スキップされた』アイコン付きで表示されるようになりました。新バージョンリリースです。イベントがそろそろやって参ります。画像やURLがリンク切れになっています。...2014-01-30Spring-4.0.1リリースSpring-4.0.1がリリースされています。(Javaエディタ)毎年お馴染みのリリース時期がやって参りました。instrument"になる件lambda-factoryをOpenJ9で動かすおまじない月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。