Javaプラットフォーム

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
Javaのエディション
Javaカード
Java ME (Micro)
Java SE (Standard)
Jakarta EE
JavaFX
テンプレートを表示ひょうじ

Javaプラットフォーム(ジャバプラットフォーム、えい: Java Platform)は、Java記述きじゅつされたプログラムの開発かいはつおよび実行じっこうおこなうことのできるソフトウェアぐん総称そうしょうである。

概要がいよう[編集へんしゅう]

Javaのプログラムは、オペレーティングシステム (OS) やハードウェア依存いぞんしないバイトコード中間なかま言語げんご)とばれる抽象ちゅうしょうてきなコードで表現ひょうげんされている。そのため、Javaプログラムの実行じっこう必要ひつよう仮想かそうマシン (virtual machine) や、開発かいはつ必要ひつよう標準ひょうじゅんライブラリセットおよびコンパイラを個々ここ環境かんきょうにあわせてつくりさえすれば、Javaプログラムはそれらすべての環境かんきょう同一どういつうごく。Javaプラットフォームとはこうした実行じっこう環境かんきょうおよび開発かいはつ環境かんきょうのことである。

Javaプラットフォームは、JavaJavaアプレットJava Runtime EnvironmentJVM携帯けいたい電話でんわ機器きき対応たいおうJava (Java ME)、Java Web Start、Javaせいアプリケーションなどもふくめてまとめて単純たんじゅんに「Java」とばれることがある。

Javaプラットフォームにはいくつかのエディションがあり、PCのスタンドアロンアプリケーションやのエディションの基礎きそとなるJava Standard Edition (Java SE)、WebアプリケーションWebサービスなど、サーバーサイドようJakarta EEスマートフォンのような携帯けいたい端末たんまつけJava Micro Edition (Java ME) が存在そんざいする。

2019ねん5がつ時点じてんで、Javaプラットフォームの現在げんざいのメジャーバージョンは12である[よう出典しゅってん]。なおJavaプラットフォームには、バージョン番号ばんごうとはべつ概念がいねんとしてバージョン文字もじれつというものがあり、現時点げんじてんでは1.8.0である。[1]

Javaプラットフォームは様々さまざまなプログラムからっており、各々おのおのはそれ全体ぜんたい能力のうりょくからまったことなるいち部品ぶひん提供ていきょうする。たとえば、JavaソースコードJavaバイトコード変換へんかんするJavaコンパイラがあり、それはJava Development Kit (JDK) の一部いちぶとして提供ていきょうされている。実行じっこう環境かんきょうであるJava Runtime Environment (JRE) は通常つうじょう、オンザフライでバイトコードをネイティブマシンコード変換へんかんするJITコンパイラとして実装じっそうされている。また、Javaバイトコードにプリコンパイルされただい規模きぼなライブラリが存在そんざいする。アプリケーションが配置はいちされる手段しゅだんも、アプレットとしてウェブページにむなど多岐たきにわたる。ほかにも、Java Platform Standard Edition 8 Documentationにあるように様々さまざまなコンポーネントが存在そんざいする。

プラットフォームにあるきわめて重要じゅうようなコンポーネントはJavaコンパイラ、ライブラリ、そして仮想かそうマシン仕様しよう設計せっけいされたルールによってJava中間なかまバイトコードを「実行じっこう」する実行じっこう環境かんきょうである。

Java仮想かそうマシン[編集へんしゅう]

Javaプラットフォームの本質ほんしつはJavaバイトコードを実行じっこうする「仮想かそう機械きかい (virtual machine)」の発想はっそうである。Javaバイトコードは実行じっこうプログラムのしたにどんなハードウェアやOSがあろうとまったおなじである。JITコンパイラはJava仮想かそうマシン (Java virtual machine) でうごく。JITコンパイラは実行じっこうにJavaバイトコードをネイティブなプロセッサ命令めいれい翻訳ほんやくし、プログラム実行じっこうちゅうにメモリじょうにネィティブコードをキャッシュする。

中間ちゅうかん言語げんごとしてのバイトコードの使用しようは、バーチャルマシンが存在そんざいする様々さまざまなプラットフォームじょうでJavaプログラムがはしることを可能かのうにする。JITコンパイラの使用しようはローディングによるわずかな遅延ちえんと、それらがいちにほとんどまたはすべてJITコンパイルされ、一度いちど「ウォームアップ」したのちで、Javaアプリケーションがネイティブなプログラムとおなじくらいのはやさではし傾向けいこうがあることを意味いみする。

JREバージョン1.1以来いらい、サンのJava VM実装じっそうインタプリタだけでなく、JITコンパイラふくんでいる。

クラスライブラリ[編集へんしゅう]

もっと現代げんだいてきなOSでは、さい利用りよう可能かのうなコードのおおきなあつまりがプログラマ仕事しごと容易よういにした。 このコードは一般いっぱんてきにアプリケーションが実行じっこうせる動的どうてき読込よみこめライブラリのセットとして提供ていきょうされる。Javaプラットフォームは特定とくていのOSに依存いぞんしないため、アプリケーションは既存きそんのライブラリのいくつかにたよることはできない。それどころか、Javaプラットフォームはおおくのものをふく標準ひょうじゅんクラスライブラリの集合しゅうごう提供ていきょうし、おおくの現代げんだいのOSで一般いっぱんつかるおなじくさい利用りよう可能かのう機能きのうおおくをふくんでいる。

JavaクラスライブラリはJavaプラットフォームでみっつの意図いと役立やくだてる。標準ひょうじゅんコードライブラリのように、それらはプログラマに、よくられた、品目ひんもくリストを保持ほじする、複雑ふくざつ文字もじれつ解析かいせきおこなうというような共通きょうつうのタスクをげる機能きのうセットを提供ていきょうする。そのうえ、クラスライブラリはハードウェアやOSへのつよ依存いぞん普通ふつうである仕事しごとたす抽象ちゅうしょうインタフェースを提供ていきょうする。ネットワーク接続せつぞくとファイルアクセスのようなタスクはよくプラットフォーム特有とくゆう能力のうりょくつよ依存いぞんする。Javaのjava.netjava.ioライブラリは、ときには内部ないぶ必要ひつよう不可欠ふかけつなネイティブコードを実装じっそうしており、ときにはそれらのタスクを機能きのうするJavaアプリケーションの標準ひょうじゅんインタフェースを提供ていきょうする。最終さいしゅうてきに、 いくらかの基礎きそすプラットフォームはJavaアプリケーションが期待きたいする特色とくしょくすべてをサポートするかもしれない。これらのけんについていえば、クラスライブラリはどんなに役立やくだつものも使つかうそれらの特色とくしょくをエミュレートするか、特別とくべつ特色とくしょく存在そんざいをチェックする一貫いっかんした方法ほうほう提供ていきょうするかのどちらかを行使こうしできる。

現在げんざいのところ[いつ?]JREふくまれているクラスライブラリは依然いぜんとして私有しゆうのソフトウェアである。互換ごかんせいのあるフリーライブラリの集合しゅうごう記述きじゅつされているFree Software Foundation進行しんこうプロジェクトがある。それはGNU Classpathばれている。2006ねん11月13にちに、サンはJavaソースコードすべてが2007ねん3がつGNU General Public Licenseのもとでリリースされると発表はっぴょうした。[2]

言語げんご[編集へんしゅう]

Javaという言葉ことばそのものは、通常つうじょう、Javaプラットフォームで設計せっけいされたJavaプログラミング言語げんごす。プログラミング言語げんご一般いっぱんてきに「プラットフォーム」というフレーズの範囲はんいがいにあるにもかかわらず、Javaプログラミング言語げんごはJavaプラットフォームの中心ちゅうしん部品ぶひんであるとかんがえられている。Javaの言語げんご実行じっこうはそれゆえ、通例つうれいいち単位たんいかんがえられている。

それでもやはり、サードパーティーはJavaプラットフォームを対象たいしょうにしたかなりおおくのコンパイラインタプリタしている。それらのうちいくつかは既存きそん言語げんごとして、一方いっぽうはJava言語げんご自身じしん拡張かくちょうとして存在そんざいする。これらは以下いかふくむ:

拡張かくちょう[編集へんしゅう]

言語げんご[編集へんしゅう]

類似るいじプラットフォーム[編集へんしゅう]

Javaの成功せいこうとそのコンセプトwrite once, run anywhereは、2002ねんあらわれて以来いらい.NET Frameworkプラットフォームなど類似るいじするみをみちびき、それらはJavaの成功せいこう側面そくめんおおくをけいれた。しかしながら、.NETの完全かんぜん実装じっそうMicrosoft Windowsのみにけたものしか存在そんざいしない。一方いっぽう、Javaはおおくのプラットフォームで完全かんぜんにサポートされている。しかし.NETは、おおくのことなるプログラミング言語げんご共通きょうつうちゅうあいだ言語げんごへとコンパイルする言語げんご依存いぞんライブラリのユーザビリティにつよ主眼しゅがんてんいている。.NETは言語げんご依存いぞん互換ごかんせいめんではJavaよりも成功せいこうしている。しかし、JavaにもScalaJythonGroovyJRubyなどJavaVMを実行じっこうプラットフォームとする言語げんご処理しょりけい複数ふくすう存在そんざいする。

.NETにもVisual J#というJavaの実装じっそう存在そんざいするが、これは本家ほんけのJavaとは互換ごかんで、関連かんれんするクラスライブラリはほとん言語げんごバージョンがふるJDK 1.1もとづいている。これらは、Visual J#が.NETにおける主要しゅよう言語げんごとして設計せっけいされたのではなく、Javaから.NETプラットフォームへ移行いこうするために用意よういされた言語げんごであることに起因きいんする。

その一方いっぽうで、近年きんねんではオープンソースコミュニティによってIKVM.NETという共通きょうつう言語げんごランタイムうえ動作どうさするJava仮想かそうマシンが登場とうじょうし、一方いっぽうてきではあるが、互換ごかんせいおよ相互そうご利用りようせい急激きゅうげき向上こうじょうしている。

脚注きゃくちゅう[編集へんしゅう]

  1. ^ Java SE 8の名称めいしょうとバージョン”. Oracle (2014ねん5がつ20日はつか). 2016ねん1がつ26にち閲覧えつらん
  2. ^ Sun Open Sources Java Platform”. Sun Microsystems (2006ねん11月13にち). 2006ねん11月13にち閲覧えつらん

関連かんれん項目こうもく[編集へんしゅう]