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() |
コンソール出力 |
重要ポイント
- Javaはコンパイル言語(ソース→バイトコード→JVM実行)
- ファイル名はクラス名と一致させる
mainメソッドがプログラムの入口jshellで対話的にコードを試せる
練習問題
問題1: 基本
自分の名前、年齢、好きな食べ物を表示するプログラムを作成してください。
問題2: 応用
printfを使って、商品名と価格を「商品名: ¥1,000」のようにフォーマットして表示するプログラムを作成してください。
チャレンジ問題
コマンドライン引数(args)を使って、java Greeting 太郎 と実行すると「こんにちは、太郎さん!」と表示されるプログラムを作成してください。
参考リンク
次回予告: Day 2では「変数とデータ型」について学びます。Javaの型システムを理解しましょう。