削除された内容 追加された内容
編集の要約なし
(同じ利用者による、間の1版が非表示)
22行目:
}}
{{プログラミング言語}}
'''Java'''(ジャバ)は、狭義では[[プログラミング言語]]のJavaを指し、広義ではJava言語を中心にした[[プラットフォーム (コンピューティング)|コンピューティング・プラットフォーム]]を意味する<ref>[https://www.java.com/en/download/faq/whatis_java.xml What is Java and why do I need it?]</ref>。後者はJavaプラットフォームと呼ばれ、その関連技術はJavaテクノロジと総称されている<ref>[https://docs.oracle.com/cd/E26537_01/tutorial/getStarted/intro/definition.html About the Java Technology (The Java? Tutorials &gt; Getting Started &gt; The Java Technology Phenomenon)]</ref>。Javaの構文は[[C言語]]に類似しており、[[オブジェクト指向]]と[[並行計算|並行コンピューティング]]が主な[[プログラミングパラダイム|パラダイム]]として導入されている。Javaテクノロジの主な目標は、従来のソフトウェアが抱えていた[[移植性]]問題の解決であった。''"[[Write once, run anywhere]]"''(一度書けばどこでも動く)をキャッチコピーにし、特定の環境に依存しない理想的な[[クロスプラットフォーム]]・プログラムの実現を目指して公開された<!-- サン社の目標は一度書いたプログラムがどの電子機器上でも共通動作する事であり、実行環境と開発環境は関係ないです -->
 
Javaプログラムは[[Javaバイトコード|特殊なバイトコード]]に[[コンパイラ|コンパイル]]されて、[[Java仮想マシン]]と呼ばれるソフトウェア上で実行される。各コンピュータ環境に対応したJava仮想マシンがハードウェア間の差異を吸収し、特定の環境に依存しないプログラム動作を実現する仕組みとなっている。Java登場初期の対象であった家電機器の[[組み込みシステム]]を始め、[[マイクロコントローラ|マイクロ制御装置]]、[[携帯機器]]、[[パーソナルコンピュータ]]、[[モバイル端末]]、[[サーバー (コンピューター)|サーバーマシン]]、[[ストカコンピュータ]]といった様々な環境にJavaソフトウェアは普及している<!-- パソコンやスパコンは略語・俗語であり、特に導入部で安易に使うべきではない。 -->
 
Javaは、1995年に[[サン・マイクロシステムズ]]社によって公開された。2010年にサン社は[[オラクル (企業)|オラクル]]社に吸収合併され、Javaの各種権利もそちらに移行した。おおよそ数年おきに言語仕様の改訂が重ねられており、2019年3月現在の最新メジャーバージョンは、2018年9月25日に公開された第11版となっている。
140行目:
Javaでは、C/C++のような、整数と[[ポインタ (プログラミング)|ポインタ]]の相互変換、配列の要素へのポインタによるアクセス、ポインタ演算といった機能は、基本機能としては提供されていない。ただし、オブジェクトへの参照は内部的にはアドレスである。
 
Javaは「[[パッケージ (Java)|パッケージ(''package'')]]」という[[名前空間]]を持つ。これはクラスとインターフェースを文字列レベルで分類し、またクラス名定義の衝突を回避する為の機能である。パッケージ名は任意の数だけ[[ピリオド]]で繋ぐ事が出来る。同時にこれはパッケージの階層構造を表現できる。パッケージの実体はクラス名に付ける接頭辞の羅列であり、その接頭辞文字列によってクラス名をユニークなものにしている。プログラミングの際はソースコード冒頭にフルパス先頭から任意の数だけ指定したパッケージ名以降をワイルドカード化し、そのパッケージ内のクラスをデフォルト指定出来るので短いコード記述が可能となる。
 
== 歴史 ==
562行目:
 
== Javaプラットフォーム ==
Javaプラットフォーム(''Java Platform'')は、'''Java実行環境'''(JRE)と'''Java開発キット'''(JDK)と'''拡張テクノロジ'''の総合である。拡張テクノロジとは様々なIT分野にJavaを適用して生み出された膨大な技術群の総称である。上記三種は公式ベンダーだけでなくサードパーティ側からも提供されており、スマホ、パソコン、サーバーマシン、電子機器エンベデッドシステム、マイクロコントセッサーラ、スマートカードなどのあらゆる環境に対応したJavaプラットフォームが存在している。各技術の品質を評価して認証するJavaテクノロジの標準化は、公式ベンダーである[[オラクル (企業)|オラクル社]]([[サン・マイクロシステムズ|サン社]])を始めとする各企業各団体が参画する[[Java Community Process|Javaコミュニティプロセス]](JCP)が管理している。Javaテクノロジの中核となるJREとJDKはオープンソース化されている為、各企業及び各任意団体が営利または非営利で膨大な数のソフトウェアと関連技術を公開し、巨大なITエコシステムを構築している。
 
=== エディション(版) ===
現在、Javaプラットフォームには使用環境に合わせた4つのエディションが存在する。エディションによってJava実行環境とJava開発キットに含まれるツール構成に違いがあり、またクラスライブラリとAPIの構成内容も異なっている。なお、JDK 1.1までは単体エディションで、J2SE 1.2から3エディションに分かれた。J2SE 5.0頃から拡張テクノロジの一つであったJava Cardが昇格して4エディションとなった。
 
;スタンダード版(''Java Platform Standard Edition'')
572行目:
:サーバーマシン、ワークステーション向けである。スタンダード版に加え、WEBサーバー及び多層クライアントサーバーや業務用システムを開発する為の、様々な拡張技術クラスライブラリ&APIが追加されている。業務用プロフェッショナル仕様であり大規模である。
;マイクロ版(''Java Platform Micro Edition'')
:[[マイクロプロセッサ]]、[[組み込みシステム|エンベデッドシステム]]、[[マイクロコントローラ]]向けである。コンピュータ資源が制限されている集積回路や電子機器に対応した特定技術仕様であり、専用のクラスライブラリ&APIも用意されている。Java仮想マシンも比較的コンパクトにまとめらている。
;カード版(''Java Card'')
:[[ICカスマド|ICカード|スマードカード(ICカード)]]及びそれに類似の小型メモリデバイス上で運用されるプログラムを実行または開発する為のエディションである。現在では[[SIMカード]]や[[ATMカード]]など幅広い分野に普及している。Java仮想マシンの機能は非常にコンパクトにまとめられており、幾つかのプリミティブ変数も省略されている。故に特殊なプログラミングスタイルが求められる。
 
=== Java実行環境(JRE) ===
587行目:
Javaクラスライブラリは、普遍的に呼び出される特定の機能を実装したクラスの集合体である。Javaプログラムはライブラリ内のクラスを逐次呼び出しながら処理を実行する。なお、それぞれのJavaクラスライブラリ内部からプログラマの利用に向けて外部公開されている部分を「Java API」と呼ぶ。
 
* 言語使用基盤ライブラリ - Java言語の基本部分を
* 入出力ライブラリ
* データコレクションライブラリ
593行目:
* 国際化地域化ライブラリ
* ネットワークライブラリ
* グラフィックユーザーインターフェスライブラリ
* Javaアプレットライブラリ
* Javaビーンズライブラリ
* リモートメソッドライブラリ
* セキュリティライブラリ
* バッファストリームライブラリ
* データベース接続ライブラリ
* リフレクションライブラリ
* データベース接続ライブラリ
* XMLライブラリ
* 名前解決&階層特定ライブラリ
 
;Javaアプリケーションの形態
626 ⟶ 624行目:
 
;Java API
 
APIは、アプリケーション・プログラミング・インターフェスの頭字語であり、Javaクラスライブラリ内部からプログラマに向けて外部公開されているクラス、インターフェース、メソッド、フィールド、コンスタントバリューの総合である。またその定義情報を示すプロトコル(定義情報と使用方法)を指す。プログラマはこれを用いて開発を行う。
 
* java.lang
632 ⟶ 631行目:
* java.util
* java.math
*java.text
* java.net
* java.awt
639行目:
* java.security
* java.nio
*java.sql
*java.lang.reflect
 
;統合開発環境と開発支援ツール
664 ⟶ 666行目:
ここには、Java Community Process のもとで開発された拡張機能と関連技術のみを記述します。
=================================================================================-->
拡張テクノロジは様々な営利企業および任意団体から、javaxパッケージ/orgまたはorgパッケージなどのJava API、JREとJDKを中核にした拡張仕様コンテナの形態で提供されている。また、様々なアプリケーション、ソフトウェアコンポーネントデータベースシステムネットワークプロトコル等を組み合わせたソフトウェア・システムといった形態でして公開されている。以下はその代表的なものであり、いずれも[[Java Community Process|Javaコミュニティプロセス]]によって標準化されている。
 
*[[Java Naming and Directory Interface|JNDI]] (Java Naming and Directory Interface) - ネーミングサービス・[[ディレクトリ・サービス|ディレクトリサービス]]へのアクセス
688 ⟶ 690行目:
*Java Media APIs [http://java.sun.com/products/java-media/](リンク切れ?) - java.media - マルチメディア向けAPI--><!--
*Shared Data ToolkitSound-->
*[http://community.java.net/javadesktop/ JavaDesktop]<!--
================================================================================
上記には、Java Community Process のもとで開発された拡張機能と関連技術のみを記述します。
=================================================================================-->
 
=== Javaテクノロジの標準化 ===
{{Main|Java Community Process}}
 
[[Javaプラットフォーム]]を形成するJavaテクノロジの標準技術仕様は、[[Java Community Process|Javaコミュニティプロセス]] (Java Community Process, JCP) に管理されていた。標準化とはその技術の品質を評価してJavaテクノロジの一つとして認証する事である。JCPに参画する事でJavaテクノロジの標準化カンファレンスに関与できた。[[ボーランド|ボーランド社]]、[[富士通]]、[[Apacheソフトウェア財団]]、[[ヒューレット・パッカード|ヒューレット・パッカード社]]なども参加していた。JCPはJavaプラットフォームに追加される仕様や技術を、JSRs (''Java Specification Requests'') と呼ばれる文書で公開していた。Java言語仕様と標準APIに関連したJSRsを以下に列挙する。
 
*[http://www.jcp.org/en/jsr/detail?id=14 JSR 14] ''Add [[総称型|Generic Types]] To The Java Programming Language'' (J2SE 5.0)