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 メタコマンドを使用する。