10日で覚えるJavaDay 1: Javaの世界へようこそ
books.chapter 110日で覚えるJava

Day 1: Javaの世界へようこそ

今日学ぶこと

  • Javaとは何か
  • 開発環境のセットアップ
  • 最初のプログラム(Hello World)
  • プログラムの構造
  • コメントの書き方

Javaとは

Javaは1995年にSun Microsystems(現Oracle)が開発したオブジェクト指向プログラミング言語です。「Write Once, Run Anywhere(一度書けば、どこでも動く)」をコンセプトに設計されました。

flowchart LR
    subgraph Java["Javaの特徴"]
        OOP["オブジェクト指向"]
        Platform["プラットフォーム非依存"]
        GC["自動メモリ管理"]
        Typed["静的型付け"]
    end
    style OOP fill:#3b82f6,color:#fff
    style Platform fill:#22c55e,color:#fff
    style GC fill:#f59e0b,color:#fff
    style Typed fill:#8b5cf6,color:#fff

Javaの仕組み

Javaのソースコードは、直接マシンコードに変換されるのではなく、バイトコードという中間形式にコンパイルされます。このバイトコードを**JVM(Java Virtual Machine)**が実行します。

flowchart LR
    Source[".javaファイル<br>ソースコード"] -->|"javac<br>コンパイル"| Bytecode[".classファイル<br>バイトコード"]
    Bytecode -->|"java<br>実行"| JVM["JVM<br>Java仮想マシン"]
    JVM --> OS["OS<br>Windows / macOS / Linux"]
    style Source fill:#3b82f6,color:#fff
    style Bytecode fill:#8b5cf6,color:#fff
    style JVM fill:#22c55e,color:#fff
    style OS fill:#f59e0b,color:#fff
用語 説明
JDK Java Development Kit。開発に必要なツール一式
JRE Java Runtime Environment。実行環境
JVM Java Virtual Machine。バイトコードを実行する仮想マシン
javac Javaコンパイラ
java Java実行コマンド

開発環境のセットアップ

JDKのインストール

最新のLTS(Long Term Support)バージョンをインストールします。

# macOS(Homebrew)
brew install openjdk@21

# Ubuntu / Debian
sudo apt install openjdk-21-jdk

# Windows(winget)
winget install EclipseAdoptium.Temurin.21.JDK

バージョン確認

java --version
javac --version

出力例:

openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13)
OpenJDK 64-Bit Server VM (build 21.0.2+13, mixed mode)

最初のプログラム

Hello World

HelloWorld.java というファイルを作成します。

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

コンパイルと実行

# コンパイル
javac HelloWorld.java

# 実行
java HelloWorld

出力:

Hello, World!

重要: ファイル名はクラス名と完全に一致する必要があります。HelloWorld クラスなら HelloWorld.java です。


プログラムの構造

// 1. クラス宣言
public class HelloWorld {

    // 2. mainメソッド(エントリーポイント)
    public static void main(String[] args) {

        // 3. 文(ステートメント)
        System.out.println("Hello, World!");
    }
}
flowchart TB
    subgraph Structure["Javaプログラムの構造"]
        Class["クラス<br>public class MyApp"]
        Method["mainメソッド<br>public static void main(String[] args)"]
        Statement["文(ステートメント)<br>System.out.println(...)"]
    end
    Class --> Method --> Statement
    style Class fill:#3b82f6,color:#fff
    style Method fill:#22c55e,color:#fff
    style Statement fill:#f59e0b,color:#fff
要素 説明
public アクセス修飾子(どこからでもアクセス可能)
class クラスの宣言
static インスタンスなしで呼び出せる
void 戻り値がない
main プログラムのエントリーポイント
String[] args コマンドライン引数

出力メソッド

public class OutputDemo {
    public static void main(String[] args) {
        // 改行あり
        System.out.println("Hello");
        System.out.println("World");

        // 改行なし
        System.out.print("Hello ");
        System.out.print("World");
        System.out.println(); // 改行だけ

        // フォーマット出力
        String name = "Java";
        int version = 21;
        System.out.printf("Welcome to %s %d!%n", name, version);
    }
}
メソッド 改行 用途
println() あり 通常の出力
print() なし 連続出力
printf() なし フォーマット付き出力

printfのフォーマット指定子

指定子
%s 文字列 "Hello"
%d 整数 42
%f 浮動小数点 3.14
%.2f 小数点2桁 3.14
%n 改行 -

コメント

public class CommentDemo {
    public static void main(String[] args) {
        // 1行コメント

        /*
         * 複数行コメント
         * 2行目
         */

        /**
         * Javadocコメント
         * ドキュメント生成に使われる
         * @param args コマンドライン引数
         */

        System.out.println("コメントのデモ");
    }
}
コメント 構文 用途
1行コメント // ... 簡単な説明
複数行コメント /* ... */ 長い説明
Javadoc /** ... */ APIドキュメント

Java 21+の便利な機能

JShell(対話型実行環境)

$ jshell
|  JShellへようこそ -- バージョン21
jshell> System.out.println("Hello!")
Hello!

jshell> 2 + 3
$1 ==> 5

jshell> /exit

おすすめ: jshellを使えば、ファイルを作らずにJavaのコードを試せます。学習中に非常に便利です。

ソースファイルの直接実行(Java 11+)

# コンパイルなしで直接実行
java HelloWorld.java

Java 11以降では、単一ソースファイルをjavacなしで直接実行できます。


実践: 自己紹介プログラム

public class SelfIntroduction {
    public static void main(String[] args) {
        String name = "太郎";
        int age = 25;
        String hobby = "プログラミング";

        System.out.println("=== 自己紹介 ===");
        System.out.printf("名前: %s%n", name);
        System.out.printf("年齢: %d歳%n", age);
        System.out.printf("趣味: %s%n", hobby);
        System.out.println("================");
    }
}

出力:

=== 自己紹介 ===
名前: 太郎
年齢: 25歳
趣味: プログラミング
================

まとめ

概念 説明
Java プラットフォーム非依存のオブジェクト指向言語
JDK 開発ツールキット(コンパイラ含む)
JVM バイトコードを実行する仮想マシン
javac ソースコードをコンパイル
java プログラムを実行
main メソッド プログラムのエントリーポイント
System.out.println() コンソール出力

重要ポイント

  1. Javaはコンパイル言語(ソース→バイトコード→JVM実行)
  2. ファイル名はクラス名と一致させる
  3. mainメソッドがプログラムの入口
  4. jshell対話的にコードを試せる

練習問題

問題1: 基本

自分の名前、年齢、好きな食べ物を表示するプログラムを作成してください。

問題2: 応用

printfを使って、商品名と価格を「商品名: ¥1,000」のようにフォーマットして表示するプログラムを作成してください。

チャレンジ問題

コマンドライン引数(args)を使って、java Greeting 太郎 と実行すると「こんにちは、太郎さん!」と表示されるプログラムを作成してください。


参考リンク


次回予告: Day 2では「変数とデータ型」について学びます。Javaの型システムを理解しましょう。