はじめての Java プログラム
このレッスンで分かること
- Java は
classの中にコードを書く、強い型付けの言語ですpublic static String helloWorld() { return "Hello, Java!"; }が最小の答え- JavaScript とは別物 (名前が似ているだけ)
はじめての Java プログラム とは
Java の世界へようこそ。最初のメソッドを書いて、文字列 Hello, Java! を返してみよう。
Java の世界へようこそ
Java は 1995 年に登場した、世界で最も広く使われているプログラミング言語のひとつです。当時は Sun Microsystems という会社が開発し、その後 Oracle が買収して現在に至ります。Android アプリ、Web のバックエンド、銀行や保険の業務システム、Minecraft のような大型ゲームまで、本当にあらゆる場所で動いています。
Java の合言葉は
Write Once, Run Anywhereです。一度書いたコードは、WindowsでもmacOSでもLinuxでも、JVMさえあれば同じように動きます。これは 1990 年代当時としては革命的なアイデアで、企業システムが Java を選ぶ大きな理由になりました。
もうひとつ覚えておきたいのは、Java と JavaScript はまったくの別物だということです。名前は似ていますが、設計思想も使われる場所も違います。Java は強い型付け (statically typed) と JVM 上で動くコンパイル言語、JavaScript はブラウザ上で動く動的な言語です。「マグロとマグロ寿司くらい違う」と冗談で言われるほど別物だと覚えてください。
初心者がよく勘違いするのが「Java の本を読めば JavaScript もわかる」というもの。残念ながらそんなことはありません。両方とも素晴らしい言語ですが、別の言語として学ぶ必要があります。
Java の特徴
Java の代表的な特徴は次の通りです。
- 強い型付け — 変数や戻り値に
Stringintbooleanのような型を必ず宣言する - オブジェクト指向 — すべてのコードが
classの中に入る - JVM 上で動く —
.javaファイルをコンパイルして.class(bytecode) にし、JVMがそれを各 OS で実行する - ガベージコレクション — メモリ管理を自動でやってくれる
- 豊富な標準ライブラリ —
java.utiljava.ioなどすぐ使える便利クラスが大量にある
| 言語 | 型付け | 実行方式 | 主な用途 |
|---|---|---|---|
| Java | 静的 (強い) | JVM 上 (バイトコード) | 業務システム、Android |
| JavaScript | 動的 | JS エンジンで直接 | ブラウザ、Node.js |
| Python | 動的 | インタプリタ | データ分析、AI |
型を最初に書かされるのは最初は面倒に感じますが、慣れると「ここに何が入ってくるか一目でわかる」という安心感になります。大規模なシステムで Java が選ばれ続けているのは、この型の安全さが大きな理由です。
Java コードの基本の形
まずは最初に書くコードを見てみましょう。
Java
public class Solution {
public static String helloWorld() {
return "Hello, Java!";
}
}たった 5 行ですが、Java のエッセンスが詰まっています。順番に分解していきましょう。
public class Solution { ... }—Solutionという名前のクラスを定義する箱。Java では必ずclassの中にコードを書くpublic static String helloWorld()— クラスの中に作るメソッドの宣言return "Hello, Java!";— 呼び出した人にこの文字列を返す
ファイル名 (Solution.java) とクラス名 (Solution) は基本的に揃えるルールがありますが、chotdekiru のエディタは中で自動的に面倒を見てくれます。
ここで、書いた Java コードが実際に動くまでの流れを図で確認しておきましょう。書いたソースコードはそのままでは動かず、いったんバイトコードに変換されてから JVM の上で実行されます。
図の流れを順序リストで書き直すと、次の通りです。
- ソースコード
Solution.javaを書く javacでコンパイルしてバイトコードSolution.classを生成する- JVM がバイトコードを各 OS 用に実行する
- メソッドが呼び出されて
"Hello, Java!"が返る - 標準出力やテストランナーに結果が渡る
この「コンパイル → JVM 実行」の 2 段構えこそが、Java の Write Once, Run Anywhere を支える仕組みです。chotdekiru の Java Playground では、この流れがブラウザ越しのサーバー上で自動的に動きます。
メソッド宣言の暗号を読み解く
public static String helloWorld() という呪文のような行を、もう少し細かく分解します。
public— どこからでも呼べる、という公開設定 (アクセス修飾子)static— クラスをインスタンス化しなくてもそのまま呼べる、という意味String— このメソッドが返す値の型。文字列ならString、整数ならinthelloWorld— メソッドの名前。先頭は小文字、続く単語の頭は大文字 (キャメルケース)()— 引数を受け取るカッコ。今回は引数なしなので空っぽ
Java では変数も戻り値も「型」を先に書く文化があります。
String nameint ageのように、まず「何が入るか」を宣言してから名前を書く順番に慣れていきましょう。
もう少し別の例も見てみましょう。たとえば 2 つの数を足すメソッドはこんな形になります。
Java
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
}戻り値の型は int、引数は int a と int b の 2 つ、本体は return a + b; です。「型 名前」の順番、最後に ; で締めるルールが見えてきましたか?
よくある間違い
最初に Java を触ると、ほぼ全員が同じ失敗をします。代表的なものを 3 つ紹介します。
- 文末の
;を忘れる — Java はreturn "Hello, Java!";のように、文の終わりに必ずセミコロンが要ります。これを忘れるとコンパイラに怒られます - ダブルクォートとシングルクォートの混同 — 文字列は
"Hello"のように 必ずダブルクォート で囲みます。'Hello'と書くと「文字 1 個」の型 (char) になってしまい、コンパイルエラーです returnを忘れる — 戻り値の型をStringと書いたのにreturnを書かないと「missing return statement」と怒られます。戻り値があるメソッドは必ずreturnで締めましょう
もうひとつ、地味だけど多いミスが大文字小文字です。String は大文字 S、string は小文字で別物として扱われます。Java は大文字小文字を厳密に区別するので、String と string を打ち間違えるだけでエラーになります。
エラーメッセージは敵ではなく味方です。「
;expected」「cannot find symbol」のような英語が並んだら、まず落ち着いてエラーが指している行番号を見てください。8 割はそこを直すだけで動きます。
ここまでの要点
Java は class の中にメソッドを書く強い型付け言語。文字列は "..." (ダブルクォート)、文末は ;、戻り値の型と return の値の型を一致させる。
やってみよう
それでは実際にこのレッスンの課題に挑戦してみましょう。
- 右側のエディタを開く
public static String helloWorld()の中にreturn "Hello, Java!";を書く- 「実行」ボタンを押して、テストが緑になることを確認する
最初は写経でかまいません。Hello, Java! の , の後ろの半角スペース、最後の !、return の後ろの空白、行末の ; まで、文字を一つひとつ確かめながら入力してみてください。コンパイラはとても厳密で、Hello,Java! (スペースなし) や Hello Java! (カンマなし) では別の文字列として扱われ、テストは fail します。
慣れてきたら、Hello, Java! の代わりに Hello, World! を返してみたり、自分の名前を入れてみたり、自由に書き換えて試してみましょう。テストは特定の文字列を期待しているので fail しますが、エラー画面の読み方の練習にもなります。
小さなプログラムですが、これがあなたが書く最初の Java コードです。ここから先のレッスンで、変数、計算、条件分岐、繰り返し、クラスとオブジェクトと、少しずつ世界が広がっていきます。一緒に学んでいきましょう。
よくある質問
Q. Java と他言語の文法はどう違いますか?
A. Java は静的型付けで、変数宣言時に型を明示します(int x = 0;)。中括弧でブロックを表し、文末にセミコロンが必要です。Python の動的型付けや JavaScript の柔軟さに慣れていると最初は窮屈ですが、コンパイル時にバグが発見できる安全性がメリットです。
Q. コードが動かないときに最初に見るべき場所は?
A. コンパイルエラーは行番号とエラー種別(cannot find symbol、incompatible types など)が表示されます。実行時例外はスタックトレースの最初の at ... が原因行です。IDE(IntelliJ / VS Code)の警告も丁寧に潰すと、半分のバグは未然に防げます。
Q. Java の習得後に学ぶべき技術は何ですか?
A. 基本構文を抑えたら java-intermediate(コレクション / ジェネリクス / Stream / 例外)に進み、Spring Boot や Web 開発に展開するのが王道です。クラウド時代は Kotlin / Scala への展開も視野に入りますが、まずは Java 標準を固めるのが効率的です。
次のレッスン
次は 複数行の出力 で、Java の世界へようこそ を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- Hello, Java の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. Hello, Java とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- クラス名は
Solution、メソッド名はhelloWorldにすること - メソッドの戻り値の型は
Stringで、引数はなし - 文字列
"Hello, Java!"をreturnで返すこと (カンマと半角スペース、末尾の ! を正確に)
入出力例
test-cases.txt
helloWorld() → "Hello, Java!"