

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
javacとは何か
javac は Java のソースコードを実行可能なバイトコードに変換する「Java のコンパイラ」です。Java のプログラムはまず人が読める形で書かれ、機械がそのまま実行することはできません。javac はソースコードをクラスファイル(.class)という中間形式に変換します。このクラスファイルは Java 仮想マシン(JVM)で実行されます。この変換には構文の正しさを確かめる役割もあり、文法エラーがあると javac はエラーメッセージを返します。
次に、準備の話です。javac を使うには JDK(Java Development Kit)が必要です。JDK にはコンパイラだけでなく、JVM やデバッグツール、ドキュメントなどが含まれます。JDK をインストールしたら、コマンドラインから javac を使えるように PATH 環境変数を設定します。これにより、どのフォルダからもコマンドを実行できるようになります。
環境設定のポイントは次のとおりです。Windows・macOS・Linux で設定方法は少し異なりますが、基本は同じです。 具体的には、JDK の bin ディレクトリを PATH に追加します。なお、JAVA_HOME を設定すると他のツールと連携しやすくなります。
基本的な使い方
基本の流れは次のとおりです。最初に Java のソースを作成します。例として HelloWorld.java というファイルを作って保存します。
次にコマンドラインを開き、javac HelloWorld.java を実行します。成功すれば同じフォルダに HelloWorld.class が生成されます。
最後に java HelloWorld と入力すると、JVM がクラスファイルを読み込み、main メソッドの中の処理を実行します。ここで出力として「Hello, world!」が表示されます。
実例: HelloWorld
以下は最も基本的な HelloWorld の例です。コードの各行は Java の最小実装としてよく使われます。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
javacのよく使うオプション
ここではよく使うオプションをいくつか紹介します。-d はクラスファイルの出力先ディレクトリを指定します。
例: javac -d bin HelloWorld.java
-cp または -classpath は外部ライブラリを探す場所を指定します。
例: javac -cp lib/* HelloWorld.java
-Xlint は警告の詳しい情報を表示します。学習中の人には有益です。
-g はデバッグ情報をクラスファイルに含めるかどうかを制御します。
オプションの比較表
| オプション | 意味 | 例 |
|---|---|---|
| -d | クラスファイルの出力先ディレクトリを指定 | javac -d bin HelloWorld.java |
| -cp | クラスパスを指定 | javac -cp lib/* HelloWorld.java |
| -Xlint | 警告の詳細を表示 | javac -Xlint:all HelloWorld.java |
クラスパスと環境設定
クラスパス (CLASSPATH) は Java がどこにあるライブラリを探すかを決めます。外部のライブラリを使う場合、その jar ファイルの場所をクラスパスに入れる必要がある場合があります。
PATH には bin ディレクトリを含め、javac がどこからでも呼べるようにします。JAVA_HOME という変数を設定しておくと、他のツールが JDK を見つけやすくなります。
よくある質問と注意事項
・はじめは複雑なオプションを覚えず、基本の javac HelloWorld.java の練習から始めましょう。
・クラスファイルの生成場所を整理するために -d を活用すると後でファイルの管理が楽になります。
まとめ
本文の要点を再掲します。javac は Java の学習で最初に覚えるべき道具の一つです。正しく使えばソースコードを素早く機械語に変換でき、プログラミングの理解を深める助けになります。実際に HelloWorld.java を作成し、javac でコンパイルして実行する体験を通じて、Java の動く仕組みを体感しましょう。
javacの関連サジェスト解説
- javac コマンド とは
- javac コマンド とは、Java のソースコードファイル(.java)を、実行できる形のバイトコード(.class)に変換する開発ツールのことです。Java は書いたらそのまま動くものではなく、まず javac で機械が読める形に翻訳してから、Java 仮想マシン(JVM)で実行します。javac は Java Development Kit(JDK)に含まれており、JRE には含まれていません。つまり、プログラムを作る人は JDK をインストールする必要があります。使い方の基本は次の通りです。1) JDK をインストールし、コマンドを実行する場所(端末やコマンドプロンプト)から javac が使えることを確認します。PATH に JDK の bin ディレクトリが通っていれば ok です。2) HelloWorld のようなソースファイルを作ります。クラス名とファイル名は基本的に同じにします。3) ターミナルで javac HelloWorld.java と入力して実行すると、同じフォルダに HelloWorld.class が作られます。4) 実行には java HelloWorld と入力します。これで HelloWorld が画面に表示されます。便利なオプションも覚えておくと楽です。-version で javac の版を調べる、-d 出力ディレクトリを指定する、-cp や -classpath でクラスパスを設定する、-encoding で文字コードを指定する、-source, -target で言語レベルを設定する、などです。よくあるトラブルとしては、PATH が正しく設定されていない場合の javac: command not found や、クラスの実行時に ClassNotFoundError や NoClassDefFoundError などのエラーがあります。これらはファイルの場所や名前の綴り、大文字小文字の違い、クラス名とファイル名の対応を見直すと解決します。
javacの同意語
- javac
- Javaのソースファイルをクラスファイル(.class)に変換する、JDKに同梱されたコマンドライン実行ツールです。
- javacツール
- Javaコンパイラのツール呼称で、コマンドとして実行してソースをコンパイルします。
- Javaコンパイラ
- Java言語のソースコードをバイトコードに翻訳するプログラム。通常はJDKに含まれます。
- Java用コンパイラ
- Java言語専用のコンパイラで、ソースを.classファイルへ変換する役割を担います。
- JDKのコンパイラ
- Java開発キット(JDK)に同梱されるコンパイラのこと。
- Java開発キットのコンパイラ
- JDKに含まれるコンパイラの正式な表現の一つ。
- Javaソースコードコンパイラ
- Javaのソースコードをコンパイルしてバイトコード(.class)に変換する機能を持つツール。
- Javaバイトコード生成ツール
- JavaソースコードからJVMが実行できるバイトコードを生成するツールの総称。
- Javaコンパイルツール
- Javaのソースをコンパイルするためのツール群の総称。
javacの対義語・反対語
- インタプリタ
- ソースコードを事前に機械語へ翻訳せず、実行時に解釈して逐次実行する仕組み。javac の対義語として最も自然です。
- 解釈型言語
- プログラムを実行時に解釈して動作させる特徴を持つ言語カテゴリ。コンパイルを前提としない点が javac の対義といえます。
- 解釈実行
- ソースコードをその場で解釈して実行する実行方式のこと。コンパイル済みコードを前提としない点が対になる概念です。
- 実行エンジン
- プログラムを実行するための仮想マシンやエンジン。コンパイルで中間コードを生成する javac とは役割が異なります。
- 動的実行
- 事前のコンパイルを必要とせず、実行時に動的にコードを解釈して動かす実行方式。javac の対極にある考え方です。
- 直接実行
- ソースを中間コード・機械語へ翻訳せず、直接実行することを指す表現。
javacの共起語
- Java コンパイラ
- Java のソースコードをバイトコードに翻訳するツール。javac はその代表的な実装です。
- JDK
- Java 开発キット。javac などの開発ツールを含み、コンパイルには通常 JDK が必要です。
- JRE
- Java 実行環境。コンパイル後に生成されたクラスファイルを実行するためのライブラリと実行環境を提供します。
- JVM
- Java Virtual Machine。生成されたバイトコードを実行する仮想マシンです。
- バイトコード
- Java コンパイラが生成する中間表現。JVM が解釈またはJITで実行します。
- .class ファイル
- バイトコードを格納するファイル形式。1つのクラスに対応します。
- クラスパス / -classpath / -cp
- コンパイル時に参照するクラスファイルやライブラリの場所を指定する仕組みです。
- 出力先 / -d
- 生成されたクラスファイルを格納するディレクトリを指定します。
- ソースファイルのエンコーディング / -encoding
- ソースファイルの文字エンコードを指定します(例: UTF-8)。
- ソースバージョン / -source
- 対象とするJava言語仕様のバージョンを指定します(例: 1.8, 11, 17)。
- ターゲットバージョン / -target
- 生成されるバイトコードの互換性を指定します(例: 1.8, 11)。
- デバッグ情報 / -g
- デバッグ用情報を生成します(変数名・行番号など)。
- 警告・診断 / -Xlint
- 警告を有効化・無効化するオプションの集合です。-Xlint:all や -Xlint:unchecked など。
- アノテーション処理 / -processor
- アノテーションプロセッサを用いて、コンパイル時に追加処理を行います。
- アノテーションプロセッサの検索パス / -processorpath
- アノテーションプロセッサの実体を探すパスを指定します。
- アノテーション処理の概念
- ソース中のアノテーションを読み取り、コード生成や検証などを行う仕組みです。
- ブートストラップクラスパス / bootclasspath
- JVM の基本クラスの探索パスを設定します。
- 拡張ディレクトリ / extdirs
- 旧来の拡張ライブラリを指定するディレクトリの設定です。
- ソースパス / -sourcepath
- ソースファイルの探索用パスを指定します。
- モジュールパス / --module-path
- Java 9 以降のモジュールシステムでモジュールの検索パスを指定します。
- 有効化するモジュール / --add-modules
- ビルド時に有効化するモジュールを列挙します。
- モジュールの変更適用 / --patch-module
- モジュールの内容を差し替えるための設定です。
- 診断フォーマット / -Xdiags
- 診断メッセージの出力形式を指定します。
- バージョン表示 / -version
- javac のバージョン情報を表示します。
- ヘルプ / -help
- 利用可能なオプションの一覧を表示します。
- 依存ライブラリ / external libraries
- ライブラリの jar ファイルなど、クラスパス上の外部資産を指します。
javacの関連用語
- javac
- Javaソースコード(.java)をJavaバイトコード(.class)に変換する、JDKに含まれる主要なコンパイラ。
- JDK
- Java Development Kit。Javaアプリを開発するためのツール群のセットで、javacやJavadocなどを含む。
- JRE
- Java Runtime Environment。Javaプログラムを実行するための実行環境。
- JVM
- Java Virtual Machine。Javaバイトコードを実行する仮想マシン。
- Javaソースファイル
- 拡張子 .java のファイル。クラスやインターフェースの定義を含むテキストファイル。
- クラスファイル
- 拡張子 .class のバイトコードファイル。JVMで実行される。
- クラスパス
- クラスを探す場所を示すパス設定。-cp/--classpath で指定。
- モジュールパス
- モジュールシステムのモジュールを探す場所。--module-path で指定。
- モジュール
- Java 9以降のモジュールシステムの単位。依存関係と公開APIを定義する。
- module-info.java
- モジュールの依存や公開APIを宣言するファイル。
- 出力ディレクトリ (-d)
- -d <ディレクトリ> に .class ファイルの出力先を指定。
- 文字コード (-encoding)
- -encoding <文字コード> でソースファイルのエンコーディングを指定。
- ソース互換性 (-source)
- -source <バージョン> で許容するソース構文のバージョンを指定。
- クラスファイル互換性 (-target)
- -target <バージョン> で出力されるクラスファイルのバージョンを指定。
- -release
- -release <バージョン> でAPIと互換性を指定プラットフォームに合わせて設定。
- -bootclasspath
- ブートストラップクラスパスを指定する旧式の方法。
- -processor
- -processor <クラス名> アノテーションプロセッサを指定。
- -processorpath
- -processorpath <パス> アノテーションプロセッサの検索パス。
- -proc
- -proc:none など、アノテーション処理の有無を制御。
- -g
- -g または -g:lines,vars,source デバッグ情報をクラスファイルに埋め込む。
- -verbose
- -verbose コンパイル時の詳細情報を表示。
- -Xlint
- -Xlint で警告を強化・表示の詳細を制御。
- -classpath / -cp
- -classpath または -cp でクラスパスを指定。
- -J
- -J<オプション> JVMへ渡す任意のオプション。
- --enable-preview
- プレビュー機能を有効にして新機能を使えるようにする。
- --module-path
- モジュールの検索パスを指定。
- --add-modules
- 追加のモジュールを含める指定。
- JavaCompiler API (javax.tools.JavaCompiler)
- プログラムからjavacを呼び出せる標準API。
- ToolProvider.getSystemJavaCompiler()
- 現在のJDKのシステムコンパイラを取得するAPI。
- Maven / Gradle / Ant
- ビルドツール。内部で javac を呼び出してビルドを行う。
javacのおすすめ参考サイト
- いまさら聞けない「Javac」とは? - IT求人ナビ
- Javaコマンド(javacとは?)の基本を3分でわかりやすく
- いまさら聞けない「Javac」とは? - IT求人ナビ
- javacとは?Javaコンパイラの役割と基本的な使い方
- Javaのコンパイルとは?実行方法からjavacコマンドの基礎知識も紹介



















