Javaの基礎と現代Java入門~オブジェクト指向からJava 21まで~
こんにちは。開発二部第二課の福原です。
「Javaって昔からある言語でしょ?」
そんなイメージを持っている方も多いかもしれません。しかしJavaは約30年にわたって進化を続け、現在でも多くの企業システムやWebサービスで利用されている人気のプログラミング言語です。
今回は社内勉強会の内容をもとに、
✅ Javaとは何か
✅ オブジェクト指向の基本
✅ 現代Javaの便利な機能
を分かりやすく紹介します。
🚀 Javaってどんな言語?
Javaは1995年に登場したプログラミング言語です。現在はOracle社によって開発・管理されています。
主な特徴
- 🎯 オブジェクト指向
- 🌎 マルチプラットフォーム対応
- 🔧 高い保守性
- 📚 豊富なライブラリ
- 🏢 長期運用に強い
業務システムや金融システムなど、「安定性が求められる現場」で特に多く採用されています。
Stack Overflow 2025でJavaの利用率は29.4%(7位)
https://survey.stackoverflow.co/2025/technology/
GitHubのOctoverse 2025ではJavaの前年同期比成長率は20.73%(4位)
https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/#the-top-programming-languages-of-2025-typescript-jumps-to-1-while-python-takes-2
💡 なぜJavaは今も選ばれるのか?
新しい言語が次々と登場する中で、Javaはなぜ使われ続けているのでしょうか?
✅ 安定性が高い
Javaは後方互換性を重視しています。
そのため、「10年以上前に作られたシステムが今でも動いている」 というケースも珍しくありません。
例えば、Java 8 、Java 11 で開発したシステムが
適切な検証を行えば新しいJava環境でも動作するケースが多くあります。
✅ 学習しやすい
Javaは利用者が多いため、
- 📖 書籍
- 🎥 学習サイト
- 📝 技術ブログ
- 💬 コミュニティ
などの情報が豊富です。
javaは30年近い歴史があり、学習環境が非常に充実しているため
初心者が困ったときに調べやすく、解決策を見つけやすいです。
また企業システム開発で広く利用されているため、多くのエンジニアが経験を持っています。
(世界のJava開発者数はおよそ1,000万人前後〜2,000万人規模)
そのため最大級のコミュニティを持つ言語の一つになります。
https://www.jetbrains.com/ja-jp/lp/devecosystem-data-playground/
✅ エコシステムが充実
Javaには長い歴史の中で育まれた強力なツールがあります。
| ツール | 用途 |
|---|---|
| Spring Boot | Webアプリ開発・REST API開発 |
| MyBatis | データベースアクセス |
| JUnit | テスト自動化 |
| Maven | ライブラリ管理 |
| Gradle | ビルド自動化 |
これらの存在がJava開発を支えています。
🏗️ オブジェクト指向とは?
Javaを学ぶうえで欠かせない考え方がオブジェクト指向です。
簡単に言うと、現実世界のモノをプログラム上で表現する考え方 です。
例えば「車」を考えると以下のような形になります。
┌───────────────┐
│ 車 │
├───────────────┤
│ 🚗 色:赤 │
│ 🚗 速度:60km │
├───────────────┤
│ ▶️ 走る() │
│ ⛔ 止まる() │
└───────────────┘
現実世界の「モノ」を、
- 属性(データ)
- 振る舞い(処理)
として表現する考え方がオブジェクト指向です。
サンプルコード
class Car {
String color; // 属性:色
// 処理:走る
void run() {
System.out.println("走る");
}
}
利用するときは、
Car car = new Car();
car.run();
のようにオブジェクトを生成します。
🎓 オブジェクト指向の3大要素
Javaでは次の3つが特に重要です。
🔒 カプセル化
データを保護する仕組みです。
ユーザー
↓
┌────────────────────┐
│ User │
├────────────────────┤
│ private age │
└────────────────────┘
↑ ↑
getAge() setAge()
直接変更は禁止。
メリット
- ✅ 不正な値を防ぐ
- ✅ 保守しやすい
🧬 継承
共通機能を再利用する仕組みです。
Animal
│
┌──────┴──────┐
│ │
Dog Cat
Animal
└─ eat()
Dog
└─ eat() ← 引き継ぐ
Cat
└─ eat() ← 引き継ぐ
メリット
- ✅ コードの重複削減
- ✅ 再利用性向上
🎭 ポリモーフィズム
同じ操作でも異なる動作を実現できます。
Animal animal
sound()
│
┌─────┴─────┐
│ │
Dog Cat
ワン! ニャー!
呼び出し側は同じコードでOK。
animal.sound();
実体によって動作が変わります。
⚡ Javaは進化し続けている
実はJavaは最近かなりモダンになっています。
📝 Lambda(ラムダ式)
従来
list.forEach(item -> {
System.out.println(item);
});
現在
list.forEach(System.out::println);
メリット
- ✨ 記述量が減る
- ✨ 読みやすい
🌊 Stream API
データ処理を宣言的に書けます。
List<String> result =
names.stream()
.filter(name -> name.startsWith("T"))
.toList();
メリット
- 📖 コードの意図が伝わりやすい
- 🔍 可読性向上
🛡️ Optional
Java開発者を悩ませる「NullPointerException」。
Optionalを使うことで安全に扱えます。
Optional<User> user = findUser();
String name =
user.map(User::getName)
.orElse("unknown");
メリット
- ✅ Nullを明示的に扱える
- ✅ バグ防止につながる
🎯 Pattern Matching
Java 16から利用できる便利機能です。
従来
if(obj instanceof String){
String s = (String)obj;
}
現在
if(obj instanceof String s){
System.out.println(s);
}
メリット
- ✨ キャスト不要
- ✨ コードがスッキリ
🔥 Java 21のswitch Pattern Matching
Java 21 ではswitch文もさらに進化しました。
return switch (obj) {
case String s -> "文字列";
case Integer i -> "整数";
case null -> "null";
default -> "その他";
};
メリット
- ✅ 条件分岐が整理される
- ✅ 型ごとの処理が分かりやすい
🌈 Javaを学ぶとできること
Javaを学ぶとさまざまな開発に挑戦できます。
- 🌐 Webアプリ開発
- 🔌 API開発
- 📦 バッチ処理
- ☁️ クラウド開発
- 🏗️ マイクロサービス開発
- 🎉 まとめ
Javaが長年愛される理由は、
✅ 安定性が高い
✅ 学習環境が充実している
✅ エコシステムが成熟している
さらに近年は、
- Lambda
- Stream API
- Optional
- Pattern Matching
- switch Pattern Matching
といったモダンな機能が追加され、より読みやすく保守しやすいコードを書けるようになっています。
Javaは「昔からある言語」ではなく、🚀 今も進化し続ける現役のプログラミング言語 です。
これからJavaを学び始める方も、久しぶりに触る方も、ぜひ現代Javaの便利さを体感してみてください!