「Javaプラットフォーム」の版間の差分
m Bot作業依頼#Cite webの和書引数追加 |
|||
(47人の利用者による、間の65版が非表示) | |||
1行目: | 1行目: | ||
{{出典の明記|date=2021年6月}} |
|||
{{Java platforms}} |
{{Java platforms}} |
||
'''Javaプラットフォーム'''(ジャバプラットフォーム、[[英語|英]]: {{lang|en|Java Platform}})は、[[ |
'''Javaプラットフォーム'''(ジャバプラットフォーム、[[英語|英]]: {{lang|en|Java Platform}})は、[[Java]]で記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称である。 |
||
== 概要 == |
|||
Javaプラットフォームは、[[Java (プログラミング言語)|Java言語]]、[[Javaアプレット]]、[[Java Runtime Environment]]、[[Java仮想マシン|JVM]]、[[携帯電話]]や[[組み込みシステム|組み込み]]機器対応Java([[Java Platform, Micro Edition|Java ME]])、[[Java Web Start]]、Java製[[アプリケーション]]なども含めてまとめて単純に「'''Java'''」と呼ばれることがある。 |
|||
Javaのプログラムは、[[オペレーティングシステム]] (OS) や[[ハードウェア]]に依存しない[[バイトコード]](中間言語)と呼ばれる抽象的なコードで表現されている。そのため、Javaプログラムの実行に必要な[[仮想機械|仮想マシン]] ({{lang|en|virtual machine}}) や、開発に必要な標準ライブラリセットおよびコンパイラを個々の環境にあわせて作りさえすれば、Javaプログラムはそれら全ての環境で同一に動く。Javaプラットフォームとはこうした実行環境および開発環境のことである。 |
|||
Javaプラットフォーム |
Javaプラットフォームは、[[Java]]、[[Javaアプレット]]、[[Java Runtime Environment]]、[[Java仮想マシン|JVM]]、[[携帯電話]]や[[組み込みシステム|組み込み]]機器対応Java ([[Java Platform, Micro Edition|Java ME]])、[[Java Web Start]]、Java製[[アプリケーションソフトウェア|アプリケーション]]なども含めてまとめて単純に「'''Java'''」と呼ばれることがある。 |
||
Javaプラットフォームにはいくつかのエディションがあり、PCの[[スタンドアロン]]アプリケーションや他のエディションの基礎となるJava Standard Edition ([[Java Platform, Standard Edition|Java SE]])、[[Webアプリケーション]]や[[Webサービス]]など、サーバーサイド用の[[Jakarta EE]]、[[スマートフォン]]のような携帯端末向けJava Micro Edition ([[Java Platform, Micro Edition|Java ME]]) が存在する。 |
|||
⚫ | Javaプラットフォームは様々なプログラムから成り立っており、各々はそれ全体の能力から全く異なる一部品を提供する。例えば、Java[[ソースコード]]を |
||
2019年5月時点で、Javaプラットフォームの現在のメジャーバージョンは12である{{要出典|date=2019年5月17日 (金) 15:24 (UTC)}}。なおJavaプラットフォームには、バージョン番号とは別の概念としてバージョン文字列というものがあり、現時点では1.8.0である。<ref>{{Cite web|和書 |
|||
| url=http://www.oracle.com/technetwork/jp/java/javase/jdk8-naming-2157130-ja.html |
|||
| title=Java SE 8の名称とバージョン |
|||
| publisher=Oracle |
|||
| date=2014-5-20 |
|||
| accessdate=2016-1-26}} |
|||
</ref> |
|||
⚫ | Javaプラットフォームは様々なプログラムから成り立っており、各々はそれ全体の能力から全く異なる一部品を提供する。例えば、Java[[ソースコード]]を[[Javaバイトコード]]に変換する[[Javaコンパイラ]]があり、それは[[Java Development Kit]] (JDK) の一部として提供されている。実行環境である[[Java Runtime Environment]] (JRE) は通常、オンザフライでバイトコードを[[機械語|ネイティブマシンコード]]に変換する[[実行時コンパイラ|JITコンパイラ]]として実装されている。また、[[Javaバイトコード]]にプリコンパイルされた大規模なライブラリが存在する。アプリケーションが配置される手段も、[[Javaアプレット|アプレット]]としてウェブページに埋め込むなど多岐にわたる。他にも、[https://docs.oracle.com/javase/8/docs/ Java Platform Standard Edition 8 Documentation]にあるように様々なコンポーネントが存在する。 |
||
プラットフォームにある極めて重要なコンポーネントはJavaコンパイラ、ライブラリ、そして仮想マシン仕様で設計されたルールによってJava中間バイトコードを「実行」する実行環境である。 |
プラットフォームにある極めて重要なコンポーネントはJavaコンパイラ、ライブラリ、そして仮想マシン仕様で設計されたルールによってJava中間バイトコードを「実行」する実行環境である。 |
||
12行目: | 24行目: | ||
== Java仮想マシン == |
== Java仮想マシン == |
||
{{main|Java仮想マシン}} |
{{main|Java仮想マシン}} |
||
Javaプラットフォームの本質は |
Javaプラットフォームの本質はJavaバイトコードを実行する「[[仮想機械]] (''{{lang|en|virtual machine}}'')」の発想である。Javaバイトコードは実行プログラムの下にどんなハードウェアやOSがあろうと全く同じである。JITコンパイラはJava仮想マシン (<em lang="en">Java virtual machine</em>) で動く。JITコンパイラは実行時にJavaバイトコードをネイティブなプロセッサ命令に翻訳し、プログラム実行中にメモリ上にネィティブコードをキャッシュする。 |
||
中間言語としてのバイトコードの使用は、バーチャルマシンが存在する様々なプラットフォーム上で |
中間言語としてのバイトコードの使用は、バーチャルマシンが存在する様々なプラットフォーム上でJavaプログラムが走ることを可能にする。JITコンパイラの使用はローディングによる僅かな遅延と、それらが一度にほとんどまたは全てJITコンパイルされ、一度「ウォームアップ」した後で、Javaアプリケーションがネイティブなプログラムと同じくらいの速さで走る傾向があることを意味する。 |
||
[[JRE]]バージョン1. |
[[Java Runtime Environment|JRE]]バージョン1.1以来、サンのJava VM実装は[[インタプリタ]]だけでなく、[[JITコンパイラ]]も含んでいる。 |
||
== クラスライブラリ == |
== クラスライブラリ == |
||
⚫ | |||
⚫ | |||
このコードは一般的にアプリケーションが実行時に呼び出せる[[ライブラリ#動的リンク|動的読込ライブラリ]]のセットとして提供される。Javaプラットフォームは特定のOSに依存しないため、アプリケーションは既存のライブラリのいくつかに頼ることはできない。それどころか、Javaプラットフォームは多くのものを含む標準クラスライブラリの集合を提供し、多くの現代のOSで一般に見つかる同じく再利用可能な機能の多くを含んでいる。 |
このコードは一般的にアプリケーションが実行時に呼び出せる[[ライブラリ#動的リンク|動的読込ライブラリ]]のセットとして提供される。Javaプラットフォームは特定のOSに依存しないため、アプリケーションは既存のライブラリのいくつかに頼ることはできない。それどころか、Javaプラットフォームは多くのものを含む標準クラスライブラリの集合を提供し、多くの現代のOSで一般に見つかる同じく再利用可能な機能の多くを含んでいる。 |
||
JavaクラスライブラリはJavaプラットフォームで三つの意図を役立てる。標準コードライブラリのように、それらはプログラマに、よく知られた、品目リストを保持する、複雑な文字列解析を行うというような共通のタスクを成し遂げる機能セットを提供する。その上、クラスライブラリはハードウェアやOSへの強い依存が普通である仕事を果たす抽象インタフェースを提供する。ネットワーク接続とファイルアクセスのようなタスクはよくプラットフォーム特有の能力に強く依存する。Javaの{{Javadoc:SE|package=java.net|java/net}}と{{Javadoc:SE|package=java.io|java/io}}ライブラリは、時には内部に必要不可欠なネイティブコードを実装しており、時には |
[[Javaクラスライブラリ]]はJavaプラットフォームで三つの意図を役立てる。標準コードライブラリのように、それらはプログラマに、よく知られた、品目リストを保持する、複雑な文字列解析を行うというような共通のタスクを成し遂げる機能セットを提供する。その上、クラスライブラリはハードウェアやOSへの強い依存が普通である仕事を果たす抽象インタフェースを提供する。ネットワーク接続とファイルアクセスのようなタスクはよくプラットフォーム特有の能力に強く依存する。Javaの{{Javadoc:SE|package=java.net|java/net}}と{{Javadoc:SE|package=java.io|java/io}}ライブラリは、時には内部に必要不可欠なネイティブコードを実装しており、時にはそれらのタスクを機能するJavaアプリケーションの標準インタフェースを提供する。最終的に、 |
||
いくらか |
いくらかの基礎を成すプラットフォームはJavaアプリケーションが期待する特色の全てをサポートするかもしれない。これらの件についていえば、クラスライブラリはどんなに役立つものも使うそれらの特色をエミュレートするか、特別な特色の存在をチェックする一貫した方法提供するかのどちらかを行使できる。 |
||
現在のところ、[[Java Runtime Environment|JRE]]に含まれているクラスライブラリは依然として私有のソフトウェアである。互換性のあるフリーライブラリの集合で記述されている[[Free Software Foundation]]の進行プロジェクトがある。それは[[GNU Classpath]]と呼ばれている。2006年11月13日に、サンはJavaソースコード全てが2007年3月に[[GNU General Public License]]のもとでリリースされると発表した。<ref>{{cite web |
{{いつ範囲|現在のところ|date=2014年2月}}、[[Java Runtime Environment|JRE]]に含まれているクラスライブラリは依然として私有のソフトウェアである。互換性のあるフリーライブラリの集合で記述されている[[Free Software Foundation]]の進行プロジェクトがある。それは[[GNU Classpath]]と呼ばれている。2006年11月13日に、サンはJavaソースコード全てが2007年3月に[[GNU General Public License]]のもとでリリースされると発表した。<ref>{{cite web |
||
| url=http://www.sun.com/smi/Press/sunflash/2006-11/sunflash.20061113.1.xml |
| url=http://www.sun.com/smi/Press/sunflash/2006-11/sunflash.20061113.1.xml |
||
| title=Sun Open Sources Java Platform |
| title=Sun Open Sources Java Platform |
||
| publisher=Sun Microsystems |
| publisher=Sun Microsystems |
||
| date= |
| date=2006-11-13 |
||
| accessdate=2006-11-13}}</ref> |
| accessdate=2006-11-13}}</ref> |
||
== 言語 == |
== 言語 == |
||
:''関連カテゴリ [[:Category:JVMプログラミング言語|JVMプログラミング言語]].'' |
|||
Javaという言葉そのものは、通常、Javaプラットフォームで設計されたJavaプログラミング言語を指す。プログラミング言語は一般的に「プラットフォーム」というフレーズの範囲外にあるにもかかわらず、Javaプログラミング言語はJavaプラットフォームの中心部品であると考えられている。Javaの言語と実行はそれゆえ、通例一単位と考えられている。 |
Javaという言葉そのものは、通常、Javaプラットフォームで設計されたJavaプログラミング言語を指す。プログラミング言語は一般的に「プラットフォーム」というフレーズの範囲外にあるにもかかわらず、Javaプログラミング言語はJavaプラットフォームの中心部品であると考えられている。Javaの言語と実行はそれゆえ、通例一単位と考えられている。 |
||
それでもやはり、[[サードパーティ]]は |
それでもやはり、[[サードパーティー]]はJavaプラットフォームを対象にしたかなり多くの[[コンパイラ]]や[[インタプリタ]]を生み出している。それらのうちいくつかは既存の言語として、他は一方はJava言語自身の拡張として存在する。これらは以下を含む: |
||
=== 拡張 === |
|||
* [[AspectJ]] |
* [[AspectJ]] - [[アスペクト指向プログラミング]]を実現できるJava |
||
* |
* {{仮リンク|Generic Java|en|Generic Java}} (GJ) - これはJava SE 5.0で正式にJavaに取り込まれた。 |
||
=== 言語 === |
|||
⚫ | |||
* [[Clojure]] - [[LISP]]方言の一つ |
|||
* [[Fortress]] |
|||
* [[Groovy]] |
* [[Groovy]] |
||
⚫ | |||
* [[BeanShell]] |
|||
* [[Jython]] |
* [[Jython]] - Python-Javaバイトコードコンパイラ jythonc を含む[[Python]]インタプリタ |
||
* [[Kawa]] - LISP方言の一つである[[Scheme]]のインタプリタ |
|||
⚫ | |||
* [[ |
* [[Kotlin]] |
||
* [[ |
* [[Processing]] |
||
⚫ | |||
* [[ScalaScala]] |
|||
* [[Scala]] |
|||
⚫ | |||
* [[Sleep]], [[Perl]] と [[Objective-C]] の特色をミックスしているインタプリタ |
|||
⚫ | |||
== 類似プラットフォーム == |
== 類似プラットフォーム == |
||
⚫ | Javaの成功とそのコンセプト[[write once, run anywhere]]は、2002年に現れて以来、[[.NET Framework]]プラットフォームなど他の類似する取り組みを導き、それらはJavaの成功側面の多くを受けいれた。しかしながら、.NETの完全な実装は[[Microsoft Windows]]のみに向けたものしか存在しない。一方、Javaは多くのプラットフォームで完全にサポートされている。しかし.NETは、多くの異なるプログラミング言語を[[共通中間言語]]へとコンパイルする言語非依存ライブラリのユーザビリティに強い主眼点を置いている。.NETは言語非依存互換性の面ではJavaよりも成功している。しかし、Javaにも[[Scala]]、[[Jython]]、[[Groovy]]、[[Ruby#その他の実装|JRuby]]などJavaVMを実行プラットフォームとする言語処理系が複数存在する。 |
||
⚫ | |||
⚫ | Javaの成功とそのコンセプト[[write once, run anywhere]]は、2002年に現れて以来、[[ |
||
その一方で、近年ではオープンソースコミュニティによって[[IKVM.NET]]という[[共通言語ランタイム]]上で動作するJava仮想マシンが登場し、一方的ではあるが、互換性及び相互利用性は急激に向上している。 |
|||
⚫ | |||
==脚注== |
== 脚注 == |
||
{{脚注ヘルプ}} |
|||
<references /> |
<references /> |
||
== 関連項目 == |
== 関連項目 == |
||
{{Wiktionary |
{{Wiktionary|Java}} |
||
{{Wikibooks |
{{Wikibooks|Java}} |
||
* [[共通言語基盤]](CLI) |
|||
* [[ |
* [[Dalvik仮想マシン]] |
||
* [[Javaパフォーマンス]] |
|||
{{Java}} |
{{Java}} |
||
75行目: | 87行目: | ||
[[Category:Javaプラットフォーム|*]] |
[[Category:Javaプラットフォーム|*]] |
||
[[Category:Java specification requests|*]] |
[[Category:Java specification requests|*]] |
||
<!-- these categories are red link |
|||
[[Category:Computing platforms]] |
|||
--> |
|||
[[cs:Platforma Java]] |
|||
[[de:Java-Plattform]] |
|||
[[en:Java Platform]] |
|||
[[es:Plataforma Java]] |
|||
[[pt:Plataforma Java]] |
|||
[[vi:Java (công nghệ)]] |
2023年9月27日 (水) 07:48時点における最新版
Javaカード | |
---|---|
Java ME (Micro) | |
Java SE (Standard) | |
Jakarta EE | |
JavaFX |
Javaプラットフォーム(ジャバプラットフォーム、英: Java Platform)は、Javaで記述されたプログラムの開発および実行を行うことのできるソフトウェア群の総称である。
概要
[編集]Javaのプログラムは、オペレーティングシステム (OS) やハードウェアに依存しないバイトコード(中間言語)と呼ばれる抽象的なコードで表現されている。そのため、Javaプログラムの実行に必要な仮想マシン (virtual machine) や、開発に必要な標準ライブラリセットおよびコンパイラを個々の環境にあわせて作りさえすれば、Javaプログラムはそれら全ての環境で同一に動く。Javaプラットフォームとはこうした実行環境および開発環境のことである。
Javaプラットフォームは、Java、Javaアプレット、Java Runtime Environment、JVM、携帯電話や組み込み機器対応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.net
とjava.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言語自身の拡張として存在する。これらは以下を含む:
拡張
[編集]- AspectJ - アスペクト指向プログラミングを実現できるJava
- Generic Java (GJ) - これはJava SE 5.0で正式にJavaに取り込まれた。
言語
[編集]- Ceylon
- Clojure - LISP方言の一つ
- Fortress
- Groovy
- JRuby - Rubyインタプリタ
- Jython - Python-Javaバイトコードコンパイラ jythonc を含むPythonインタプリタ
- Kawa - LISP方言の一つであるSchemeのインタプリタ
- Kotlin
- Processing
- Rhino - JavaScript インタプリタ
- Scala
類似プラットフォーム
[編集]Javaの成功とそのコンセプトwrite once, run anywhereは、2002年に現れて以来、.NET Frameworkプラットフォームなど他の類似する取り組みを導き、それらはJavaの成功側面の多くを受けいれた。しかしながら、.NETの完全な実装はMicrosoft Windowsのみに向けたものしか存在しない。一方、Javaは多くのプラットフォームで完全にサポートされている。しかし.NETは、多くの異なるプログラミング言語を共通中間言語へとコンパイルする言語非依存ライブラリのユーザビリティに強い主眼点を置いている。.NETは言語非依存互換性の面ではJavaよりも成功している。しかし、JavaにもScala、Jython、Groovy、JRubyなどJavaVMを実行プラットフォームとする言語処理系が複数存在する。
.NETにもVisual J#というJavaの実装が存在するが、これは本家のJavaとは非互換で、関連するクラスライブラリは殆ど言語バージョンが古いJDK 1.1に基づいている。これらは、Visual J#が.NETにおける主要な言語として設計されたのではなく、Javaから.NETプラットフォームへ移行するために用意された言語であることに起因する。
その一方で、近年ではオープンソースコミュニティによってIKVM.NETという共通言語ランタイム上で動作するJava仮想マシンが登場し、一方的ではあるが、互換性及び相互利用性は急激に向上している。
脚注
[編集]- ^ “Java SE 8の名称とバージョン”. Oracle (2014年5月20日). 2016年1月26日閲覧。
- ^ “Sun Open Sources Java Platform”. Sun Microsystems (2006年11月13日). 2006年11月13日閲覧。
関連項目
[編集]- 共通言語基盤(CLI)
- Dalvik仮想マシン