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の魅力といえるでしょう。
J2EE Watch バックナンバー
- 第1回 Webサービスの標準サポート「JAX-RPC」
- 第2回 “誰もが書けるEJB”を実現する「EJB 3.0」
- 第3回 標準化進む新スクリプト言語“Groovy”
- 第4回 導入段階を迎えたリッチクライアント(前編)
- 第5回 開発ツールとJSFのよい関係とは?
- 第6回 J2SE 5.0「Tiger」で何が変わるか?
- 第7回 DIとAOPがサーバ・コンポーネント技術を変える
- 第8回 Java開発用のIDEとしてEclipseはどう変わったのか
- 第9回 通信系サービスと情報系サービスを融合するJava
- 第10回 Java技術者がフロントにFlashを選択した理由とは?
- 第11回 米JBossは米Red Hatとマーケットシェア拡大を狙う
| Java Solution全記事一覧 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -






