Java (1995年)(ジャバ)
Javaは1995年Sun Microsystems James Gosling が開発したオブジェクト指向プログラミング言語で「Write Once Run Anywhere」(WORA・JVM 上での移植性) ・Garbage Collection・スタックベース仮想機・後Spring/Hadoop/Android (2008年)・現代エンタープライズシステムの中核となった言語。
Java (1995年)
概要
Javaは1995年5月Sun Microsystems James Gosling (1955-・カナダ出身・後Oracle Sun 買収 2010年で退社) が開発したオブジェクト指向プログラミング言語で「Write Once Run Anywhere」(WORA・JVM 上での移植性・1980-1990年代 のC++ 移植問題解決) ・Garbage Collection (Smalltalk Lisp 由来) ・スタックベース仮想機 (Java Virtual Machine・JVM) ・「Coffee」コードネーム (後 Java は James Gosling のコーヒー由来) ・C++ 文法ベース (ポインタ廃止・Operator Overloading 廃止で安全化) ・Multi-Threading 標準 (Thread/Runnable・後Concurrency Utility java.util.concurrent 1.5)・後Spring (2003年・現代企業システム標準) /Hibernate (2001年・ORM) /Hadoop (2006年・Big Data・後Spark 2014年)/Android (2008年Dalvik VM 2014年ART) ・現代エンタープライズシステムの中核となった言語。Oracle JDK/OpenJDK で継続改良・Java 23 (2024年9月) 最新。
主な特徴・仕組み
- 発表: 1995年5月23日Sun Microsystems
- コードネーム: Oak (1991年・Java 元代名は James Gosling のコーヒー由来)
- 言語パラダイム: OOP (純粋ではない・プリミティブ型あり) ・後関数型機能 (Lambda Java 8 2014年)
- 型付け: 静的型付け (Strong)
- コンパイル: ソース→Bytecode (JVM 用) →ネイティブ実行 (JIT コンパイル・HotSpot VM 1999年)
- GC: Garbage Collection 標準 (Concurrent Mark-Sweep・G1 (2009年・現代主流) ・ZGC (2018年・低レイテンシ))
- C++ からの簡素化: ポインタ廃止・Multiple Inheritance 廃止 (Interface のみ) ・Operator Overloading 廃止
- JVM: HotSpot (1999年Sun)・Oracle JRockit・IBM J9 (現Eclipse OpenJ9)・Azul Zulu・Amazon Corretto
- OS 対応: Windows・Linux・macOS・Solaris・全主要OS 完全対応
Java 主要バージョン (1995-2024年)
| バージョン | 年 | 主な追加機能 |
|---|---|---|
| Java 1.0 | 1995 | 初代・JDK 1.0 |
| Java 1.4 | 2002 | regex・NIO・assert |
| Java 5 | 2004 | Generics・autoboxing・annotation・enum・enhanced for |
| Java 6 | 2006 | パフォーマンス改善 |
| Java 7 | 2011 | try-with-resources・diamond operator |
| Java 8 LTS | 2014 | Lambda・Stream API・Optional・Date and Time API |
| Java 9 | 2017 | Module System (Project Jigsaw) |
| Java 10 | 2018 | var (local variable type inference) |
| Java 11 LTS | 2018 | HTTP Client・var Lambda・廃止Java EE/CORBA |
| Java 14 | 2020 | switch 式・records preview |
| Java 16 | 2021 | records 標準・改良Pattern Matching |
| Java 17 LTS | 2021 | sealed classes・Pattern Matching for instanceof |
| Java 21 LTS | 2023 | Virtual Threads・Pattern Matching for switch |
| Java 23 | 2024 | Stream Gatherers・Class-File API |
WORA (Write Once Run Anywhere) 革命
1995年Java の主要革新:
- 動作: ソースコードをBytecode にコンパイル→任意のJVM (Windows/Linux/Mac/Solaris) で実行
- 対比 C++: ソースコードを各OS でネイティブコンパイル・移植困難
- 競合: .NET CLR (2002年Microsoft) ・並走・Windows 中心
- 後継: Android Dalvik VM (2008年) /ART (2014年) ・Kotlin (2011年JVM)・Scala (2004年JVM)
Garbage Collection 進化 (1995-2024年)
1995年から30年継続改善:
- Serial GC (1995): 単一スレッド・小規模アプリ向け
- Parallel GC (1999): マルチスレッド・スループット重視
- CMS (Concurrent Mark-Sweep・2000年代): 低レイテンシ・Java 9 で廃止予告・14 で削除
- G1 (2009年Java 7・現代主流): Region ベース・大規模ヒープ向け
- ZGC (2018年Java 11): 超低レイテンシ (10ms 未満) ・TB 級ヒープ
- Shenandoah (2019年Java 12 OpenJDK): Red Hat・低レイテンシ
- 後継: Generational ZGC (Java 21 2023年・更に高効率)
Android Java (2008-2024年)
Java の最大ユースケース:
- Android 1.0 (2008年9月): Dalvik VM (JVM 派生・モバイル最適化)
- Android 5.0 (2014年Lollipop): ART (AOT コンパイラ・Dalvik 後継)
- Java 言語: Android アプリ開発の主流言語 (2008-2017年)
- 2017年Google Kotlin 公式採用: Android アプリ開発で Kotlin 推奨化 (Java から段階移行・現代Kotlin 主流)
- 2010年Oracle vs Google 訴訟: Java API 著作権訴訟・10年継続・2021年Google 勝訴 (米国最高裁・Fair Use 認定)
Spring (2003年-) と Java エンタープライズ
2003年Java 企業システム革命:
- Spring Framework (2003年Rod Johnson): 軽量・DI (Dependency Injection)・現代企業システム標準
- Spring Boot (2014年): マイクロサービス標準・後発のNode.js/Go/Python を凌駕
- 採用: Netflix (動画配信)・Amazon (AWS)・Microsoft Azure・Google Cloud・LinkedIn・Twitter (X) ・大手金融機関 (JP Morgan・Goldman Sachs・Mizuho・MUFG)
Hadoop / Big Data (2006年-)
Java Big Data 帝国:
- Hadoop (2006年Doug Cutting・Yahoo): MapReduce 並列分散処理・大規模データ
- HBase (2007年): NoSQL DB
- Hive (2008年Facebook): SQL on Hadoop
- Spark (2014年・後Scala/Java 主流): Hadoop 後継・現代Big Data 主流
- 採用: Facebook (旧主要)・Netflix・Uber・Airbnb・全大手データ分析企業
採用システム (1995-2024年)
- エンタープライズ: 金融 (JP Morgan・Goldman Sachs・MUFG・Mizuho) ・通信 (NTT・KDDI)・小売 (Amazon・Walmart)
- クラウド: AWS (一部) ・Google Cloud Java SDK・Microsoft Azure Java SDK
- ビッグデータ: Hadoop・Spark・Kafka (LinkedIn 起源)
- モバイル: Android (2008-2024年・後Kotlin 主流)
- Web: Spring Boot・Jakarta EE (旧Java EE)
- IoT/組込み: Java Card (スマートカード)・Java ME (旧モバイル)
- 科学技術: Apache Spark・MATLAB Java integration
関連技術との違い
| 項目 | C++ (1985) | Java (1995) | C# (2002) | Kotlin (2011) |
|---|---|---|---|---|
| 移植性 | 各OS でリコンパイル | WORA (JVM) | Windows 主体 (後.NET Core 全OS) | JVM (Java 互換) |
| GC | 手動+smart pointers | あり | あり (CLR) | あり (JVM) |
| ポインタ | あり | **なし (Reference のみ) ** | なし | なし |
| 用途 | システム/ゲーム/Office | 企業システム/Android/Web/Big Data | Windows/.NET アプリ | Android (Java 後継) |
| 標準化 | ISO C++11/17/20/23 | JDK Releases (LTS 17/21) | ECMA-334 | JetBrains 主導 |
よくある質問 (FAQ)
Q1: なぜJava が30年エンタープライズ標準を維持しているか? A: (1) WORA で OS 非依存・企業の長期運用に最適・(2) Spring エコシステム・(3) Oracle/IBM/Red Hat 等の企業サポート・(4) 大量のJava 開発者 (世界1,000万人+) ・(5) 静的型付け+OOP で大規模システム保守容易・(6) JVM 最適化30年で性能高 (C++ に近い)・全要因で「企業システム = Java」確立。
Q2: Java と Kotlin どちらが推奨か? A: Android 開発: Kotlin 推奨 (Google 公式 2017年-)・JetBrains 主導で現代化・Null Safety・拡張関数等。サーバサイド: Java 17/21 LTS が依然主流・Spring エコシステム巨大。新規プロジェクトはKotlin (Android) or Java (サーバ) ・既存資産はJava 継続が合理的。
Q3: 現代でJava 学ぶ価値は? A: 大いにあり。(1) 企業システム (金融・小売・通信・公的機関) でJava 需要圧倒的・(2) Android 開発でJava 知識必要 (Kotlin と共に)・(3) Big Data (Hadoop/Spark/Kafka) で Java/Scala 必須・(4) Java 開発者は高給職 (世界平均年収$80,000-$150,000)・(5) Spring Boot で現代マイクロサービス開発・新卒/転職市場で安定した選択肢。
まとめ
- 1995年Sun Microsystems James Gosling 開発
- Write Once Run Anywhere (WORA)
- JVM・Garbage Collection
- C++ 文法ベース (ポインタ廃止)
- Spring/Hadoop/Android で現代企業中核