00_環境整備

対象:C言語経験者 / 目標:VSCodeでJavaを書いて動かせるようにします


■ この授業でやること

やること確認
JDKのインストール
VSCodeのインストール・拡張機能
作業フォルダの準備
HelloWorld.java を書く
ターミナルを開く → javacjava で実行
2本目(Calculation)を同じ手順で実行
引数付きで実行(java Args Hello

■ C言語との違い(まず頭に入れる)

Javaを動かすまでの手順はC言語と少し違います。理由から理解しておきましょう。

C言語の流れ ソース(.c)
 ↓ コンパイル(gcc)
実行ファイル(.exe)
 ↓ 実行
Windows上で直接動く
Javaの流れ ソース(.java)
 ↓ コンパイル(javac)
バイトコード(.class)
 ↓ JVMが実行(java)
どのOSでも動く
Cはそのままそのコンピュータ用の命令に変換します。
JavaはJVM(仮想マシン)の命令に変換します。だからどこでも動く。
用語意味C言語で言うと
javacコンパイラ。.javaを.classに変換gcc
javaJVMで.classを実行生成した.exeを実行
.classバイトコード(中間コード).exeに相当(ただしOS専用ではない)
JVMJava仮想マシン。.classを動かすなし(Cには不要)
JDKjavac + java + 開発ツール一式gccに相当

■ HelloWorldを動かすまでの全体フロー

環境構築(STEP 1〜3)が終わったあとは、毎回この4ステップで Java を実行します。

STEP 4
.java ファイルを
作成して保存
STEP 5
フォルダを右クリックで
ターミナルを開く
STEP 6
javac
コンパイル
STEP 7
java
実行
この授業では ▶ ボタンは使わず、ターミナルから javacjava コマンドで動かします。試験(問5・問6)でも java Q5 11.25 のようにコマンドラインで実行する形式が出題されるため、最初から本物の手順に慣れておきます。

■ STEP 1:JDKのインストール

1ダウンロード

ブラウザで https://adoptium.net/ を開く

「Latest LTS Release」からダウンロード

LTS(Long Term Support)= 長期サポート版。授業・業務はこれ一択。

2インストール(重要な設定あり)

ダウンロードした .msi ファイルを実行

途中の「カスタム セットアップ」画面で以下を確認・変更:

項目設定
Add to PATH✅ 「ローカル ハード ドライブにインストール」
Set JAVA_HOME variable✅ 「ローカル ハード ドライブにすべてインストール」
ここを見落とすとコマンドプロンプトでjavaが使えなくなります

3インストール確認

コマンドプロンプトを新規で開いて(インストール前に開いていたものは閉じる)実行:

java -version
javac -version
両方バージョン番号が表示されればOK

■ STEP 2:VSCode + 拡張機能

1VSCodeのインストール

https://code.visualstudio.com/ から「Download for Windows」

インストール時「PATHへの追加」にチェックを入れること

2Java拡張機能のインストール

  1. VSCodeを起動
  2. 左サイドバーの四角アイコン(拡張機能)をクリック
  3. 検索欄に Extension Pack for Java と入力
  4. 作者が Microsoft のものをインストール
6つの拡張がまとめて入る。これでJavaの補完・実行が使えるようになります

■ STEP 3:作業フォルダの準備

1フォルダ構成

フォルダ名で番号管理します。こうするとエクスプローラーで順番に並ぶ。

java-lessons/
├── 00_HelloWorld/
│   └── HelloWorld.java
├── 01_Calculation/
│   └── Calculation.java
├── 02_xxx/
    ...
なぜ先頭に数字をつけるのか
Javaのクラス名は数字で始めることができない。
フォルダ名に番号を付けてフォルダで管理することで解決しています。

2VSCodeで開く

  1. 「ファイル → フォルダーを開く」で java-lessons フォルダを選択
  2. 「このフォルダーを信頼しますか?」→ 「はい」

■ STEP 4:HelloWorld.java を作成して保存

1ファイルを作る

  1. サイドバーの 00_HelloWorld フォルダ名にカーソルを合わせる
  2. 右側に出る 新規ファイル アイコン(📄+)をクリック
  3. ファイル名を HelloWorld.java と入力 → Enter
HelloWorld.java — java-lessons
 JAVA-LESSONS
 00_HelloWorld
 HelloWorld.java
Javaの絶対ルール:ファイル名とクラス名は完全一致
(大文字小文字も含む)
HelloWorld.java の中の public class は必ず HelloWorld

2コードを入力して保存

VSCodeが自動で内容を書いてくることがあります。全部消して以下だけを入力します。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Ctrl+S で保存。エディタのタブ名の横に表示されていた (未保存マーク)が × に変わったら保存OK。

● C言語との構文比較

C言語(hello.c)
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
Java(HelloWorld.java)
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
C言語Java違い
#include不要(基本は自動)よく使うものは最初から使える
int main(void)public static void main(String[] args)クラスの中に書く。argsはコマンドライン引数
printf("...\n")System.out.println("...")printlnは自動で改行されます
return 0;不要voidなので返り値なし

■ STEP 5:ターミナルを開く

作業フォルダ(00_HelloWorld)を右クリックして「統合ターミナルで開く」 を選ぶ。これでターミナルが「今いる場所=そのフォルダ」の状態で開けます。

1右クリックメニュー

  1. サイドバーの 00_HelloWorld フォルダ名を右クリック
  2. メニューから「統合ターミナルで開く」を選択
  3. 画面下にターミナルが出現する
新しいファイル...
新しいフォルダー...
エクスプローラーで表示
統合ターミナルで開く
検索でフォルダーを選択
フォルダーのコピー
名前の変更...F2
削除Del
ファイルではなくフォルダを右クリックすること。ファイル(HelloWorld.java)を右クリックすると別のメニューが出て、「統合ターミナルで開く」が表示されません。
ターミナルを閉じてしまったら
Ctrl+@(日本語キーボード)または Ctrl+`(英語キーボード)でいつでも開き直せる。ただし、その場合は cd コマンドで作業フォルダに移動する必要があります。

■ STEP 6・STEP 7:javac でコンパイル → java で実行

Javaは「人間が書いたコード」をそのまま動かせない。一度バイトコードに変換してから実行する 2段階です。

HelloWorld.java
ソースコード
(人間が書く)
javac
HelloWorld.class
バイトコード
(JVM用)
java
実行結果
画面に出力
される

1ターミナルで2つのコマンドを実行

STEP 5 で開いたターミナルで、次の2行を順番に入力します。

TERMINAL — PowerShell 00_HelloWorld
PS C:\java\java-lessons\00_HelloWorld> javac HelloWorld.java ← ① コンパイル
PS C:\java\java-lessons\00_HelloWorld> java HelloWorld ← ② 実行
Hello, World!
PS C:\java\java-lessons\00_HelloWorld>
Hello, World! と表示されれば成功

22つのコマンドの違い

javac HelloWorld.javajava HelloWorld
役割ソースをバイトコードに変換バイトコードを JVM 上で実行
入力.java を付ける拡張子を付けない(クラス名のみ)
出力HelloWorld.class が生成されるSystem.out.println の内容が表示される
成功時の表示無言(何も表示されない)プログラムの出力
必ず守ること:① javac には .java を付ける、② java には .class も .java も付けない。これを覚えるだけでミスの大半は防げる。

確認しましょう

左のエクスプローラーを見てみましょう。00_HelloWorld フォルダに何が増えているか?

確認します

HelloWorld.class が生成されているはず。

これがバイトコード(.classファイル)。javac が作った。java コマンドはこのファイルを JVM で実行している。

C言語でいう .exe に相当するが、OS専用ではなくどのOSのJVMでも動く。


■ STEP 8:2本目のプログラム

同じ流れで Calculation も動かしてみましょう。

1ファイルを作る

01_Calculation フォルダに Calculation.java を作成して、次のコードを書く。

public class Calculation {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;

        System.out.println("足し算: " + (a + b));
        System.out.println("引き算: " + (a - b));
        System.out.println("掛け算: " + (a * b));
        System.out.println("割り算: " + (a / b)); // 整数除算(小数切り捨て)
        System.out.println("あまり: " + (a % b));
    }
}

2ターミナルで実行

01_Calculation フォルダを右クリック →「統合ターミナルで開く」→ 次の2コマンドを実行。

TERMINAL — PowerShell 01_Calculation
PS ..\01_Calculation> javac Calculation.java
PS ..\01_Calculation> java Calculation
足し算: 13
引き算: 7
掛け算: 30
割り算: 3
あまり: 1

試してみましょう

a / b の結果はなぜ 3.333... ではなく 3 なのか?

答えを見る

int(整数型)同士の割り算は、小数点以下が切り捨てられます(整数除算)。

小数が必要な場合は double 型を使います。

double a = 10;
double b = 3;
System.out.println(a / b); // → 3.3333333333333335

これはC言語と同じルール。


■ STEP 9:コマンドライン引数(試験頻出)

試験の後半(問5・問6)では、プログラムに引数を渡して実行する問題が頻出します。java クラス名 の後ろにスペース区切りで値を書くと、プログラムの args 配列で受け取れる。

1引数を受け取るプログラム

02_Args フォルダに Args.java を作成。

public class Args {
    public static void main(String[] args) {
        System.out.println("引数の数: " + args.length);
        System.out.println("1番目の引数: " + args[0]);
    }
}

2引数を付けてターミナルから実行

TERMINAL — PowerShell 02_Args
PS ..\02_Args> javac Args.java
PS ..\02_Args> java Args Hello ← Hello が引数
引数の数: 1
1番目の引数: Hello
試験では java Q5 11.25 のように引数付きで実行する問題が出る。
この単元では「引数の渡し方」と「args[0] で受け取る」を覚えるだけでOK。引数の数値への変換(Integer.parseIntDouble.parseDouble)は後の単元で学びます。

■ よくあるエラーと対処

● コマンドの書き方ミス(最頻出)

書き方 結果 原因
javac HelloWorld.java OK 正しい
javac HelloWorld NG .java の拡張子忘れ
java HelloWorld OK 正しい
java HelloWorld.class NG .class を付けてはいけない
java helloworld NG 大文字小文字が違う
別フォルダで実行 NG .class が見つからない/cd で移動が必要

● その他のエラー

エラー内容原因対処
'javac' は内部コマンドまたは外部コマンド...として認識されていませんJDKのPATH未設定PCを再起動、または JDK のインストール時に「Add to PATH」を有効にして再インストール
class XXX is public, should be declared in a file named XXX.javaファイル名とクラス名の不一致両方を同じ名前(大文字小文字も)に統一
エラー: メイン・クラスXXXを検出およびロードできませんでしたjavac せずにいきなり java を実行している/別フォルダから実行している先に javac。同じフォルダにいるか dir(または ls)で確認
package xxx does not exist のような表示VSCodeが自動で先頭に package ... 行を追加した1行目の package ...; を削除して保存し直す
コードを直したのにエラーが消えない保存忘れ/VSCodeの Language Server のキャッシュ不整合Ctrl+S で保存を確認。それでも直らない場合は Ctrl+Shift+P →「Java: Clean Java Language Server Workspace」を実行
💡 エラーが出たら確認する3点
① ファイル名とクラス名は一致しているか/② コマンドを正しい綴り・拡張子で打ったか/③ ターミナルのカレントディレクトリは作業フォルダか(pwddir で確認)

■ 理解度チェック問題

問題00-1

javacjava の説明として正しいものはどれか。

解説を表示 正解:ア
javac.java ソースを .class(バイトコード)に変換するコンパイラ。java は JVM 上でその .class を実行するコマンド。C言語の gcc に相当するのが javac、生成した実行ファイルの実行に相当するのが java。

問題00-2

.class ファイルの説明として最も適切なものはどれか。

解説を表示 正解:イ
.class ファイルは javac によって生成されるバイトコード(中間コード)。OS 専用の実行ファイルではなく、どの OS の JVM でも実行可能。これが「Write Once, Run Anywhere」の仕組み。

問題00-3

Java のファイル名とクラス名の関係として正しいものはどれか。

解説を表示 正解:ウ
HelloWorld.java の中の public クラスは必ず HelloWorld である必要があります。helloworld のような大文字小文字違いもエラー。これを守らないと class XXX is public, should be declared in a file named XXX.java のエラーが出ます。

問題00-4

Calculation のコードで int a = 10; int b = 3; として a / b を出力した結果として正しいものはどれか。

解説を表示 正解:エ
int 同士の割り算は整数除算になり、小数点以下は切り捨てられます。10 ÷ 3 = 3.333... → 3。小数を得たい場合は片方を double にする必要があります(例:10 / 3.0)。

問題00-5

Args.java を java Args Hello として実行したとき、args[0] の中身として正しいものはどれか。

解説を表示 正解:イ
java クラス名 引数1 引数2 ... の形式で実行したとき、args[0] には最初の引数が文字列として入る。クラス名は args には含まれない(ここがC言語の argv[0] がプログラム名なのと異なる)。試験問5・問6ではこの仕様が頻出。

■ まとめ

確認事項確認
java -versionjavac -version がコマンドラインで表示される
VSCodeにExtension Pack for Javaが入っている
フォルダを右クリックで「統合ターミナルで開く」ができる
javac HelloWorld.javaHelloWorld.class が生成された
java HelloWorld で「Hello, World!」が表示された
Calculation も同じ手順で実行できた
java Args Hello で引数付き実行ができた
全部できたら次の単元へ進もう

この単元以降の実習も、すべて「ファイル作成 → 保存 → ターミナルで javacjava」の流れで進めます。