はじめての Java プログラム

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • 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 の代表的な特徴は次の通りです。

  • 強い型付け — 変数や戻り値に String int boolean のような型を必ず宣言する
  • オブジェクト指向 — すべてのコードが class の中に入る
  • JVM 上で動く.java ファイルをコンパイルして .class (bytecode) にし、JVM がそれを各 OS で実行する
  • ガベージコレクション — メモリ管理を自動でやってくれる
  • 豊富な標準ライブラリjava.util java.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 の上で実行されます。

diagram (will load when visible)

図の流れを順序リストで書き直すと、次の通りです。

  1. ソースコード Solution.java を書く
  2. javac でコンパイルしてバイトコード Solution.class を生成する
  3. JVM がバイトコードを各 OS 用に実行する
  4. メソッドが呼び出されて "Hello, Java!" が返る
  5. 標準出力やテストランナーに結果が渡る

この「コンパイル → JVM 実行」の 2 段構えこそが、Java の Write Once, Run Anywhere を支える仕組みです。chotdekiru の Java Playground では、この流れがブラウザ越しのサーバー上で自動的に動きます。

メソッド宣言の暗号を読み解く

public static String helloWorld() という呪文のような行を、もう少し細かく分解します。

  • public — どこからでも呼べる、という公開設定 (アクセス修飾子)
  • static — クラスをインスタンス化しなくてもそのまま呼べる、という意味
  • String — このメソッドが返す値の型。文字列なら String、整数なら int
  • helloWorld — メソッドの名前。先頭は小文字、続く単語の頭は大文字 (キャメルケース)
  • () — 引数を受け取るカッコ。今回は引数なしなので空っぽ

Java では変数も戻り値も「型」を先に書く文化があります。String name int age のように、まず「何が入るか」を宣言してから名前を書く順番に慣れていきましょう。

もう少し別の例も見てみましょう。たとえば 2 つの数を足すメソッドはこんな形になります。

Java

public class Calculator { public static int add(int a, int b) { return a + b; } }

戻り値の型は int、引数は int aint 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 は大文字小文字を厳密に区別するので、Stringstring を打ち間違えるだけでエラーになります。

エラーメッセージは敵ではなく味方です。「; expected」「cannot find symbol」のような英語が並んだら、まず落ち着いてエラーが指している行番号を見てください。8 割はそこを直すだけで動きます。

この章のポイント

ここまでの要点 Java は class の中にメソッドを書く強い型付け言語。文字列は "..." (ダブルクォート)、文末は ;、戻り値の型と return の値の型を一致させる。

やってみよう

それでは実際にこのレッスンの課題に挑戦してみましょう。

  1. 右側のエディタを開く
  2. public static String helloWorld() の中に return "Hello, Java!"; を書く
  3. 「実行」ボタンを押して、テストが緑になることを確認する

最初は写経でかまいません。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 つができることを確認しましょう。

  1. Hello, Java の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. Hello, Java とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. クラス名は Solution、メソッド名は helloWorld にすること
  2. メソッドの戻り値の型は String で、引数はなし
  3. 文字列 "Hello, Java!"return で返すこと (カンマと半角スペース、末尾の ! を正確に)

入出力例

test-cases.txt

helloWorld()"Hello, Java!"

ヒント

main.java
main.java
学習モード

メモ

はじめての Java プログラム

⌘S で保存