Java コマンド - Java SE Development Kit の各種開発ツール

Java SE Development Kit の各種開発ツール

JDK をインストールすると、各種開発ツールは {JAVA_HOME}/bin に配置される。

  • javac: Java コンパイラ
  • java: Java インタプリタ
  • javadoc: Java API 文書(HTML Document)の生成
  • javap: Java 逆コンパイラ
  • appletviewer.exe: Java アプレットビューア
  • jar: Java アーカイバ
  • jdb: Java デバッガ
  • jshell コマンド: Java コードのプロトタイピングのための対話式ツール

以下で主なコマンドについて説明する。

javac コマンド

javac コマンドは Java コードをコンパイルする。

javac (option) [src]
  option: コマンドオプション
  src: ソースファイル

javac コマンドは Java ソースコード(.java ファイル)をコンパイルし、クラスファイル(.class ファイル)を生成する。

指定できるコマンドオプション(option)は次のとおりである。

javac コマンドの主なオプション

オプション 概要
-encoding 文字コード ソースコードで使用する文字コード
-sourcepath パス ソースファイルを保存するパス
-d パス クラスファイルの出力パス
-classpath パス 関連クラスファイルの検索パス。複数指定時はセミコロン(Windows)、またはコロン(Unix)で区切る
--module-path パス モジュール検索パス
-verbose 詳細メッセージを表示
-source バージョン 対象コードのバージョン指定

たとえば、次はクラスファイルの出力先、クラスパス、文字コードを指定した例である。

$ javac -d ~/develop -classpath .:~/develop -encoding UTF-8 HelloWorld.java

-classpath オプションは、ソースをコンパイルするために必要なクラスファイルまたは JAR ファイルの場所(パス)を示す。毎回設定するのが面倒な場合は、環境変数 CLASSPATH であらかじめ指定しておいてもよい。

java コマンド

java コマンドは Java プログラムを実行する。

java (option) [clazz] (params)
  option: コマンドオプション
  clazz: 実行するクラス
  params: パラメータ

java コマンドは指定されたクラスをロードして実行する。 params は Java プログラムに渡す値である。main メソッドの引数 args として受け取ることができる。複数ある場合は空白で区切る。

指定できるコマンドオプション(option)は次のとおりである。

java コマンドの主なオプション

オプション 概要
-classpath パス 関連クラスファイルの検索対象。
複数指定時はセミコロン(Windows)、またはコロン(Unix)で区切る
–-module-path パス モジュール検索パス
-jar .jar ファイルを実行
-version Java バージョンを表示

たとえば、次は Hello.jar を実行する例である。パラメータとして "devkuma" を設定する。

$ java -jar Hello.jar "devkuma"

jar コマンド

jar コマンドは JAR ファイルを作成する。

jar (option) [jfile] (clazz...)
  option: コマンドオプション
  jfile : 作成する jar ファイルの名前
  clazz: 含めるクラスファイル(複数指定可能)

JAR は Java ARchive の略で、クラスファイルを Zip 形式で圧縮した形式である。Java でアプリケーションを配布するときは、JAR 形式にまとめたものを配布するのが一般的である。 JAR ファイルを作成するには jar コマンドを使用する。

指定できるコマンドオプション(option)は次のとおりである。

jar コマンドの主なオプション

オプション 概要
c 新しい JAR ファイルを作成
u 既存の JAR ファイルを更新
x JAR ファイルの内容を抽出
t JAR ファイルの内容一覧を表示
f 対象 JAR ファイルを指定
–-module-path パス モジュール検索パス

たとえば、次はあらかじめ用意したクラスファイルとマニフェストファイル(MANIFEST.MF)をもとに Hello.jar を作成する例である。

$ jar cvfm Hello.jar ./main/resource/com/devkuma/tutorial/META-INF/MANIFEST.MF ./main/src/com/devkuma/tutorial/*.class

javadoc コマンド

javadoc コマンドは API 文書を作成する。

javadoc (option) [src]
  option: コマンドオプション
  src : 文書の元になるソースファイル

javadoc コマンドは、ソースファイルに記述されたドキュメントコメントから API 文書を生成する。公式サイトで公開されている API 文書も、元は javadoc コマンドで作成されたものである。

たとえば、次は Java 標準ライブラリに含まれる Math クラスのドキュメントコメントの例である。

/**
 * The class {@code Math} contains methods for performing basic
 * numeric operations such as the elementary exponential, logarithm,
 * square root, and trigonometric functions.
 ... 中略 ...
 * @author  unascribed
 * @author  Joseph D. Darcy ... 作成者
 * @since   JDK1.0  ... 対象バージョン
 */
public final class Math {
    ...中略...
    /**
     * Returns the trigonometric sine of an angle.  Special cases:
     * <ul><li>If the argument is NaN or an infinity, then the
     * result is NaN. ... メソッド概要
     ... 中略...
     * @param   a – an angle, in radians. ... 引数
     * @return  the sine of the argument. ... 戻り値
     */
    public static double sin(double a) {
        return StrictMath.sin(a); // default impl. delegates to StrictMath
    }
    ...中略...
}

javadoc コマンドは次のように実行できる。次は /lang フォルダの .java ファイルをもとに文書を作成する例である。対象は /docs フォルダである。

$ javadoc -d docs ~/develop/*.java

jshell コマンド

jshell コマンドは対話式シェル環境を開始する。

jshell (option)
  option: コマンドオプション

jshell コマンドは、Java コードをコマンドラインで対話的に実行するための REPL(Read-Eval-Print-Loop) 環境を開始する。Java 9 で追加された。
Java 9 より前は簡単なコードを使うにもコンパイルと実行の手順が必要だったが、JShell を使うとすぐに実行できる。

使用可能なコマンドオプション(option)は次のとおりである。

jshell コマンドの主なオプション

オプション 概要
–-classpath パス 関連クラスファイルの検索対象。複数指定時はセミコロン(Windows)、またはコロン(Unix)で区切る
–-module-path パス モジュール検索対象
–-enable-preview プレビュー機能を使用

たとえば、次は JShell を起動して簡単なコードを実行する例である。

% jshell
|  Welcome to JShell -- Version 17.0.4.1
|  For an introduction type: /help intro

jshell> import java.util.ArrayList;  (1) インポート

jshell> new ArrayList<String>();     (2) リスト定義
$2 ==> []

jshell> $2.add("안녕하세요.");          (3) リスト操作
$3 ==> true

jshell> $2.add("반갑습니다.");
$4 ==> true

jshell> $2.get(0);
$5 ==> "안녕하세요."

jshell> /exit
|  Goodbye

JShell プロンプトは jshell> である。ライブラリを利用するときは、通常のコードと同じように import コマンドでクラスを取り込む(1)。
その後のコード(1 ~ 2)は、暗黙的に main メソッド配下のコードとみなされる。また、変数宣言も不要である。生成されたオブジェクトはそのまま自動変数 $1$2… に順番に代入されるためである。(3)でも、(2)で生成した ArrayList オブジェクトに変数 $2 でアクセスできる。
JShell を終了するには /exit メタコマンドを使用する。