2.1 の新機能

Eclipse の 2.1 リリースの Java 開発ツールには、2.0 以降変更されたより興味深いあるいはより有効な新機能があります。

Java エディター

Java デバッガー

リファクタリング

その他

JUnit 統合 (JUnit integration)

Java エディター

Java エディターは詳細にカスタマイズ可能

「Java」>「エディター」設定ページでは、追加構成オプションを提供します。

  • 吹き出し (Hovers)」タブを介して、Java エディターに吹き出しヘルプを構成できます。
  • 入力 (Typing)」タブを使用して、ストリングのスマート・ラッピングにおける小括弧、大括弧、ストリング、およびコメントの自動クローズと、その他の Java 固有の有効なエディター動作を制御できます。
  • 注釈」タブを使用して、エラー、警告、タスクなどの表示外観をカスタマイズできます。
sticky 吹き出し (sticky hovers)

F2 を押すと、スクロール可能およびサイズ変更可能なウィンドウで吹き出しを開くことができます。このウィンドウからコンテンツを選択して、コピーできます。

サイズ変更可能な吹き出しヘルプ・ウィンドウ

目立つ状況指示 (Prominent status indication)

デフォルトのテキスト・エディターと Java エディターの両方で、右上コーナーに目立つマーカーを表示して、ファイルにエラーまたは警告があるということを指示するようになりました。

右上コーナーにエラー表示マーカーのあるエディター

ファイルでの検索

「検索」メニュー・グループには新規コマンド (「ファイルでのオカレンス」) があり、エレメントを宣言したコンパイル単位またはクラス・ファイル内の型、フィールド、メソッド、およびローカル変数のすべてのオカレンスを検索します。その他の検索コマンドと整合して、マーカーはエディター内の注釈として生成および表示されます。「検索結果」ビューのエントリーには、読み取りおよび書き込みアクセスのためのアイコンがあります。このサンプルでは、「TestCase.java」の「fName」の検索結果が表示されています。

ファイル内のフィールドのオカレンスを表示した「エディター」および「検索」ビュー

追加即時修正

追加の Java 問題が即時修正されるようになりました。Java エディターの左マージンにある電球をクリックするか、Ctrl+1 を押すか、メニューから「編集」>「即時修正」を選択すると、以下が実行されます。

  • 欠落したコンストラクターの作成
  • 未使用のプライベート・メソッド、フィールド、または型の除去
  • 未確定インポートの修正 (「インポート宣言の編成」も提供する)
  • 外部の型へのメソッドの作成 (匿名クラスのメソッドの場合)
  • インプリメントされていないメソッドへのスタブの追加
  • アンキャッチ例外に関連する catch 文節またはスロー宣言の追加
  • スローされなくなった例外に関連する catch 文節の除去
  • インプリメントされていない抽象メソッドの追加

即時修正を使用して修正できるコンパイラーが検出したその他の問題には、次のものがあります。

  • 静的コンテキストで使用されないインスタンス・フィールド
  • 静的ではない方法を介してアクセスされた静的メソッドまたはフィールド
  • 非抽象型での抽象メソッドの宣言
  • 不可視メソッド、フィールド、型、またはインポート
  • 非外部化ストリング

「即時修正」ウィンドウ

クイック・アシスト (Quick Assist)

「即時修正」アクションは、エラーがないときでも使用可能になりました。ID に脱字記号を配置して Ctrl+1 を押し (「編集」>「即時修正」) クイック・アシスト (Quick assist) を起動させます。

  • 名前変更リンク (Linked rename) は、すべての ID に使用できます。

    「名前変更リンク」クイック・アシスト (Linked rename Quick Assist)

    名前変更リンク (Linked rename) は、ソース・ファイル内の ID 名のすべてのオカレンスを変更するように編集する (テンプレートと同様に) リンク・モードをアクティブにします。

  • catch 文節を throws 文節 (catch 文節で使用可能な) と置き換えることができます。
  • 新しいローカル変数またはフィールド (すべての式ステートメントで使用可能な) に式ステートメントを割り当てることができます。例えば、vector.iterator(); は、
    Iterator iterator= vector.iterator(); に変換されます。
    変数名候補は、クイック・アシスト (Quick Assist) に提示されます。
  • if/while/for/do ステートメントまたはブロックを除去でき、内容のインデントは自動的に修正されます。
  • テンプレートで複数行選択を囲むことができます。
コード・アシストの改善
  • Java コンパイラーは、コンテキストの予想される型に基づいてプロポーザルの適合率を改善しました。例えば、StringBuffer sb= new [code assist] の場合、リストでは StringBuffer が最初に表示されます。
  • Java エディターのコード・アシストは、キーワードにも使用できるようになりました。
改良済み Java「アウトライン」ビュー

Java アウトラインを調整すると、「アウトライン」ビュー・ツールバーの 「トップレベルの型にジャンプ」アイコン ボタン (「トップレベルの型にジャンプ」) を押したときに、コンパイル単位のメイン型のメンバーだけを表示できます。

Java「アウトライン」ビューのツールバー

ハイパーリンク Java コード

Java コード内の移動時に Ctrl キーを押してマウスを移動させると、クラス、メソッド、およびフィールド ID が、対応する宣言のクリック可能リンクに変わります。このオプションは、「Java」>「エディター」>「ナビゲーション」タブで構成できます。

ハイパーリンク Java コード

次のメンバーへのスクロール Java エディターの Ctrl + Shift + ↓ (「ナビゲート」>「ジャンプ」>「次のメンバー」) および Ctrl + Shift + ↑ (「ナビゲート」>「ジャンプ」>「前のメンバー」) を使用して、メンバーのメソッド、フィールド、イニシャライザー、型の間をすばやくナビゲートします。
オンザフライで検出される詳細エラー

Java エディターは、エラー型に注釈を付けるようになりました。これには、詳細なフロー分析が必要なアンキャッチ例外と未使用変数が含まれます。

入力時に検出したエラーを示すエディター

インプレース・アウトライン (In-place outlines)

Java エディターで Ctrl+F3 (「ナビゲート」>「構造を開く」) を押すと、現行カーソル位置にエレメントのインプレース・アウトライン (in-place outline) がポップアップします。または、Ctrl+O (「編集」>「構造を開く」) を押すと、現行ソース・ファイルのインプレース・アウトライン (in-place outline) がポップアップします。

インプレース・アウトライン (Inplace outline)

エディター概説の吹き出し情報

Java エディター表示用ルーラー (フレームの右側) に、問題注釈の吹き出し情報が表示されるようになりました。

表示用ルーラーの吹き出し

クラス・ファイル・エディター

クラス・ファイル・エディターは、コンパイル単位エディターに追いつきました。カーソル行の強調表示、行番号、注釈の強調表示、表示用ルーラー、印刷マージン、セマンティック選択の拡張、およびクラス・ファイルのメンバー間のキーボード・ナビゲーションをサポートするようになりました。

Java デバッガー

「スレッドとモニター」ビュー

デバッガーの新規「スレッドとモニター」ビューは、ロック保留状態のスレッドとロック待機中のスレッドを表示します。

デッドロック・サイクルを示す「モニター」ビュー

 

インスタンス・ブレークポイントおよび監視ポイント 特定のオブジェクト・インスタンス固有のブレークポイントと監視ポイントを設定できるようになりました。「変数」ビューで、「変数」コンテキスト・メニューから「インスタンス・ブレークポイント...」を選択します。

「インスタンス・フィルター」ダイアログ

改良済み条件付きブレークポイント 従来の条件付きブレークポイントは、ブール式の評価により「真」にトリガーされます。式の値が変更されたときにトリガーされる条件付きブレークポイントを宣言できるようになりました。また、条件式の入力時にコード・アシストが使用可能になりました。

「ブレークポイント・プロパティー」ダイアログ

選択にステップイン

Java デバッガーにより、チェーニングされたまたはネストされたメソッド呼び出しシリーズ内の単一メソッドにステップインできるようになりました。単純に、ステップインしたいメソッドを強調表示し、Java エディター・コンテキスト・メニューから「選択にステップイン 」を選択します。

選択にステップイン

監視項目 Java エディターの式を選択して「監視」アクション (コンテキスト・メニューおよび「実行」メニューで使用可能な) を使用することにより、監視項目を作成できます。 同様に、変数を選択して「監視」アクションを使用しても、監視項目を作成できます。
ステップ・フィルター フィルター操作のあるステップ」アクションがデバッグ・ツールバーおよびメニューに追加されたので、ステップ・フィルターの使用が容易になりました。同様に、デバッグ・コンテキスト・メニューにも追加されたので、選択したスタック・フレームと関連する型またはパッケージのステップ・フィルターの作成が簡素化されました。
「変数」ビューでのワード・ラップ デバッガーの「変数」ビューと「」ビューの詳細領域でワード・ラップをサポートするようになり、ビューのドロップダウン・メニューから使用可能です。

「変数」ビューのドロップダウン・メニューでの「ワード・ラップ」アクション

スタック・トレース・ハイパーリンク

Java スタック・トレースが、ハイパーリンクでコンソールに表示されるようになりました。スタック・トレースの行の上にマウスを置くと、ポインターが手に変わり、スタック・トレースに下線が引かれます。マウス・ボタンを押すと関連した Java ソース・ファイルが開いて、対応する行にカーソルが位置付けられます。

「コンソール」ビューのハイパーリンクを使用したスタック・トレース

コンソール・バッファー・サイズ 「コンソール」ビューでは、最新 N 文字の出力 (デフォルトは 80K) のみ保存されます。コンソール・バッファー・サイズは、「デバッグ」>「コンソール」設定ページを介して構成可能です。
定数および静的変数のフィルター操作

「変数」ビューのプルダウン・メニューで、「定数の表示」と「静的変数の表示」という 2 つの新規アクションを使用できます。これらのアクションで、静的最終変数と静的変数の可視性を切り替えます。

「変数」ビューのドロップダウン・メニューでの「変数」フィルター・アクション

ステップの高速化

デバッガーの「実行」>「ステップオーバー」 (F6) アクションのパフォーマンスが向上しました。F6 キーを押すときと「ステップオーバー」ボタンをクリックするときの違いに注意してください。

命令ポインター

デバッグ時に、Java エディターは現在実行中の行を左マージンの矢印で示すようになりました。最上位スタック・フレームの矢印は塗りつぶされていて、それ以外の矢印は白抜きになっています。

エディター・ルーラーに表示される命令ポインター

リファクタリング

新規リファクタリング

多くの新規リファクタリング・アクションが使用可能になりました。

  • インスタンス・メソッドの移動 このリファクタリングにより、メソッドをそのいずれかのパラメーターまたはフィールドの宣言クラスに移動させることができます。これは新規メソッドを作成して、古いメソッド代行メソッドに変換します (必要な場合は this にポインターを渡す)。
  • メンバーのプッシュ・ダウン (Push Members Down): このリファクタリングにより、あるクラスからそのサブクラスに一連のメソッドおよびフィールドを移動させることができます。
  • メソッドのインライン化: このリファクタリングで、選択した呼び出しサイトでまたはメソッドが呼び出された場所で、特定の Java メソッドの呼び出しをインライン化します。「リファクタリング」>「インライン化」メニュー・エントリーにより、様々な使用が可能です。
  • 定数のインライン化: このリファクタリングで、選択した参照サイトでまたはフィールドが参照された場所で、特定の Java 静的最終フィールドの使用をインライン化します。「リファクタリング」>「インライン化」メニュー・エントリーにより、様々な使用が可能です。
  • 定数の抽出: このリファクタリングで、選択した式から静的最終フィールドを作成し、フィールド参照を置換します。またオプションで、同じ式がある他の場所に再書き込みします。
  • ローカル変数をフィールドに変換: このリファクタリングにより、ローカル変数をフィールドに変換できます。作成時に変数が初期化されると、その初期設定は新規フィールドの宣言またはクラスのコンストラクターに移動します。
  • 匿名クラスをネスト・クラスに変換: コード内の匿名内部クラスが大きすぎる場合、このリファクタリングはそのメンバー・クラスへの変換をアシストします。
  • メンバー型をトップレベル型に変換 (Convert Member Type to Top Level Type): このリファクタリングで、選択したメンバー型に新規 Java コンパイル単位を作成し、必要に応じてすべての参照を更新します。非静的メンバー型の場合、前のエンクロージング・インスタンスにアクセスできるようにフィールドが追加されます。
  • インターフェースの抽出: このリファクタリングで、一連のメソッドを使用して新規インターフェースを作成し、選択したクラスにそのインターフェースをインプリメントさせます。オプションで、可能な場合はクラスの参照を新規インターフェースに変更します。
  • 使用可能な場合にスーパータイプを使用: このリファクタリングで、この置換が可能な場所をすべて識別した後、型のオカレンスをそのいずれかのスーパータイプと置き換えます。
改良済みリファクタリング

次のリファクタリング・アクションが改良されました。

  • メソッド・シグニチャーの変更: このリファクタリングは、「パラメーターの変更」リファクタリングと置き換えられました。メソッドの可視性と戻り型を変更でき、メソッド・パラメーターの追加、除去、名前変更、および再配列が可能です。
  • メンバーのプル・アップ (Pull Members Up): このリファクタリングは、以下の点が改良されました。
    • メンバーは、階層内で複数レベルのプル・アップが可能
    • プル・アップする代わりに、選択したスーパータイプ内でメソッドを抽象として宣言可能
    • 可視性の制限にあわせるため、同時にプル・アップしなければならないメンバーの最小セットを計算可能
  • メソッドの抽出: 抽出したメソッドのパラメーターを再配列および名前変更できます。
  • 「名前変更」および「移動」リファクタリング (Rename and Move Refactorings): Java の型またはパッケージを名前変更するとき (または、別のパッケージに型を移動させるとき)、非 Java ファイルでも同様にエレメントの完全修飾名を更新できるようになりました。

新規ライト・ウェイト・リファクタリング UI

Java リファクタリング操作を活動化すると、小さい開始ダイアログが表示されて、リファクタリングを実行するのに必要な情報が収集されます。何もせずにリファクタリングを実行する場合は「OK」をクリックし、進める前にその効果を確認する場合は「プレビュー」をクリックします。

新規ライト・ウェイト・リファクタリング・ダイアログ

その他

より柔軟な Java ソースおよび出力パス

Java のビルド・パスのセットアップは、柔軟性が改良されました。
  • 除外フィルターにより、ソース・フォルダー内の特定のソース・ファイルをコンパイルから除外できます。
  • ソース・フォルダーがネスト可能になりました。親フォルダーで除外フィルターを使用して、ビルド・パスに追加したいサブフォルダーを除外します。
  • 生成したクラス・ファイルのロケーションを、それぞれのソース・フォルダーごとに設定できます。
  • リンク・フォルダーを、ソース・フォルダー、クラス・フォルダー、または出力フォルダーとしても使用できます。

「Java のビルド・パス」プロパティー・ページ

プロジェクト固有の Java コンパイラー設定 ワークスペース・ワイドな Java コンパイラー設定 (「Java」>「コンパイラー」) に加えて、各 Java プロジェクトの新規「Java コンパイラー」プロパティー・ページを介して、固有の Java プロジェクトに Java コンパイラー設定を構成できるようになりました。

その他の Java コンパイラー・オプション

  • 依存関係にある Java プロジェクトは通常、単一ビルド・アクションで正常にコンパイルできます。循環が許可されるには、「Java」>「コンパイラー」設定ページで循環依存関係と関連した重大度を下げる必要があります。
  • Java コンパイラーは、未使用のプライベート・メソッド、フィールド、または型宣言に警告できるようになりました。このオプションは、デッド・コードや難解なエラーの検索に役立ちます。
  • Java コンパイラーは、変数にその固有の値を割り当てて表示したときに警告を出します。これにより、パラメーター名がフィールド名と類似している setter メソッドおよびコンストラクター宣言にある微妙な間違いを検出しやすくなりました。このオプションは、「Java」>「コンパイラー」>「スタイル」設定ページで構成できます。以下に例を示します。
効果のない割り当て

変数のための改良済み接頭部および接尾部構成

フィールドの接頭部または接尾部の構成に加えて、静的フィールド、パラメーター、およびローカル変数の接頭部または接尾部を指定できるようになりました。「Java」>「コード生成」設定ページのこれらの設定値は、変数名に計算が必要になるとコード・アシスト、即時修正、およびリファクタリングで使用されます。

「命名規則」設定ページ

カスタマイズ可能なコード生成

「Java」>「コード生成」設定ページにより、通常のテンプレートと同様に、生成したコードおよびコメントをカスタマイズできます。このコード・テンプレートは、コードが生成されると使用されます。(コメントは、コード生成に使用される既存の「filecomment」および「typecomment」テンプレートを置き換えます。)

「コード生成」設定ページの「コードとコメント」タブ

構成可能タスク・タグ

「Java」>「タスク・タグ」設定ページは、Java コメントに表示されるタスク・タグのワークスペース・ワイドな表示の構成に使用されます。これらのタグは、各 Java プロジェクトの「Java タスク・タグ」プロパティー・ページを介して、プロジェクトごとに構成することもできます。

「タスク・タグ」設定ページ

エディターには、次のように表示されます。

TODO タスクでのエディター

ソート・メンバー

Java コンパイル単位およびトップレベルの型のコンテキスト・メニューに「ソート・メンバー」アクションがあり、「Java」>「外観」>「メンバーのソート順序」設定ページで定義されたカテゴリー順序に従って、コンパイル単位のメンバーを再配置します。

「メンバーのソート順序」設定ページ

「代行メソッドの追加」ダイアログ

「ソース」>「代行メソッドの生成」アクションを使用して、代行メソッド (インスタンス変数に提供されるメソッドを代行するメソッド) を容易に生成できるようになりました。このアクションは、フィールドのあるすべての型に使用できます。

「代行メソッドの追加」ダイアログ

パッケージ・エクスプローラーの改善

「パッケージ・エクスプローラー」ビューに、非 Java プロジェクトが表示されるようになりました。非 Java プロジェクトをフィルターに掛けて外すためのフィルターが提供され、開く / 閉じるの相互作用がリソースの「ナビゲーター」ビューと整合するようになりました。

パッケージ・エクスプローラーの非 Java プロジェクト

ライブラリー (JRE システム・ライブラリーなど) が、子である JRE を 1 つ以上持つ単一ノードとして表示されるようになりました。

パッケージの階層レイアウトとフラット・レイアウト

「Java パッケージ」ビュー (および「パッケージ・エクスプローラー」ビュー) のオプションにより、パッケージの表示方法を変更できます。 階層は、ツリー内にパッケージを表示し、そのパッケージの下にサブパッケージを表示します。フラットは、すべてのパッケージおよびサブパッケージが兄弟関係となるフラット・リストとして、標準配置にパッケージを表示します。以下は、階層レイアウトのサンプルです。

パッケージ・エクスプローラーの階層レイアウト

論理パッケージ

「Java パッケージ」ビュー (Java ブラウズ・パースペクティブ) では、プロジェクト内のソース・フォルダーの中で同名のパッケージが合体します。

「Java パッケージ」ビューの論理パッケージ

「型階層」ビューがサポートする型定義によるグループ化

型階層メソッドのビューにより、選択した型のメソッドを定義した型ごとにソートできます。例えば、AbstractList の場合、メソッドが ObjectCollection、および List で定義されたように表示できます。

型階層での型定義によるメンバーのソート

「パッケージ・エクスプローラー」および「プロジェクト」ビューの追加フィルター

「パッケージ・エクスプローラー」および「プロジェクト」ビューには、追加フィルターがあります。

パッケージ・エクスプローラー・フィルター

複数メソッドの復元

コンテキスト・メニューから「ローカル・ヒストリーからの復元」を選択することにより、一度の操作でローカル・ヒストリーから複数の Java エレメントを復元できるようになりました。ダイアログの左側で復元したいエレメントにチェックマークを付け、チェックしたエレメントごとに右側からヒストリー・エントリーを選択します。

複数メソッドの復元

JUnit 統合 (JUnit integration)

すべての単体テストの実行

The JUnit TestRunner により、指定した Java プロジェクト、ソース・フォルダー、またはパッケージでのすべてのテストの実行が容易になりました。

JUnit 起動構成

単体テストの検索 新規 JUnit アクションの「ナビゲート」>「ジャンプ」>「参照テスト」 で、特定の型またはメソッドを参照するテストを検索して、ナビゲートします。

JUnit テストとして実行

ビュー内の JUnit テスト・メソッドを選択して、「実行」>「次を実行」>「JUnit テスト」を選択します。これにより、選択したテストを実行する起動構成を作成します。

Copyright (c) 2000, 2003 IBM Corporation and others. All Rights Reserved.