「Java」の版間の差分
削除された内容 追加された内容
編集の要約なし |
バージョン履歴 |
||
1行目:
{{Otheruses|コンピューターのプログラミング言語およびプラットフォーム|その他|ジャバ}}
{{混同|JavaScript}}{{
{{Infobox プログラミング言語
| fetchwikidata = ALL
73行目:
*スレッドがリソースアクセスなどの操作をする度に、セキュリティマネージャが現行のパーミッションを調べて対象外なら例外を発生させる。
*その際はスレッドの各通過メソッドのクラスのパーミッションが全チェックされ、原則的に最少パーミッションの方に合わせる。
*遠隔ロードされたappletクラスなどパーミッション皆無の
実際には上記に加えて、各クラスを同一操作&同一セキュリティレベルでまとめるドメイン機構、認証と承認によるユーザーパーミッション機構、バイトコード送受信時の署名付き証明書機構などが組み合わされて実装運用される。
102行目:
1994年秋までにグリーンチームは、Oakを'''Java'''に、WebRunnerを「[[HotJava]]」に改称した。その理由はOakがすでにビデオカードアダプタ製造会社の登録商標になっていたからだった。この命名は一部のチームメンバーがよく出入りしていた近くのコーヒーショップで決定されたという。Javaの由来は不明とされているが、ロゴが示している通りコーヒーに因んでいるのは明らかである。ジャワ島はコーヒー豆の名産地であり、豆(''Bean'')はJavaテクノロジ内でコンポーネントを指す用語にされている。
1994年10月、JavaランタイムとHotJavaブラウザがサン社幹部社員の前でデモンストレーションされ、α版が社内公開された。1995年5月23日のSunワールドカンファレンスで、JavaランタイムとHotJavaブラウザが社外初披露された。ここでは[[Javaアプレット]]の技術が
=== バージョン履歴 ===
210行目:
*Date and Time API(日付時刻)
*静的結合 [[Java Native Interface]] ライブラリ
==== Java SE 9 (2017年9月21日) ====
ここからメジャーバージョンは一定の新機能蓄積を待たずに公開する毎年3月と9月の年2回定期リリース制に変更された<ref>{{Cite web|url=https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html|title=Oracle Java SE サポート・ロードマップ|language=ja-jp|accessdate=2018-10-19}}</ref>。従来の長期サポート(LTS)が無くなり半年間限定になった。
* 言語仕様に''package''を統合分類する「''module''」の導入(Project Jigsaw)
234 ⟶ 233行目:
==== Java SE 11 (2018年9月25日) ====
JSR 384にて仕様規定<ref>[http://jcp.org/en/jsr/detail?id=384 JSR 384: JavaTM SE 11 (18.9)]</ref>。Java開発環境として「Oracle JDK」と「[[OpenJDK]]」の二つが提供されるようになり、前者の商用利用は有償長期サポート(LTS)契約を結んだ顧客のみになった。Java EEのアップグレードがエクリプス財団による「Jakarta EE」に移譲されたので、JDKにEnterprise版連携モジュールが含まれなくなった。CORBAモジュールも外された。[[JavaFX|Java FX]]も取り除かれた。
* Dynamic class-file constants(invoke_dynamic拡張、動的ロードされたクラスへの定数ブートストラップ呼出)
259 ⟶ 258行目:
==== Java SE 14(2020年3月17日) ====
JSR 389にて仕様規定。
* Recordクラス(メンバ変数不変でコンストラクタと標準メソッドが自動定義されるイミュータブルオブジェクト)
* パターンマッチングinstanceof構文(if文のinstanceof判定で変数も同時定義できる糖衣構文)
* switch文のcase結果値を代入式に組み込める糖衣構文
* Text Blocks(文字列定義の複数行化)
* Foreign-Memory Access API (仮想マシンヒープの外部メモリにも安全にアクセスできる)
* Zガベージコレクタ
== Javaプログラミング例 ==
305 ⟶ 311行目:
== Javaプラットフォーム ==
{{Main|Javaプラットフォーム}}
Javaプラットフォーム(''Java Platform'')は、Javaプログラムを開発または実行する為のソフトウェア群の総称である。Javaプラットフォームは対象環境に合わせて、JREおよびJDKの構成内容と、追加されるJavaテクノロジの組み合わせを変えたエディションに編集されて公開されている。Javaテクノロジは権利元ベンダーだけでなくサードパーティ側からも提供されており、その標準化は[[Java Community Process|Javaコミュニティプロセス]](JCP)が管理している。Javaテクノロジの中核となるJREとJDKはオープンソース化されているので、各企業
=== エディション ===
329 ⟶ 335行目:
Javaクラスライブラリは、普遍的に呼び出される特定の機能を実装したクラスの集合体である。Javaプログラムはライブラリ内のクラスを逐次呼び出しながら処理を実行する。なお、それぞれのJavaクラスライブラリ内部からプログラマの利用に向けて外部公開されている部分を「Java API」と呼ぶ。
# 基礎ライブラリ - Java言語
# 入出力ライブラリ - ファイル入出力など。
#
# 数学ライブラリ - 各種計算を扱う。
# 国際化地域化ライブラリ - 暦、日付、時間、通貨、文字コードなどの[[国際化と地域化]]を扱う。
# ネットワークライブラリ - ソケット
# GUIライブラリ -
#
# Javaビーンズライブラリ -
# データベース接続ライブラリ - SQLを扱う。
# リモートメソッドライブラリ -
#セキュリティライブラリ -
;Javaアプリケーションの形態
371 ⟶ 375行目:
APIは、アプリケーション・プログラミング・インタフェースの頭字語であり、Javaクラスライブラリ内部からプログラマに向けて外部公開されているクラス、インタフェース、メソッド、フィールド、定数の集合である。プログラマはこれを用いて各種ソフトウェアの開発を行う。APIは基本的にクラスライブラリの所属に沿って、パッケージ(''package'')と呼ばれる名前空間で分類されて提供されている。パッケージは各ワードをピリオトで連結して階層化されている。先頭ワードのjavaは開発元提供の純正基礎版を意味する。他に純正拡張版のjavax、任意団体提供のorg、企業提供のcomがある。
# java.lang - Java言語
# java.io - ファイル入出力など。
# java.util - 動的配列
# java.math - 各種計算を扱う。
# java.text - 暦、日付、時間、通貨、文字コードなどの国際化と地域化を扱う。
# java.net - ソケット
# java.awt -
# java.applet - アプレット生成用。
# java.beans -
# java.sql - SQLを扱う。
# java.rmi -
# java.security -
;統合開発環境と開発支援ツール
416 ⟶ 418行目:
*[[Java Naming and Directory Interface|JNDI]] (Java Naming and Directory Interface) - ネーミングサービスと[[ディレクトリ・サービス|ディレクトリサービス]]を扱う
* JSML (Java Speech Markup Language) - [[音声合成]]システムにテキスト
*[[JDBC]]
*[[Java Data Objects|JDO]] (Java Data Objects) -
*JAI (Java Advanced Imaging) -
*JAIN (Java API for Integrated Networks) - 統合
*JDMK (Java Dynamic Management Kit) - JMX仕様に基づいた開発支援ソフトウェア
*Jini - 分散システムを構築するネットワークアーキテクチャ
*Jiro - 分散した記憶装置を管理する
*JavaSpaces - 分散システム環境で
*JML (Java Modeling Language) - [[契約による設計|契約による設計(DbC)]]を指向した形式言語をソースコードに導入する
*JMI (Java Metadata Interface) - Javaのメタデータの作成・アクセス・検索・送受信に関する仕様
*[[Java Management Extensions|JMX]] (Java Management Extensions) - 主に分散
*[[JavaServer Faces|JSF]] (JavaServer Faces) - WEBクライアントに
*[[Java Native Interface|JNI]] (Java Native Interface) - 他の言語で実装されたネイティブコードを呼び出す技術
*[[JXTA]] - [[Peer to Peer]] (P2P) の仮想ネットワークのためのオープンプロトコル
*[[Java3D|Java 3D]] - 3次元グラフィクスプログラミングのための高水準な
*JOGL (Java OpenGL) - [[OpenGL]]
*[[LWJGL]] - ゲーム開発用のAPI。[[OpenGL]]、[[OpenAL]]、[[OpenCL]]を扱える。様々なゲーム用コントローラーも扱える。
*[[OSGi]] - サービスの動的な管理と遠隔保守<!--
454 ⟶ 456行目:
=== Javaオープンソースモデル ===
▲1996年のJava登場初期から、ベンダー元の[[サン・マイクロシステムズ|サン社]](後に[[オラクル (企業)|オラクル社]]が買収)は、Java仮想マシンとJavaクラスライブラリの仕様を公開しており、サードパーティによるJavaプラットフォーム移植と関連ソフトウェアと拡張テクノロジの開発を促していた。しかし過度の技術流出を避ける為の枠組みとして、ソースコードの改変までは認めていなかった。2004年になると[[IBM|IBM社]]と[[BEAシステムズ|BEAシステムズ社]](後にオラクル社が買収)が、この部分的オープンソース制度に便乗する形で、関連ソフトウェアと拡張テクノロジの開発を支援するプロジェクトを立ち上げた。その目的は彼ら独自のJavaオープンソース化を実現する事であり、Java仮想マシンと標準クラスライブラリの互換製品を登場させ、その他の標準化も徐々に進めていた。そうした中でJavaコミュニティプロセスへの影響力低下を懸念したサン社は、このIBM主体によるオープンソース化プロジェクトへの協力に消極的な立場を取り続けていた。しかし業界の変化を悟ったサン社は2006年から方針を変えて賛同し、2007年5月8日にはJava SE 6を「[[OpenJDK]]」として[[GNU General Public License|GNU一般公開ライセンス]]の下でリリースした<ref>{{Cite web|title=Sun Fulfills Promise of Open and Free Java Technology and Releases Java SE Platform to OpenJDK Community|url=http://www.sun.com/aboutsun/pr/2007-05/sunflash.20070508.3.xml|author=Sun Microsystems, Inc|date=2007-5-8|accessdate=2009年9月16日}}</ref>。OpenJDKではソースコードの改変も認められた。「[[GNU Classpath]]」は、J2SE 1.4のクラスライブラリの99%以上を実装し[http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html]、J2SE 5.0では95%以上を実装している[http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath.html]。またOpenJDKの開発にはIBM社も協力している。
;GNUプロジェクト
|