Java
パーソナルコンピュータなどのローカル環境で実行されるJavaプログラム。「Java Web Start」は任意のjnlpファイル(java network launching protocol)をダウンロードして実行できるJavaアプリの配布システムである。この類似技術としてマイクロソフトのノータッチデプロイメント、ClickOnceがある。
Javaアプレット (applet)
サーバからダウンロードされてWEBブラウザ上で実行されるJavaプログラム。サンドボックス機能下で厳しい動作制約が加えられている。当初はJavaの目玉技術であったが、様々な理由からさほど普及しなかった。
Java Cardプラットフォームの分野であるスマートカード(ICカード)上で動くJavaプログラムもアプレットと呼ばれており、現在ではこちらに舞台を移している。
Javaサーブレット (servlet)
サーバマシンで実行されるJavaプログラム。その名の通り手軽にサーバプログラムを実装出来るが、大規模サーバの構築にも適している。サーブレットはクライアントからのリクエストを逐次トランザクションして順次レスポンスする。WEBクライアントにはHTMLなどのプロトコルページ及び各種メディアをレスポンスしてWEBブラウザ上で表示させる。PerlなどによるCGIに比べ、サーバ側の負荷が低いなどのメリットがある。
Javaサーバページ (server page)
サーブレットをWEBサーバ用に特化したものであり、XHTML (HTML) 内に記述するJavaプログラムである。WEBクライアントからのリクエストに伴うパラメータに従い、それをサーバ側で解釈してWEBページ内容を動的に生成、変化させてレスポンスする。コードは似ているが、JavaScriptの様にブラウザ側で実行するスクリプトではない。類似の技術にActive Server Pages、PHPがある。
Java開発キット (Java Development Kit) は、Javaプログラムを開発するために必要なソフトウェアである。Java実行環境も内包している。Javaコンパイラなどの基本開発ツール、各種開発サポートツール、Java APIで構成されている。前述のエディションによって開発ツール内容とAPI構成に違いがある。Java開発キットの呼称はこれまでに何度か変更されている。
J2SE 1.2.2_004 までは、JDK (Java Development Kit) と呼んでいた。
J2SE 1.4 までは、Java2 SDK (Java2 Software Development Kit) と呼んでいた。
J2SE 5.0 からは再び、JDK (Java Development Kit) と呼んだ。
JavaSE 7 からは、エンタープライズ版とマイクロ版では Java SDK (Java Software Development Kit) と呼び、スタンダード版とカード版では JDK (Java Development Kit)と呼ぶようになった。JDKはSDKの拡張サブセット(SDKの一部分+その他)とされる。
Java API
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 - セキュリティポリシー、ユーザー認証と権限承認、公開鍵暗号方式など。
統合開発環境 (IDE)は、JDKを中核にしてビジュアルエディターやビルドマネジャーなどの様々な開発支援機能を備えたソフトウェアである。JDKのみだと、メモ帳でプログラムを書きコマンドラインでコンパイルしコンソールでデバッグをするという極めて原始的な作業になるが、IDEを使用する事で多機能エディタコーディングとビルド過程の自動化と視覚的なデバッグが可能になる。Java開発用のIDEは様々な企業と任意団体から公開されている。
NetBeans - (サン・マイクロシステムズ→オラクル)オープンソースIDE。 。
Eclipse SDK - (IBM→Eclipse財団)オープンソースIDE。Java用IDEの共通基盤存在である。ここからWebSphere Studio、JBuilderなど様々なIDEが派生している。 。
WebSphere Studio -(IBM)商用IDE。Eclipseに有料プラグイン機能を組み合わせたもの。現在はアップデート停止。。
IBM Rational -  (IBM) Rationalブランド商用IDE。WebSphere Studioの後継製品。
JBuilder - (ボーランド→エンバカデロ・テクノロジーズ)商用IDE。JBuilder2007からEclipseベースになっている。。
Oracle JDeveloper - (オラクル)Oracle Application Serverと統合されている。2005年6月28日に無料化した。。
Oracle Workshop for WebLogic - (BEAシステムズ→オラクル)Oracle WebLogic Serverと統合されている。。
BlueJ - (サン・マイクロシステムズ、豪ディーキン大学、英ケント大学の共同開発)フリーIDE。。
IntelliJ IDEA - (JetBrains) 商用IDE。Android Studioのベースになった。。
JCreator - (Xinox Software) 商用IDE。。
Xcode - (Apple)macOSに付属するIDE。
開発サポートツールは、プロジェクト管理、自動ビルド、デバッグ、モニタリングを容易にする。下記の他にも多くの支援ツールが存在する。
Apache Ant - Javaアプリケーションのビルドツール。Apacheソフトウェア財団のプロジェクトによって開発された。コンパイル、バージョン管理システムとの連携、jar、javadoc生成、ファイルのコピー/移動/削除/変換などの一連の処理を自動化して効率的に実行する。make と同種のツールであり、XMLファイルにビルドの規則を記述する。Java 以外の言語によるアプリケーション開発や、アプリケーション開発以外の用途にも使うことができる。
Apache Maven - Javaアプリケーションのプロジェクト管理ツール。Apacheソフトウェア財団のプロジェクトによって開発された。
Gradle - Apache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システム。
JUnit - Javaアプリケーションの単体テストフレームワーク。単体テストを自動化する。xUnitの一種である。テスト駆動開発を支援する。
Javaテクノロジは、個人を含む各種組織から様々な形態で公開されている。開発元から提示された技術は、Java Community Process (JCP) による審査を合格した後にJavaテクノロジの一つとして認証される。これを標準化 (standardization) と言う。Javaテクノロジが準拠すべき規範仕様は、JCP管理下で発行される数々のJava仕様要求 (Java Specification Request) にて定義されている。Javaテクノロジは様々な分野に導入されている。その一例を以下に列挙する。
JNI (Java Native Interface) : 他の言語で実装されたネイティブコードを呼び出す技術
JMI (Java Metadata Interface) : Javaのメタデータの作成・アクセス・検索・送受信に関する仕様
JML (Java Modeling Language) : 契約による設計 (DbC) を指向した形式言語をソースコードに導入する
JMX (Java Management Extensions) : 主に分散システムで依存性の注入によるJavaプログラムの動的な再構成技術
JDMK (Java Dynamic Management Kit) : JMX仕様に基づいた開発支援ソフトウェア
JDO (Java Data Objects) : オブジェクト永続化の仕様
Jini : 分散システムを構築するネットワークアーキテクチャ
JavaSpaces : Jiniの分散システム環境でオブジェクトの送受信と永続化などをサポートするテクノロジ
JAIN (Java API for Integrated Networks) : 統合通信ネットワーク用のAPI
JSF (Java Server Faces) : WEBクライアントにユーザーインターフェースを提供するサーバ用テクノロジ
JXTA : P2Pの仮想ネットワークのためのオープンプロトコル
OSGi : サービスの動的な管理と遠隔保守
Java3D : 3次元グラフィクスプログラミングのための高水準なAPI。
JOGL (Java OpenGL) : OpenGLを使う3Dプログラミングのための低水準なAPI
JAI (Java Advanced Imaging) : 高水準な画像操作API
LWJGL : ゲーム開発用のAPI。OpenGL, OpenAL, OpenCLを扱える。様々なゲーム用コントローラーも扱える。
JSML (Java Speech Markup Language) : 音声合成システムにテキスト注釈を追加する
Blu-ray Disc Java : ブルーレイディスク (BD) で実行される各種コンテンツ制作用
サン・マイクロシステムズは1996年のリリース当初からJava実行環境とJava開発環境をオープンソース化しており、サードパーティーにJavaテクノロジ開発への参入をアピールしていた。ただしJavaの普及に一定のコントロールをかける為にソースコードの改変までは認めていなかった。2004年になるとIBMが業界の優位性を活かしてJavaオープンソースプロジェクトの主導権を握るようになった。Javaコミュニティプロセスを取り巻く業界の変化を悟ったサン・マイクロシステムズはIBMとの本格的な提携を承認し、2007年にJava SE 6を「OpenJDK」としてGNU一般公開ライセンスの下でリリースした。OpenJDKではソースコードの改変も認められた。GNUプロジェクトは「GNU Interpreter for Java」、GNUコンパイラコレクションの「GNU Compiler for Java」、互換クラスライブラリの「GNU Classpath」を公開した。Windows用GNU Compilerは、MinGWと併せてCygwinの環境上でも実行できた。
WindowsやLinuxなどのメジャーOSでは、オラクル、IBM、Blackdown、GNUプロジェクト、Kaffe.orgなどによるJavaプラットフォームが公開されている。また、JavaソースコードをそのままWin用実行ファイルに変換する「Excelsior JET」や、JarファイルをWin用実行ファイルに変換する「」「」「」「」なども販売ないし公開されている。
オラクル買収前はサン・マイクロシステムズによって。は複数のJava認定資格を主催している。Javaのバージョンアップに伴って資格も変更されることがある。ただし、変更前に取得した資格は変更後も有効である。認定試験に不合格だった場合、その試験日を含めて14日以内は同一試験を受験することができない。