Hello World
ソースコード
Javaでは CやC++と違い、アプリケーションのエントリポイントであるmainメソッドもクラスに所属させる必要があります。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
コンパイル
Eclipse
Eclipseでソースを編集している場合は、編集中にも随時コードチェックが行われ、ファイルを保存するたびにコンパイルが行われます。
コマンドライン
コマンドラインでコンパイルする場合はjavacコマンドを使います。
prompt> javac HelloWorld.java
HelloWorld.javaファイルと同じディレクトリ(フォルダ)にHelloWorld.classファイルが作成されます。
デバグ時にローカル変数にアクセスできるようにするには「-g」オプションを付けます。
prompt> javac -g HelloWorld.java
実行
Eclipse
Eclipse上で実行する場合は、ツールバーの「実行」ボタンを押してプログラムを実行します。
コマンドライン
コマンドラインで実行する場合はjavaコマンドを使います。javacコマンドと違ってファイル名ではなくクラス名を指定する点に注意が必要です。
prompt> java HelloWorld.java
デバグ
Eclipse
Eclipse上でデバグする場合は、ツールバーの「デバグ」ボタンを押してデバグを開始します。Javaパースペクティブからデバグパースペクティブに切り替わり、デバグに適したビューが表示されます。
コマンドライン
コマンドラインでデバグする場合はjdbコマンドを使います。javaコマンドと同様にファイル名ではなくクラス名を指定します。
prompt> jdb HelloWorld.java
jdbでは様々なコマンドを使ってデバグを行います。「help」と打つとjdbで利用できるコマンドの説明が表示されます。jdbの主なコマンドを次に示します。
分類 | コマンド | 概要 |
---|
ブレークポイント | stop at <クラス>:<行番号> | 行番号を指定してブレークポイントを設定します。 |
| stop in <クラス>:<メソッド> | メソッドの開始行にブレークポイントを設定します。 |
| clear | (名前とは裏腹に)ブレークポイントの一覧を表示します。 |
| clear <クラス>:<行番号> | 行番号を指定してブレークポイントをクリアします。 |
| clear in <クラス>:<メソッド> | メソッドの開始行のブレークポイントをクリアします。 |
操作系 | run [クラス [引数]] | アプリケーションのメインクラスを実行します。ブレークポイントで止まります。 |
| cont | ブレークポイントから実行を続行します。次のブレークポイントで止まります。 |
| step | 1行ずつステップ実行します。メソッドを呼び出している行ではメソッドの中には入りません。 |
| stepi | 1命令ずつステップ実行します。メソッドを呼び出している行ではメソッドの中に入ります。 |
| step up | 現在のメソッドがメソッドの呼び出し元に戻るまで実行します。 |
| up [フレーム数] | スレッドのスタックを上に移動します。 |
| down [フレーム数] | スレッドのスタックを下に移動します。 |
出力系 | print <式> | 式や変数の値を出力します。 |
| locals | 現在のスタックフレームの全てのローカル変数を出力します。 |
| threads | スレッドのリストを出力します。 |
| where [<スレッドID> | all] | スレッドのスタックをダンプします。 |
| list [行番号|メソッド] | 実行中のソースコードを出力します。 |
変更系 | set <値> = <式> | フィールドや変数の値を変更します。 |
コマンドラインでの操作はとても面倒なので、IDEを使える環境であればIDEを使った方がデバグの効率が上がります。