Java

Java

(地理)
【じゃわ】

→ジャワ

Java

(コンピュータ)
【じゃば】

狭義ではオブジェクト指向プログラミング言語であり、広義ではプログラミング言語のプログラムの実行環境および開発環境を指す。

概要

Java 技術は、Java 言語と Java プラットフォームからなる。 単に Java 言語のことを指して 「Java」 という言葉が使われることもあれば、プラットフォーム (全部あるいは一部) も含めて 「Java」 という言葉が使われることもある。

元々は家電製品を制御するために作られ、後に Java が登場した当初は Applet が注目され一時脚光を浴びたことがあるものの、当時のデスクトップマシン性能の限界から 「Java は遅い」 という印象がしばらく付きまとうことになってしまった。

その後、Java はネットワークやセキュリティに強くミッションクリティカルに向いているという言語の特徴から、サーバーサイド (Java Servlet) で B2B、基幹系業務、金融系など幅広い分野で使われ Java 言語を爆発的に普及させる基礎を築いた。

マシン性能が向上し、かつ JVM (Java Virtual Machine) の性能が向上した今では、Applet の代替とされる Java Web Start と Java Swing (GUI) の性能向上によって再びデスクトップ Java が再生しつつある。

サーバーサイド環境は Java Platform, Enterprise Edition (Java EE) を参照。 携帯機器のプラットフォームとして Java ME も存在する。

Java 言語 (Java programming language)

プログラミング言語のひとつ。 JavaScript と混同されることが多い。

Java 言語では、すべてのソースコードはまず .java という拡張子のテキストファイルに記述される。 そして、それらのソースファイルは Java のコンパイラによって .class という拡張子のファイル (クラスファイル) にコンパイルされる。 クラスファイルは、プロセッサのネイティブコードではなくバイトコード (bytecodes) で記述される。 このバイトコードは、後で説明する Java 仮想マシンのマシン語である。

Java プラットフォーム (Java platform)

プラットフォームとは、プログラムを実行させるためのハードウェア環境あるいはソフトウェア環境である。 多くのプラットフォームは OS とハードウェアの組み合わせである。 Java プラットフォームはそういった類のプラットフォームとは違い、ソフトウェアのみで構成されるプラットフォームであり、別のハードウェアベースのプラットフォーム上で動作する。

Java プラットフォームは 2 つの部分からなる:

  • Java 仮想マシン (Java Virtual Machine; JVM)
  • Java アプリケーションプログラミングインターフェイス (Java Application Programming Interface; Java API)

Java 仮想マシンは、上述の Java のクラスファイルに記述されたバイトコードを実行するための仮装的なマシンである。 Java API は、すぐに使える多くの有用な機能を提供する多くのソフトウェア部品の集合である。 それらは関連のあるクラスとインターフェイスごとにパッケージにグループ分けされている。

プラットフォームから独立した環境であるため、Java プラットフォームはネイティブコードと比べて遅くなりうるものである。 しかしながら、コンパイラと仮想マシン技術の進歩により、移植性を損なうことなくネイティブコードに近いパフォーマンスを得られるようになっている。 例えば、JIT (Just In Time) コンパイルや起動時のフットプリント削減のための Hotspot 技術などが存在する。

実行環境など

Oracle から、開発環境として Java Development Kit (JDK) が、実行環境として Java Runtime Environment (JRE) が提供されている。 オープンソースの Java SE 実装として OpenJDK (OpenJDK サイト) があったり、オープンソースの Java VM 実装として KAFFE などがあったり、いくつもの実装が存在する。

Java 技術の歴史

1990 年の終わり、Sun Microsystems 社はワークステーション市場で世界をリードしており、それは健全な速度で成長し続けていた。 他の分野に革新技術と専門知識を適用することが考えられ、Sun は家電分野での調査を始めた。 1991 年に調査のためのプロジェクトである Green プロジェクトが結成され、James Gosling、Patrick Naughton、Mike Sheridan といったエンジニアは離れたオフィスへ移動し、Sun とのコミュニケーションをほぼしなくなる。 この年に、James Gosling は Oak プログラミング言語 (のちの Java) の研究を始めた。

1992 年に、Green プロジェクトチームは Star7 を生み出した。 これは、アニメーションするタッチスクリーンの UI を持ち、ユーザー補助のためのエージェントとして Duke (のちに Java のマスコットキャラクターとなる) を搭載した PDA デバイスである。 プロセッサ非依存の新しいプログラミング言語である Oak が、Star7 のために James Gosling によって生み出された。

1993 年、Green プロジェクトは Sun の完全子会社 FirstPerson になるが、その後、グループは Sun に戻り、ターゲットがセットトップ・ボックスからオンライン・サービスや CD-ROM、デスクトップ・プラットフォームといったところに変更される。 1994 年、Sun のエンジニアの Patrick Naughton と Jonathan Payne は Oak 言語を使って WebRunner (後に HotJava と改称される) を開発。 これは、要素の移動や動的に実行されるコンテンツをサポートした最初のブラウザであった。

1995 年、商標的な問題から、プログラミング言語の名前が Oak から Java に変更される。 TED (Technology, Entertainment, and Design) 会議において、WebRunner が初めて公にデモンストレーションされた。 SunWorld 会議において、HotJava ブラウザとともに Java 1.0a2 が発表された。 さらに、Netscape Navigator の最初の Java が有効なバージョンがリリースされた。

1996 年、Java 1.0 プログラミング環境がダウンロード可能となる。


スッキリわかるJava入門

スッキリわかるJava入門

このタグの解説についてこの解説文は、すでに終了したサービス「はてなキーワード」内で有志のユーザーが作成・編集した内容に基づいています。その正確性や網羅性をはてなが保証するものではありません。問題のある記述を発見した場合には、お問い合わせフォームよりご連絡ください。

ネットで話題

もっと見る

関連ブログ

GitHub PackagesのMaven Repositoryを使ってみる

こんにちは、エキサイト株式会社の平石です。 アドベントカレンダーの3日目を担当します。 qiita.com 今回は、GitHub Packagesの利用方法と、実際に運用としていく上で私が感じた課題をご紹介します。 はじめに GitHub Packages は、コンテナやその他の依存関係を含むパッケージをホストおよび管理するためのプラットフォームです。 通常、こういったものを管理しようとすると自前でサーバーを立てて運用する必要があります。 しかし、GitHub Packagesを使うことで自前でサーバーを管理する必要がなく、なおかつソースコードの管理とパッケージの提供をGitHubという一つの...

C・Java・Python:三大言語をどう選ぶ?結局どれを学ぶべき?

プログラミング言語の選択は、エンジニアとして歩むキャリアの方向性を大きく左右する。なかでも C言語・Java・Python は、現在のソフトウェア開発を支える「三大基盤」といえる存在であり、それぞれ異なる領域で独自の強みを発揮している。本記事では、この3つの言語を「ピラミッド構造」で比較し、それぞれの特徴、向いている分野、将来性をわかりやすく解説する。これから学ぶ言語を迷っている人はもちろん、キャリアの再設計を考えているエンジニアにも役立つ内容となっている。 一、コア特性と選び方:三角形の戦い この3つの言語は、ひとつの「ピラミッド」として捉えることができます。 C言語:土台(ベース)ハードウ...

Javaで分散トレーシング with OpenTelemetry — JJUG CCC 2025 Fall スポンサー LT 書き起こし #jjug_ccc

Mackerel のトレーシング機能では OpenTelemetry という標準化された技術を採用しています。 今回 Mackerel として Java のコミュニティカンファレンスである JJUG CCC に初めてスポンサーさせていただき、スポンサー LT の機会をいただきました。サービスや会社の紹介よりも技術的な内容の方が少しでも楽しんでいただけると考え OpenTelemetry を用いて Java アプリケーションからトレーシングを取得する初めの一歩をご紹介しました。 以下当日お話しした内容を書き起こしたものです。 目次 システムのオブザーバビリティ高められていますか? 分散トレーシン...

AltStyle によって変換されたページ (->オリジナル) /