javacとは?初心者が知っておく基礎と使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
javacとは?初心者が知っておく基礎と使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16620viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2981viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1211viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1187viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1067viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1056viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1044viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
991viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
877viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
877viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
823viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
821viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
818viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
760viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
741viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
717viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
637viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
619viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
615viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
550viws

新着記事

インターネット・コンピュータの関連記事