概要
1990年代にサン・マイクロシステムズ社によって開発されたプログラミング言語である。C言語やその拡張言語であるObjective-C、派生言語のC++の強い影響を受けている。
「Java VM」という仮想マシン用のバイトコードを生成し、マシンごとにあった実行コードを生成するため移植性が非常に高い。
Java VMの実行環境であるJava Runtime Environment (JRE) は現在主流のOSのほとんどに実装されており、携帯電話や家電製品から大規模なサーバまで、適用範囲が非常に広い。ただし、一部のプラットフォームにしかない機能は、他の機種では使えないので全ての環境で同じJavaプログラムが動くわけではない。2000年代以降、最も広く使われているプログラミング言語である。
また、他の言語でも「Java VM」用のバイトコードを生成すればJavaプラットフォーム上で動かすことが可能である。例えばJava用のRubyの実行環境であるJRubyとか。
なお、名前が似ているJavaScriptはJavaの派生言語ではなく、全くの別物である。
用途
クライアントサイド
アプレットと呼ばれるブラウザ上で動くプログラムを実行できる。Javaアプレット自体は2018年にその役割をほぼ終えて開発キットから除外された。また、代替技術が成熟しているために、現在はほとんどのブラウザ側でもサポートが打ち切られている。
サーバーサイド
最近になってJavaサーブレット技術によるサーバーサイドのJavaプログラミングが非常に多く使われるようになってきている。大規模なWeb環境で用いられることが多く、負荷に強い。
デスクトップアプリケーション
当初喧伝されたほど流行らなかったが、今でもたまに見かける。
Java8になり、JavaFXというライブラリを使ったアプリケーションがデフォルトでJREで動かせるようになった。
携帯電話
移植性の高さを生かして主にガラケーやAndroidなどで使われる。
組み込み
2000年代末ごろからC言語やC++に替わる機器制御用言語としても広がっている。元が家電の制御用であるので適性は高い。組み込みシステム自体も1990年代以前に比べはるかに高性能化しているので、ネイティブコードへのコンパイルをせず、Java VMを介して動作させることも増えつつある。