Movatterモバイル変換


[0]ホーム

URL:


Hatena Blog Tags
はてなブログ トップ
Java
このタグでブログを書く
言葉の解説
ネットで話題
関連ブログ

Java

(地理)
【じゃわ】

→ジャワ

Java

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

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

概要

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

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

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

マシン性能が向上し、かつ JVM (Java Virtual Machine) の性能が向上した今では、Applet の代替とされるJava Web Start と JavaSwing (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入門

Java 8 Lambdas: Pragmatic Functional Programming (English Edition)

Java 8 Lambdas: Pragmatic Functional Programming (English Edition)

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

関連ブログ

[Java]ローカルキャッシュを導入した話

はじめに こんにちは、メディアプラットフォーム事業部エンジニアの岡崎です。最近、ローカルキャッシュの導入を行いました。今回はその時のことを備忘録としてブログに残します。 前提 今回の要件として一番大切なことは、できるだけユーザーがページを見ることができる状態にすることでした。 これを前提として、今までの実装を見ていきましょう。 最初、キャッシュはRedisに保存するような構成になっていました。 この場合、もしDBに障害が起きたとしても、Redisに保存しているデータがあった場合は、そこから取得することができます。 しかし、Redisに障害が起きてしまったら、データが取得できなくなり、クライアン…

ネットで話題

もっと見る

関連ブログ

【人工知能】AI開発の未来を巡る争い:Pythonの限界とJavaの可能性

AIが爆発的に人気を集めた数年間、Pythonは間違いなく最も人気のあるプログラミング言語でした。AI分野におけるPythonの強みは、その簡潔さと豊富なエコシステムにあります。これにより、深層学習、データサイエンス、機械学習において、Pythonは第一選択の言語となっています。しかし、AIアプリケーションの規模が拡大するにつれて、Pythonのパフォーマンスのボトルネックが徐々に顕著になり、特に大規模かつ高複雑度のエンタープライズ向けAIアプリケーションでは、その限界がより明らかになっています。 中には、2025年がPythonのAI分野における最後の輝かしい年になる可能性があり、Javaが…

リアルタイム通信の革新:WebSocketsの活用

リアルタイム通信が求められるアプリケーション(チャット、株価更新、IoTデバイスの監視など)では、従来のHTTPリクエスト/レスポンスモデルでは限界があります。そのため、WebSockets を活用したリアクティブな通信モデルが重要になります。 本記事では、WebSocketsの基本概念、オブジェクト指向設計との関係、Spring WebFluxと組み合わせた実装例 を紹介します。 1. WebSocketsとは? 1-1. WebSocketsの基本概念 WebSocket は、クライアントとサーバーが双方向通信 を可能にする通信プロトコルです。 通常のHTTPとは異なり、常時接続 を維持す…

リアクティブアーキテクチャの重要性と実装例

近年、高トラフィックなWebアプリケーション や リアルタイム処理 の需要が高まり、従来のブロッキング型の処理では対応しきれないケースが増えています。 その解決策として、リアクティブアーキテクチャ(Reactive Architecture) が注目されています。 本記事では、リアクティブアーキテクチャの基本概念、オブジェクト指向設計との関係、Spring WebFluxを用いた実装例 を紹介します。 1. リアクティブアーキテクチャとは? 1-1. リアクティブアーキテクチャの基本概念 リアクティブアーキテクチャとは、非同期・ノンブロッキング処理を活用し、スケーラブルなアプリケーションを構築…

Sagaパターンと分散トランザクションの革新

マイクロサービスアーキテクチャでは、1つのシステムを複数のサービスに分割し、それぞれが独立したデータベースを持つため、従来のトランザクション管理(ACID特性) が難しくなります。 その解決策として、Sagaパターン が注目されています。 本記事では、Sagaパターンの基本概念、オブジェクト指向設計との関係、Javaを用いた実装例を紹介します。 1. 分散トランザクションの課題 1-1. 従来のトランザクションとマイクロサービスの課題 従来のモノリシックなアプリケーションでは、データベース管理システム(RDBMS)が ACID(Atomicity, Consistency, Isolation…


[8]ページ先頭

©2009-2025 Movatter.jp