「Java」の版間の差分
削除された内容 追加された内容
Semi-Brace (会話 | 投稿記録) m Category:Java仮想マシンで動作するプログラミング言語を追加 (HotCat使用) |
Javaプラットフォーム |
||
(同じ利用者による、間の1版が非表示) | |||
1行目:
{{Otheruses|コンピューターのプログラミング言語およびプラットフォーム|その他|ジャバ}}
{{混同|JavaScript}}
{{未検証| {{出典の明記| date {{Infobox プログラミング言語
| fetchwikidata = ALL
19 ⟶ 21行目:
{{プログラミング言語}}
[[ファイル:Java 20131025 1864663017.jpg|境界|右|フレームなし|280x280ピクセル]]
'''Java'''(ジャヴァ)は、汎用[[プログラミング言語]]と[[プラットフォーム (コンピューティング)|ソフトウェアプラットフォーム]]の双方を指す名称であり、現ベンダーの[[オラクル (企業)|オラクル社]]の登録商標である。1996年に[[サン・マイクロシステムズ|サン・マイクロシステムズ社]]によって開発公開され、2010年のオラクル社への吸収合併によりJavaの版権もそちらに移行した。
'''Java'''(ジャヴァ)は、[[クラスベース]]の[[オブジェクト指向プログラミング|オブジェクト指向]]の、実装の[[結合度|依存関係]]をできるだけ少なくするように設計された汎用[[プログラミング言語]]である。これは、アプリケーション開発者が一度書いたらどこでも実行できるようにすること(WORA:''write once, run anywhere'')<ref>{{Cite web|url=http://www.computerweekly.com/Articles/2002/05/02/186793/write-once-run-anywhere.htm|title=Write once, run anywhere?|date=May 2, 2002|publisher=[[Computer Weekly]]|accessdate=2009-07-27}}</ref>を目的としている。つまり、[[コンパイラ|コンパイル]]されたJavaコードは、再コンパイルを必要とせずにJavaをサポートするすべてのプラットフォーム上で実行できる<ref name="design_goals">{{Cite web|url=https://www.oracle.com/technetwork/java/intro-141325.html|title=1.2 Design Goals of the Java™ Programming Language|publisher=Oracle|date=January 1, 1999|accessdate=2013-01-14|archiveurl=https://web.archive.org/web/20130123204103/http://www.oracle.com/technetwork/java/intro-141325.html|archivedate=January 23, 2013}}</ref>。Javaアプリケーションは、通常、基礎となるコンピュータアーキテクチャに関係なく、あらゆるJava仮想マシン(JVM)上で実行できるバイトコードにコンパイルされる。Javaの構文は[[C言語|C]]および[[C++|C ++]]に似ているが、どちらよりも[[低水準言語|低レベル]]の機能が少ない。2019年の時点で、[[GitHub]] <ref name=":02">{{Cite web|url=https://www.wired.com/2013/01/java-no-longer-a-favorite/|title=Is Java Losing Its Mojo?|quote=Java is on the wane, at least according to one outfit that keeps on eye on the ever-changing world of computer programming languages. For more than a decade, it has dominated the [[TIOBE index|TIOBE]] Programming Community Index, and is back on top – a snapshot of software developer enthusiasm that looks at things like internet search results to measure how much buzz different languages have. But lately, Java has been slipping.|first=Robert|author=McMillan|date=August 1, 2013|publisher=[[wired.com]]|accessdate=March 8, 2017|archiveurl=https://web.archive.org/web/20170215115409/https://www.wired.com/2013/01/java-no-longer-a-favorite/|archivedate=February 15, 2017}}</ref> <ref>{{Cite web|author=Chan|first=Rosalie|title=The 10 most popular programming languages, according to the 'Facebook for programmers'|url=https://www.businessinsider.de/the-10-most-popular-programming-languages-according-to-github-2018-10?op=1|website=[[Business Insider]]|accessdate=June 29, 2019|archiveurl=https://archive.today/20190629083530/https://www.businessinsider.com/the-10-most-popular-programming-languages-according-to-github-2018-10?op=1&r=DE&IR=T|archivedate=June 29, 2019|date=January 22, 2019}}</ref>によると、Javaは、特に[[クライアントサーバモデル|クライアント/サーバー]]型の[[ウェブアプリケーション|Webアプリケーション]]で使用されている最も人気のあるプログラミング言語の1つであり<ref name=":02" /> <ref>{{Cite web|author=Chan|first=Rosalie|title=The 10 most popular programming languages, according to the 'Facebook for programmers'|url=https://www.businessinsider.de/the-10-most-popular-programming-languages-according-to-github-2018-10?op=1|website=[[Business Insider]]|accessdate=June 29, 2019|archiveurl=https://archive.today/20190629083530/https://www.businessinsider.com/the-10-most-popular-programming-languages-according-to-github-2018-10?op=1&r=DE&IR=T|archivedate=June 29, 2019|date=January 22, 2019}}</ref>、900万人の開発者がいると報告されている<ref>{{Cite web|url=https://www.oracle.com/technetwork/articles/java/afterglow2013-2030343.html|title=JavaOne 2013 Review: Java Takes on the Internet of Things|website=www.oracle.com|accessdate=2016-06-19|archiveurl=https://www.imarslan.com/javaone-2013-review-java-takes-on-the-internet-of-things|archivedate=April 19, 2016}}</ref>。▼
プログラミング言語Javaは、[[C++]]に類似の構文、[[クラスベース]]の[[オブジェクト指向プログラミング|オブジェクト指向]]、[[マルチスレッド]]、[[ガーベジコレクション]]、[[ソフトウェアコンポーネント|コンポーネント指向]]、分散コンピューティングといった特徴を持ち、比較的簡素なプログラム書式による堅牢性と、仮想マシン上での実行を前提にした安全性および[[プラットフォーム非依存]]が理念とされている。Javaプラットフォームは、Javaプログラムの実行環境と開発環境のどちらか、あるいは双方を統合したソフトウェアであり、[[サーバー (コンピューター)|ビジネスサーバー]]、[[モバイル機器]]、[[組み込みシステム]]、[[スマートカード]]などの様々なハードウェア環境に対応したものが提供されている。その中枢になるのが[[Java仮想マシン]]であり、これは各プラットフォームの環境の違いを吸収しながら、Javaプログラムを適切に実行させる機能を持つ。これによってJavaプラットフォームが搭載されるそれぞれのハードウェア環境の違いに依存しないJavaプログラムの共通動作が約束されており''「write once, run anywhere''」と標榜されていた。
▲
== Javaの特徴 ==
86 ⟶ 88行目:
'''家電向けプロジェクトの立ち上げ(1990年12月)'''
[[ファイル:James Gosling 2008.jpg|サムネイル|181x181ピクセル|ジェームズ・ゴスリン]]
Javaの歴史は、1990年12月に[[サン・マイクロシステムズ]]社が、次世代の家電製品が内蔵するマイクロコントローラ向けのプログラミング言語を開発するステルス・プロジェクトを立ち上げた事から始まる。サン社はこの分野が重要市場になると予測していた。サン社のエンジニアである[[ジェームズ・ゴスリン]]とパトリック・ノートンの参加により、現実味を帯びたプロジェクトの名称は正式に「グリーンプロジェクト」と定められた。彼らは、カリフォルニア州[[メンローパーク (カリフォルニア州)|メンローパーク]]市サンドヒルロードにある小さなオフィスで開発を始めた。
'''Oak言語とGreen OSの誕生(1991年)'''
グリーンチーム内では当時
一方で、[[Mesa]]言語と[[C言語]]の長所を理想にしていたサン社エンジニアの[[ビル・ジョイ]]は、''Further''(彼方へ)という名の論文を書いてC++をモデルにした新しいオブジェクト指向言語の開発を自社に提案した。それを受けてまずジェームズ・ゴスリンがC++の拡張言語を提出した。ゴスリンはこれを「C++ ++ --」と名付けたがすぐに取り下げ、改めて一から設計しなおしたプログラミング言語を誕生させた。オフィスの側に立つオークの木を眺めながら開発を進めていたゴスリンは、この新しい言語に「Oak」という名前をつけた。時に1991年秋でありこの「Oak」がJavaの前身になった。それと並行してOakプログラムが用いる基本ライブラリも整備された。
104 ⟶ 106行目:
1994年秋までにグリーンチームは、Oakを「Java」に、WebRunnerを「[[HotJava]]」に改称した。Green OSは「Java Runtime Environment」に落とし込まれた。改称の理由はOakがすでにビデオカードアダプタ製造会社の登録商標になっていたからだった。この命名は一部のチームメンバーがよく出入りしていた近くのコーヒーショップで決定されたと言われる。Javaの由来は不明とされているが、ロゴが示している通りコーヒーに因んでいるのは明らかである。ジャワ島はコーヒー豆の名産地であり、豆(''Bean'')はJavaテクノロジ内でコンポーネントを指す用語にされている。
1994年10月、JavaランタイムとHotJavaブラウザがサン社の幹部社員たちの前でデモンストレーションされ
=== バージョン履歴 ===
{{main|Javaバージョン履歴}}1996年1月の初リリースからバージョン更新はおおむね数年おきに行われていたが <ref>{{Cite web|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml|title=JAVASOFT SHIPS JAVA 1.0|accessdate=2008-02-05|archiveurl=https://web.archive.org/web/20070310235103/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml|archivedate=March 10, 2007}}</ref>、2017年9月の「Java SE 9」から一定の機能蓄積を待たずに強制公開する旨が発表され、毎年3月9月の年二回定期リリース制に変更された。それに伴い従来の長期間サポート(LTS)制度も廃止され、原則的に次回バージョンまでの半年間サポートになった。2018年9月の「Java SE 11」から有償契約LTS制度が発表され、このバージョンはLTS対象とされた<ref>{{Cite web|url=https://blogs.oracle.com/java-platform-group/introducing-java-se-11|title=Introducing Java SE 11|first=Sharat|author=Chander|website=oracle.com|accessdate=September 26, 2018|archiveurl=https://web.archive.org/web/20180926093144/https://blogs.oracle.com/java-platform-group/introducing-java-se-11|archivedate=September 26, 2018}}</ref>。LTS対象バージョンは安定版、そうでないものは新機能提供版といった位置付けである。現行のLTS対象バージョンは「Java SE 11」と「Java SE 8」である。
407 ⟶ 410行目:
Javaテクノロジは、各企業、任意団体、開発者グループから様々な形で公開されている。具体的な形態例では、org/comパッケージのAPI、JREとJDKを中核にした独自仕様コンテナ、プログラム&ソフトウェアコンポーネント&データベース&通信プロトコル等を組み合わせた統合システムなどがある。各開発元から提示された技術は、[[Java Community Process|Javaコミュニティプロセス(JCP)]]による審査を合格した後にJavaテクノロジの一つとして認証される。これを標準化(''standardization'')と言う。Javaテクノロジは多岐に渡る分野に存在している。その一例を以下に列挙する。
*[[Java
*JMI (Java Metadata Interface) - Javaのメタデータの作成・アクセス・検索・送受信に関する仕様▼
* JSML (Java Speech Markup Language) - [[音声合成]]システムにテキスト注釈を追加する▼
*JML (Java Modeling Language) - [[契約による設計|契約による設計(DbC)]]を指向した形式言語をソースコードに導入する▼
*[[Java Management Extensions|JMX]] (Java Management Extensions) - 主に分散システムで[[依存性の注入]]によるJavaプログラムの動的な再構成技術▼
*[[Java Data Objects|JDO]] (Java Data Objects) - [[オブジェクト (プログラミング)|オブジェクト]][[永続性 (計算機科学)|永続化]]の仕様▼
*JAI (Java Advanced Imaging) - 高水準な画像操作API▼
*JAIN (Java API for Integrated Networks) - 統合通信ネットワーク用のAPI▼
*JDMK (Java Dynamic Management Kit) - JMX仕様に基づいた開発支援ソフトウェア
▲*[[Java Data Objects|JDO]] (Java Data Objects) - [[オブジェクト (プログラミング)|オブジェクト]][[永続性 (計算機科学)|永続化]]の仕様
*Jini - 分散システムを構築するネットワークアーキテクチャ
*
▲*JAIN (Java API for Integrated Networks) - 統合通信ネットワーク用のAPI
▲*JML (Java Modeling Language) - [[契約による設計|契約による設計(DbC)]]を指向した形式言語をソースコードに導入する
▲*JMI (Java Metadata Interface) - Javaのメタデータの作成・アクセス・検索・送受信に関する仕様
▲*[[Java Management Extensions|JMX]] (Java Management Extensions) - 主に分散システムで[[依存性の注入]]によるJavaプログラムの動的再構成
▲*[[JavaServer Faces|JSF]] (JavaServer Faces) - WEBクライアントにユーザーインターフェースを提供するサーバー用テクノロジ
*[[JXTA]] - [[Peer to Peer]] (P2P) の仮想ネットワークのためのオープンプロトコル
*[[Java3D
*JOGL (Java OpenGL) - [[OpenGL]]を使う3Dプログラミングのための低水準なAPI
▲*JAI (Java Advanced Imaging) - 高水準な画像操作API<!--
*Java Media APIs [http://java.sun.com/products/java-media/](リンク切れ?) - java.media - マルチメディア向けAPI-->
*[[LWJGL]] - ゲーム開発用のAPI。[[OpenGL]]、[[OpenAL]]、[[OpenCL]]を扱える。様々なゲーム用コントローラーも扱える。
▲*[[OSGi]] - サービスの動的な管理と遠隔保守<!--
▲*Java Media APIs [http://java.sun.com/products/java-media/](リンク切れ?) - java.media - マルチメディア向けAPI--><!--
*Shared Data ToolkitSound-->
*[[BD-J|Blu-ray Disc Java]] - ブルーレイディスクで実行される各種コンテンツ制作用
|