Java徹底解説:定義、特徴、プラットフォーム概要、バージョン履歴
Javaとは
Javaは、汎用性、クラスベース、オブジェクト指向を備え、移植性、速度、セキュリティを重視したプログラミング言語です。モバイルアプリ、エンタープライズサーバー、科学技術用スーパーコンピュータ、ゲームコンソールなど幅広いアプリケーションを、事実上あらゆるハードウェアプラットフォーム上で駆動します。
Javaプラットフォームとは
Javaプラットフォームは、開発者がJavaアプリケーションを効率的に書き、コンパイル、実行できるよう包括的なツールとライブラリのセットです。Java Development Kit(JDK)、Java Virtual Machine(JVM)、Java Runtime Environment(JRE)で構成されます。ジェームズ・ゴスリンがサン・マイクロシステムズで考案し、後にオラクルが買収しました。
Javaの定義と意義
Javaはマルチプラットフォーム、ネットワーク中心の言語であり、オブジェクト指向設計の力と堅牢なセキュリティ機能を融合しています。スケーラブルで安全、高性能なアプリケーション構築に最も広く採用されている言語の一つです。
Javaの用途
- Androidアプリ開発
- エンタープライズソフトウェアとミドルウェア
- モバイルおよび組み込みアプリケーション
- 科学計算とシミュレーション
- ビッグデータ分析フレームワーク
- Java MEによるハードウェアレベルプログラミング
- サーバーサイド技術(Apache、JBoss、GlassFish)
Javaの歴史
- 当初Oakと命名 — 携帯デバイス向けプログラミングの初期試み
- 1995年、Webブームを捉えてJavaにリブランディング
- 2009年、オラクルがサン・マイクロシステムズを買収、Java、MySQL、Solarisを統合
Javaバージョン履歴
| Javaバージョン | リリース日 |
|---|---|
| JDK Alpha & Beta | 1995 |
| JDK 1.0 | 1996年1月23日 |
| JDK 1.1 | 1997年2月19日 |
| J2SE 1.2 | 1998年12月8日 |
| J2SE 1.3 | 2000年5月8日 |
| J2SE 1.4 | 2002年2月6日 |
| J2SE 5.0 | 2004年9月30日 |
| Java SE 6 | 2006年12月11日 |
| Java SE 7 | 2011年7月28日 |
| Java SE 8 | 2014年3月18日 |
| Java SE 9 | 2017年9月21日 |
| Java SE 10 | 2018年3月20日 |
| Java SE 11 | 2018年9月25日 |
| Java SE 12 | 2019年3月19日 |
| Java SE 13 | 2019年9月17日 |
| Java SE 14 | 2020年3月17日 |
| Java SE 15 | 2020年9月15日(最新) |
Javaの主な特徴
- 明確な構文で学習・可読性が容易
- Write Once, Run Anywhere — プラットフォーム非依存バイトコード
- 堅牢なオブジェクト指向設計
- 標準搭載のマルチスレッドと自動ガベージコレクション
- ネットワーク・分散アプリケーションに最適化
- 豊富な標準ライブラリとエコシステム
Java言語コンポーネント
Javaプログラムは人間可読なソースコードから始まり、Javaコンパイラによって機械実行可能なバイトコードに変換されます。
Java Development Kit (JDK)
JDKはJavaアプリケーション開発に必要なすべてのツール(コンパイラ、デバッガ、ランチャー、JRE)を提供。Windows、macOS、Linux、Solarisで利用可能で、複数バージョンを同一マシンで共存させられます。
Java Virtual Machine (JVM)
JVMはJavaバイトコードを実行時にネイティブ機械語に翻訳して実行します。Just-In-Time(JIT)コンパイラによりクロスプラットフォームで高性能を実現。
Java Runtime Environment (JRE)
Javaアプリケーション実行のみ必要なエンドユーザー向けに、JDKに含まれる開発ツールを除いたクラスライブラリとJVMを提供。
Javaプラットフォームの種類
- Java SE (Standard Edition) — デスクトップ/サーバーアプリ、ネットワーク、GUI、XMLパース用コアAPI
- Java EE (Enterprise Edition) — 大規模マルチティアエンタープライズソリューション向け高度API
- Java ME (Micro Edition) — モバイル・組み込みデバイス向け軽量VM
- JavaFX — ハードウェアアクセラレーション対応のリッチインターネットアプリ向けモダンUIツールキット
Java Virtual Machineの仕組み
- Javaコードを記述(例:
System.out.println(1+2);)、Example.javaとして保存 javac Example.javaでバイトコードにコンパイル、Example.class生成- クラスファイルをJVMにロード
- OSメモリ上のJVMがホストプラットフォームを特定し、バイトコードをネイティブ機械語に変換して実行
なぜJavaはプラットフォーム非依存なのか
Javaコンパイラはプラットフォーム非依存のバイトコードを出力し、あらゆるJVMが解釈可能。単一ソースコードベースでWindows、macOS、Linux、Android等でシームレスに動作します。
まとめ
- JavaはAndroid、エンタープライズ、分散コンピューティングに最適な強力なマルチプラットフォーム・オブジェクト指向言語
- JDK、JVM、JREで構成されるJavaプラットフォームが開発・デプロイの堅牢なエコシステムを提供
- 誕生以来多数のリリースを経て、Java SE 15が最新安定版(2020年9月)
- SE、EE、ME、JavaFXの4主要プラットフォームが幅広いアプリケーションドメインに対応
- プラットフォーム固有コンパイラが不要なアーキテクチャで真のクロスプラットフォームソリューションを実現
Java
- プロキシサーバー完全ガイド:定義、仕組み、メリット・デメリット、VPNとの違い
- 粉末冶金完全解説:定義、プロセス、メリット、用途、FAQ
- 溶接完全ガイド:定義、種類、仕組み、用途、FAQ
- ドリル盤(ボール盤)完全ガイド:定義、構成部品、種類、使い方
- シェイパー(整形盤)とは:定義、構成部品、動作原理を徹底解説
- 電子ビーム溶接(EBW)とは?原理、工程、メリットを徹底解説
- 金属めっきとは?種類、メリット、用途を徹底解説
- Java インターフェース vs 抽象クラス:適切な抽象化の選び方
- Java コンストラクタオーバーロード完全解説:実践コード例付き
- Java 10で削除された非推奨API・機能・オプション一覧
- JDK 10で非推奨となったAPI・機能・オプション:削除予定項目