コンテンツにスキップ

0-1. Javaとは

Javaの特徴

Javaは1995年にSun Microsystems(現Oracle)によって開発されたオブジェクト指向プログラミング言語です。

主な特徴

  1. プラットフォーム非依存性
  2. "Write Once, Run Anywhere" (WORA)
  3. Javaバイトコードは任意のプラットフォーム上のJVM(Java Virtual Machine)で実行可能

  4. オブジェクト指向

  5. すべてがオブジェクトとして扱われる(プリミティブ型を除く)
  6. カプセル化、継承、ポリモーフィズムをサポート

  7. メモリ管理の自動化

  8. ガベージコレクション(GC)による自動メモリ管理
  9. メモリリークのリスクを軽減

  10. 堅牢性と安全性

  11. 強力な型チェック
  12. 例外処理の仕組み
  13. セキュリティマネージャーによるアクセス制御

  14. 豊富なライブラリとエコシステム

  15. 標準ライブラリが充実
  16. 膨大なサードパーティライブラリ
  17. 活発なコミュニティ

JVMの仕組み

コンパイルと実行の流れ

Javaソースコード (.java)
    ↓ javac (コンパイラ)
Javaバイトコード (.class)
    ↓ JVM (インタプリタ / JITコンパイラ)
機械語 → 実行

具体例:

# コンパイル
javac HelloWorld.java  # HelloWorld.class が生成される

# 実行
java HelloWorld  # JVMがバイトコードを実行
  1. コンパイル: .javaファイルをjavacコマンドでコンパイルし、.classファイル(バイトコード)を生成
  2. 実行: JVMがバイトコードを読み込み、機械語に変換して実行

JVMの主要コンポーネント

  • クラスローダー: .classファイルをメモリにロード
  • バイトコード検証器: セキュリティとコードの正当性をチェック
  • 実行エンジン: バイトコードを機械語に変換して実行
  • インタプリタ方式
  • JIT(Just-In-Time)コンパイラ: 頻繁に実行されるコードを最適化
  • ガベージコレクタ: 不要なオブジェクトを自動的に解放

なぜJavaが広く使われているのか

エンタープライズ開発での強み

  1. 安定性と成熟度
  2. 30年近い歴史を持つ成熟した言語
  3. 長期サポート(LTS)バージョンによる安定した運用

  4. スケーラビリティ

  5. 大規模システムの構築に適している
  6. マルチスレッド処理のサポート

  7. 後方互換性

  8. 古いバージョンで書かれたコードも新しいJVMで動作しやすい
  9. レガシーシステムの保守が容易

  10. 多様な用途

  11. Webアプリケーション(Spring、Jakarta EE)
  12. Androidアプリ開発
  13. デスクトップアプリケーション
  14. 組み込みシステム
  15. ビッグデータ処理(Hadoop、Apache Spark)
  16. クラウドサービス

現代におけるJavaの位置づけ

  • 求人市場での需要: エンタープライズ開発を中心に高い需要
  • モダン化: Java 8以降、ラムダ式やStream APIなど関数型プログラミングの要素を取り入れ進化
  • コミュニティとエコシステム: 膨大なライブラリ、フレームワーク、ツールが存在

Javaのバージョンについて

  • LTS(Long Term Support)版: 長期サポートが提供されるバージョン
  • Java 8(2014年)、Java 11(2018年)、Java 17(2021年)、Java 21(2023年)
  • 非LTS版: 6ヶ月ごとにリリースされる最新機能を含むバージョン
  • 推奨: 新規プロジェクトでは最新のLTS版(Java 17以降)を使用

バージョン選択のヒント

学習目的であれば最新のLTS版(Java 21)を使用することをおすすめします。最新の機能を体験でき、将来的に役立ちます。

まとめ

Javaはプラットフォーム非依存性、オブジェクト指向、堅牢性を兼ね備えた言語であり、エンタープライズ開発からモバイルアプリまで幅広い用途で使用されています。JVMによる自動メモリ管理と豊富なエコシステムにより、大規模で信頼性の高いシステムの構築に適しています。


ナビゲーション

[:material-arrow-left: ホームに戻る](../index.md)
[次へ:開発環境の構築 :material-arrow-right:](0-2-setup.md)