「Java」の版間の差分
削除された内容 追加された内容
編集の要約なし |
Goldensundown2 (会話 | 投稿記録) Javaの元々の主な対象は組込システムであり、どの電子機器上でもプログラム(従来の制御回路を置き換えたもの)を問題なく動作させるのが目的です。実行環境はそのワンクッションに過ぎず、開発環境は全く関係無いです。要は各機器上でプログラムが走ればいいので、この場合は実行環境と開発環境は該当しません。 |
||
29行目:
}}
{{プログラミング言語}}
'''Java'''(ジャバ)は、狭義では[[プログラミング言語]]のJavaを指し、広義ではJava言語を中心にした[[プラットフォーム (コンピューティング)|コンピューティング・プラットフォーム]]を意味する<ref>{{Cite web|url=https://www.java.com/en/download/faq/whatis_java.xml |title=What is Java and why do I need it? |language=en |accessdate=2019-02-04}}</ref>。後者はJavaプラットフォームと呼ばれる。Javaの関連技術は「Javaテクノロジー」と総称されている<ref>{{Cite web|url=https://docs.oracle.com/cd/E26537_01/tutorial/getStarted/intro/definition.html |title=About the Java Technology (The Java? Tutorials > Getting Started > The Java Technology Phenomenon) |language=ja-jp |accessdate=2019-02-24}}</ref>。Javaの構文は[[C++]]<!-- C言語ではない。 -->に類似しており、[[オブジェクト指向]]と[[並行計算|並行コンピューティング]]が主な[[プログラミングパラダイム|パラダイム]]として導入されている。Java
Javaプログラムは[[Javaバイトコード]]と呼ばれる中間言語([[中間表現]])に[[コンパイラ|コンパイル]]されて、[[Java仮想マシン]]と呼ばれるソフトウェア上で実行される。各コンピュータ環境に対応したJava仮想マシンがハードウェア間の差異を吸収し、特定の環境に依存しないプログラム動作を実現する仕組みとなっている。Java登場初期の対象であった家電機器の[[組み込みシステム]]を始め、[[マイクロコントローラ|マイクロ制御装置]]、[[携帯機器]]、[[パーソナルコンピュータ]]、[[サーバー (コンピューター)|サーバーマシン]]、[[スマートカード]]といった様々な環境にJavaソフトウェアは普及している。
43行目:
# 言語仕様はシンプルで、オブジェクト指向で、見慣れたものにする(''simple, object-oriented, and familiar'')
# 堅牢(バグ多発コードとエラー動作の抑止)で安全(不正アクセスの防止)にする(''robust and secure'')
# プラットフォーム非依存で、移植を容易にする(''architecture-neutral and portable'')
# 高いパフォーマンスで動作する(''executing with high performance'')
51行目:
=== オブジェクト指向 ===
Javaプログラムは
実際のコンピュータ・プロセスにおけるオブジェクトは、インスタンスとして存在している。'''インスタンス'''とは具体的に言うと任意のサイズを占めるメモリ領域の事であり、その構成は基本的に(1)所持フィールド、(2)親インスタンスID、(3)クラス情報ID、となっている。主にローカル設計のプラットフォーム(=Java仮想マシン)では(2)と(3)が省かれてる事もある。(2)(3)のIDは連想値または直アドレス値のどちらかになり、これもプラットフォームによって異なる。メソッドのコード領域はインスタンスには含まれない事になる。こちらはイメージ概念であるオブジェクトの構成要素となり、この点で実装概念であるインスタンスと異なっている。
Java
[[継承 (プログラミング)|継承]]とは、既存のクラスを基にして、そのクラスの機能を引き継いだ新しいクラスを定義できることをいう。継承は拡張とも呼ばれ、Javaのクラス構文では継承の際に<code>extends</code>キーワードが使われる。Javaのクラスはすべて、暗黙的に基底クラス{{Javadoc:SE|name=java.lang.Object|java/lang|Object}}から派生する。また、C++のような実装の[[多重継承]]はサポートせず、単一継承のみをサポートする。ただし、クラスは複数の[[インタフェース (抽象型)|インタフェース]]を実装 (<code>implements</code>) することができる。Javaのインタフェースは、C++では純粋仮想関数のみを持つクラスに相当し、実装を持たない型である<ref group="注釈">実装の多重継承をサポートせず、インタフェースにより型の多重継承のみをサポートするという設計思想は、後発の[[C Sharp|C#]]などでも採用されている。</ref>。ただし、Java 8以降はインタフェースのデフォルトメソッドにより、実装の多重継承も限定的にサポートするようになった。
598行目:
{{Main|Java Runtime Environment}}
Java実行環境 (''Java Runtime Environment'') は、Javaアプリケーションを実行するために必要なソフトウェアである。'''Java仮想マシン'''(''Java Virtual Machine'')と、<nowiki>''</nowiki>Java.exe<nowiki>''</nowiki>を始めとする様々な'''スターター'''(Web用プラグインを含む)と、'''Javaクラスライブラリ'''(''Java Class Library'')で構成される。Java実行環境の中核はJava仮想マシンである。エディション毎に仮想マシンの仕様と性能は異なっており、また実行時は複数の動作モードを持つ。仮想マシンはスターターを通して稼働されるのが普通である。様々な使用状況に対応したスターターが最初に実行されて、そこから仮想マシンが呼び出されてJavaプログラムの実行を移譲される。仮想マシンはJavaクラスライブラリを逐次読み込みながらJavaプログラムを実行する。エンドユーザはソフトウェアパッケージか、企業/団体サイトからのダウンロード、又はWEBブラウザ[[プラグイン]]を通してJava実行環境をインストールする。Java実行環境のツール内容とクラスライブラリ構成は、エディション毎に違いがある。
;Javaクラスライブラリ
689 ⟶ 687行目:
拡張テクノロジは様々な営利企業および任意団体から、javaxパッケージまたはorgパッケージのJava API、JREとJDKを中核にした拡張仕様コンテナの形態で提供されている。また、様々なアプリケーション、ソフトウェアコンポーネント、データベースシステム、ネットワークプロトコル等を組み合わせたソフトウェア・システムとして公開されている。以下はその代表例であり、いずれも[[Java Community Process|Javaコミュニティプロセス]]によって標準化されている。
*[[Java Naming and Directory Interface|JNDI]] (Java Naming and Directory Interface) -
* JSML (Java Speech Markup Language) - [[音声合成]]システムにテキストの注釈を追加する
*[[JDBC]]<!--(Java Database Connectivity)--> - [[データベース]]接続の API
713 ⟶ 711行目:
*[http://community.java.net/javadesktop/ JavaDesktop]
*[[FindBugs]] - javaソースコードからコーディングレベルのバグを発見する開発支援ツール。
=== 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'') と呼ばれる文書で公開していた。
*[http://www.jcp.org/en/jsr/detail?id=14 JSR 14] ''Add [[総称型|Generic Types]] To The Java Programming Language'' (J2SE 5.0)
*[http://www.jcp.org/en/jsr/detail?id=133 JSR 133] ''Java Memory Model and Thread Specification Revision'' (J2SE 5.0)
*[http://www.jcp.org/en/jsr/detail?id=166 JSR 166] ''Concurrency Utilities'' (J2SE 5.0)
731 ⟶ 723行目:
*[http://www.jcp.org/en/jsr/detail?id=176 JSR 176] ''J2SE 5.0 (Tiger) Release Contents'' (J2SE 5.0)
*[http://www.jcp.org/en/jsr/detail?id=201 JSR 201] ''Extending the Java Programming Language with [[列挙型|Enumerations]], [[オートボクシング|Autoboxing]], [[foreach文|Enhanced for loops]] and Static Import'' (J2SE 5.0)
*[http://www.jcp.org/en/jsr/detail?id=244 JSR 244] ''Java EE 5 Specification'' (Java EE 5)
*[http://www.jcp.org/en/jsr/detail?id=901 JSR 901] ''Java Language Specification'' (J2SE 5.0)
765 ⟶ 753行目:
JSmoothなどは、Java実行環境が無い時はそれも自動インストールする機能を備えている。また、純粋なJava実行環境では不可能だったタスクアイコンを表示させる機能も備えている。
<!-- ただし、これらのツールには最新の[[JDK]]でコンパイルされた[[jar]]ファイルには対応していないなどの欠点もある上、{{いつ範囲|date=2019年2月|近年}}の [[Microsoft Windows|Windows]] にはほとんどにJavaがインストールされているため、あまり普及していない。 -->
{{see|[[C SharpとJavaの比較|C#とJavaの比較]]}}▼
== Java認定資格 ==
820 ⟶ 788行目:
== 脚注 ==
{{脚注ヘルプ}}'''注釈'''{{Reflist|group=注釈}}'''出典'''{{reflist|2}}
== 参考文献 ==
839 ⟶ 803行目:
{{Wikibooks|Java}}
{{Commonscat|Java (programming language)}}
*[[Java
*[[Javaの性能]]
*[[
*[[キーワード (Java)|Javaのキーワード (予約語)]]
*[[Javaプラットフォーム]]
*[[Java Platform, Standard Edition]] (Java SE)
|