J2EE関連の最新トピックをわかりやすく解説
J2EE Watch [8]
Java開発用のIDEとしてEclipseはどう変わったか
スティルハウス
吉川和巳
2005/8/4
■「もっさり感」が軽減された新バージョン
今回は、Eclipseの新バージョン「Eclipse 3.1」を、プラットフォームという広い観点(eclipse.orgで新たに展開しているプロジェクトや、あらゆる言語の開発環境としての側面、リッチクライアントとしての側面など)からではなく、Java開発に使えるIDEとして、どのように使いやすくなったかについてレポートしよう。開発プラットフォームとしてのEclipse 3.1の紹介は、「Eclipse 3.1を使おう」(Java Solution)や他の機会に譲ることにする。
図1 Eclipse 3.1のWelcome画面 |
Eclipse 3.1に触って最初に気付くのは、全体を通して比較的「さくさく動く」ようになった点です。本体の起動や終了は明らかに速くなっており、またEclipseユーザにはおなじみのコードアシスト(クラス名やメソッド名の選択肢のポップアップ表示機能)やクイックフィクス(コード修正機能)も高速化されています。例えば前バージョンの3.0では、Javaコード上でCtrl+1を押してからクイックフィクスがポップアップするまでワンテンポ遅れるようなこともありましたが、そうした「もっさり感」が全般的に解消されています。
またJavaエディタ以外で目を引く変更点としては、新たに追加された「Helpビュー」があります。Eclipseのヘルプだけでなく、JavadocやGoogle、Eclipse.orgなどネット上のリソースの検索結果もワークベンチ内に表示できます(図2)。
図2 ワークベンチ内でJavadocやGoogleの検索が可能 |
■J2SE 5.0を試したくなる支援機能
今回のバージョンアップの目玉といえる部分は、J2SE 5.0で拡張された新しい言語仕様への対応です。特に、コードアシストやクイックフィクス、リファクタリングの各機能において「ジェネリック型」がサポートされ、Eclipse上でジェネリック型を積極的に活用する環境が整っています。例えば、以下のような“従来どおり”のコードを記述したとします。
final List msgs = new LinkedList(); |
するとJavaエディタ上には、ジェネリック型の利用を推奨するワーニングが図3のように表示されます。
図3 ジェネリック型の利用を推奨するワーニング |
そこで右クリック→Refactor→Infer Generic Type Arguments(ジェネリック型引数の推測)を選択すると、上記コードが以下のようにリファクタリングされます。addメソッドの引数の型から、赤色の部分が自動的に推測されるのが分かります。
final List<string>
msgs = new LinkedList<string>(); |
またJ2SE 5.0のもう1つの新機能であるアノテーションにも対応しており、例えば@Overrideや@Deprecatedなどのアノテーションを指定すべき部分を見つけると、クイックフィクスで指摘してくれます(図4)。
図4 @Overrideアノテーションの利用を促すクイックフィクス |
これらのほかにも、J2SE 5.0より導入されたコレクション操作用for文を生成するテンプレートをはじめ、クイックフィクスによる列挙型の定数の自動追加、意図しないオートボクシングの警告などが実装されています。もちろん、これらのJ2SE 5.0対応機能を利用するかどうかはプロジェクト単位で指定できます。
■かゆいところに手が届くエディタとデバッガ
Eclipse 3.1では、J2SE 5.0の新機能に限らずIDEとしての基本機能も強化されており、「かゆいところに手が届く開発環境」としての魅力がさらに増しています。例えばコード上で変数やメソッド、クラス名などのJavaエレメントをクリックすると、そのオカレンス(同ファイル内の同じJavaエレメントの記述)がすぐさまハイライト表示されます(図5)。これにより、コードの流れを目で追うのがぐっと楽になります。またcatch節内の例外クラス名をクリックすると、その例外をスローするコード部分をハイライト表示してくれます。
図5 クリックするとオカレンスをハイライト表示 |
クイックフィクスも一段と進化しています。例えば以下のようなif文内の条件式を選択し、Ctrl+1を押します。
if (msg != null
&& msg.trim().length() > 0) { |
すると、この条件式を以下のようにさまざまに変換する選択肢がポップアップします。
操作 | 変換例 |
真偽を反転 | msg == null || msg.trim().length() <= 0 |
丸カッコを追加 | (msg != null) && (msg.trim().length() > 0) |
左右を入れ替え | msg.trim().length() > 0 && msg != null |
否定で囲む | !(msg == null || msg.trim().length() <= 0) |
if文を分割 | if (msg != null) { if (msg.trim().length() > 0) { |
この機能は、else節の前後のコードを入れ替えたいようなときに重宝するはずです。これまでのように「ドモルガンの法則を当てはめて……」と頭をひねりながら条件文を変更しなくても済みます。
デバッガの新機能としては、モニタ取得の状態表示とデッドロック検出が目を引きます。Javaアプリケーションの実行を一時停止した状態で、デバッグビューのメニューに新たに追加された項目Show Monitorsを選択します。すると、各スレッドがどのモニタを取得しているか表示され、さらにデッドロック状態にあるスレッドが赤く示されます(図6)。
図6 スレッドのモニタ保持状態とデッドロック検出 |
■Ant対応機能も大幅強化
またJavaエンジニアであればJavaコードと同様にAntスクリプトを書く機会も多いと思いますが、Eclipse 3.1ではAnt対応機能もかなり強化されています。新バージョンでは「Antデバッガ」が用意されており、Antスクリプトのブレークポイント設定やステップ実行、プロパティ値の表示などが可能です(図7)。
図7 Antスクリプトもデバッグ可能に |
Antエディタも、以前より一段階レベルアップしています。上述した「クリックしてオカレンス表示」がAntエディタでも使えるだけでなく、Javaエディタと同様のハイパーリンク・ナビゲーションに対応します。Ctrlキーを押しながらターゲット名やプロパティ名をクリックすると、それらが定義されている部分にジャンプできます。
以上、Eclipse 3.1の新機能を駆け足で紹介しました。バージョンアップとともに動作が重くなりつつあったEclipseでしたが、今回はそうした懸念も払拭されています。また、ジェネリック型やアノテーションをつい試してみたくなるJ2SE 5.0のサポート機能に食指を動かすプログラマーも多いはずです。「豊富なコンピューティング・パワーでプログラマーの創造性を引き出す」という、かつてのSmalltalkを思わせるプログラミング環境が、新しいEclipseの魅力といえるでしょう。
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|