プログラミング言語

Java じゃば

オブジェクト指向JVMWrite Once Run Anywhereコンパイルクロスプラットフォームエンタープライズ
Javaについて教えて

簡単に言うとこんな感じ!

Javaは「どんなパソコンやサーバーでも同じように動く」プログラミング言語だよ! Windows でも Mac でも Linux でも、一度作ったプログラムをそのまま動かせるのが最大の特徴なんだ。企業の基幹システムからスマホアプリまで、世界中で超幅広く使われてる定番中の定番言語ってこと!


Javaとは

Java(ジャバ)は、1995年にSun Microsystems(現Oracle)が開発したオブジェクト指向プログラミング言語です。「Write Once, Run Anywhere(一度書けばどこでも動く)」というスローガンのとおり、一度作ったプログラムをOSや機種を問わずに動かせるプラットフォーム独立性が最大の特徴です。

Javaのプログラムはまずバイトコードという中間形式に変換(コンパイル)され、各OS上で動くJVM(Java Virtual Machine:Java仮想マシン)がそのバイトコードを解釈・実行します。これにより「Windowsで書いたプログラムをLinuxサーバーで動かす」ことが特別な修正なしに実現できます。

企業の基幹業務システム(ERPや銀行システムなど)、Webアプリケーションのサーバーサイド、Androidアプリ開発など、Javaが活躍する場面は非常に広く、30年近く経った今もプログラミング言語の利用ランキング上位に君臨する「現役最強クラス」の言語です。


Javaの仕組みとアーキテクチャ

Javaのプログラムが実行されるまでの流れは以下のとおりです。

ステップ処理内容生成されるもの
① ソースコード記述人間がJava言語でコードを書く.java ファイル
② コンパイルjavacコマンドでバイトコードに変換.class ファイル
③ JVMで実行各OS上のJVMがバイトコードを解釈・実行プログラムの動作
[ .java ソースコード ]
        ↓ javac(コンパイラ)
[ .class バイトコード ]
        ↓ ↓ ↓
  JVM    JVM    JVM
(Win) (Mac) (Linux)
  ↓      ↓      ↓
同じ結果が得られる!

覚え方:「書くのは一回、動かすのはどこでも」

「Write Once, Run Anywhere」は略して WORA(ウォーラ) とも呼ばれます。「ワンライト・エニウェアラン=ワーラ」と覚えると忘れにくいです。「ワンコ(1匹)がどこへでも走る」イメージで!

Javaのエディション分類

用途に応じて3つのエディションがあります。

エディション正式名称主な用途
Java SEStandard Editionデスクトップ・基本的なアプリ開発
Java EE / Jakarta EEEnterprise Edition企業向けWebシステム・サーバーサイド
Java MEMicro Edition組み込み機器・IoT

ビジネスシステムで「Java」と言えば、ほぼ Java SE / Jakarta EE のどちらかです。


歴史と背景

  • 1991年 — Sun Microsystemsの「グリーンプロジェクト」でJavaの前身「Oak(オーク)」が誕生。家電製品向けの言語として開発がスタート
  • 1995年 — 「Java」として正式発表。インターネットブームと重なり、Webブラウザ上で動く「Javaアプレット」が話題に
  • 1996年 — Java 1.0リリース。開発キット(JDK)の無償配布で急速に普及
  • 1999年 — Java EE(エンタープライズ版)登場。企業の大規模システム開発に本格進出
  • 2007年 — Googleが Android OSの開発言語にJavaを採用。スマホ時代にも存在感を発揮
  • 2010年 — OracleがSun Microsystemsを買収し、Javaの管理権がOracleへ移行
  • 2017年 — Java 9からリリースサイクルが6ヶ月ごとに短縮。長期サポート版(LTS)は3年ごとに提供
  • 2019年 — Java EEがEclipse財団に移管され「Jakarta EE」に名称変更
  • 現在 — Java 21(2023年LTS)が最新安定版。クラウドネイティブ対応も強化され現役稼働中

他の言語・技術との比較

Javaとよく比較される言語を整理します。

比較項目JavaPythonC#Kotlin
動作環境JVMPython実行環境.NET CLRJVM
記述量多め少ない中程度Javaより少ない
主な用途企業システム・AndroidAI/機械学習・スクリプトWindowsアプリ・ゲームAndroid・サーバー
学習難易度
実行速度速い遅め速い速い
企業採用実績非常に多い多い多い増加中

KotlinはJavaと完全互換でより簡潔に書けるため、Androidアプリ開発では現在Kotlinが推奨されています。ただし既存のJava資産が膨大にあるため、Javaが完全に置き換わるわけではありません。

以下は、Javaのプログラムが「どのOSでも動く」仕組みをSVGで図解したものです。

Javaソースコード HelloWorld.java javac コンパイラ バイトコードに変換 バイトコード HelloWorld.class JVM (Windows) ✓ 動く JVM (Mac) ✓ 動く JVM (Linux) ✓ 動く

関連する規格・RFC

規格番号内容
JSR 392 (Java SE 17)Java Platform Standard Edition 17の仕様(Java Community Processによる標準化)
Jakarta EE 10企業向けJavaプラットフォームの最新仕様。Eclipse財団が管理

関連用語

  • オブジェクト指向 — データと処理をひとまとめにして扱うプログラミングの考え方
  • JVM(Java仮想マシン) — Javaのバイトコードを各OS上で実行するための実行環境
  • コンパイル — 人間が書いたソースコードをコンピュータが実行できる形式に変換すること
  • Kotlin — JavaのJVM上で動く後継的言語。Android開発の現在の推奨言語
  • Python — 記述量が少なく学習しやすい人気プログラミング言語
  • フレームワーク — アプリ開発の骨格となる再利用可能なプログラムの枠組み(Spring、Strutsなど)
  • API — ソフトウェア同士が機能を呼び出し合うための接続インターフェース
  • クラウド — Javaアプリのデプロイ先として広く使われるインターネット経由の計算資源