Javaとは、プログラミング言語の一つである。Java VMなどの実行環境全体を指す場合もある。
人によってはJavaScriptと混同している場合があるので注意を要する。(特に書店の店員さん)
もともとはコーヒー豆の種類であるJavaから。コンピュータを知らない人にとっては風呂釜洗浄剤だったり原人だったり島の名前だったりカレールウだったりする。缶紅茶とかゴダイゴとかが出てきたら立派なおっs(ry
1990年代に サン・マイクロシステムズ(現:オラクル)が設計した物が元になっている、プログラム言語の一つ。オブジェクト指向型言語である。
当初は、Javaで動作する専用のハードウェアも開発し、インターネット家電機器への進出も計画されたが頓挫し、現在はJava VMを介した実行環境がメインとなっている。[*1]
基本的に「JavaVMさえあればどこでも動く」という移植性の高さから「Write once, run anywhere」と言われる。[*2]
オブジェクト指向であること、プリミティブ型があること[*3]、中間言語+仮想マシン方式であること、ガベージコレクションがあること、静的な強い型付き言語であること、ドキュメンテーションコメントの書法を定義していること(JavaDoc)、などがある。
C++に見られる多くの機能を改良して吸収し言語仕様も大幅に改編、さらにC++では標準機能として持てなかった機能を大幅に追加していった。これにより高い汎用性と生産性をアピールすることになった。
過去は非常に互換性を重視しようという意図があり、その関係で長らくGenericsが要望されながら搭載が見送られてきた経緯があるが、C#の存在を意識してかJava5(1.5)を境にむしろ互換性を犠牲にしてまで様々仕様を搭載しようとする姿勢に変化している。
Javaバイトコードとして定義(コンパイル)された命令セットを実行する仮想マシン。
バイトコードそのものはJava言語を前提としているものの厳密にJava言語専用というものではないため、他言語でもバイトコードに変換すればJava仮想マシンで動作させることができる。
実際にScalaやClojureといった言語を始め様々な言語でバイトコードに変換するコンパイラが存在する。
10年ほど前までは「リッチ・クライアント」の分野でなんらかの機能をWebページに付加することが「アプレット(Java Applet)」が流行りかけていた。
しかし、マイクロソフトが勝手に改造した件の訴訟のゴタゴタや、ネットスケープナビゲータでJavaアプレットを表示しようとすると数分間一切操作を受け付けない状態になるため露骨に敬遠されているうちに、こちらの分野は Flash、さらに近年では所謂AjaxやHTML5に奪われてしまい、現在では見る影もなくなっている。[*4]
またGoogleはJava言語(ただしライブラリの互換性はほとんどなし)からJavaScriptに変換するGWTを公開しているが、これもあまり普及してるとは言い難い状況である。
主に大規模なWebサービス(サーバ側)、また会社間(B2B)システム、ECサイト(電子商取引サイト)、社内イントラシステム等、「会社の中の人向け」のシステム構築の言語として広く使われている。総じて「エンタープライズ」向けと言われることも多い。
最近では実行環境の監視などのノウハウが溜まっているなど、スケールアウトのしやすさから所謂「クラウド」において開発用途に使われる。
Java言語そのものは使われなくてもScalaやClojureといったJava VM上で動く言語、JRubyやJython(それぞれJava製のRuby、Pythonのインタプリタ)など開発環境の母体として、またJenkinsやApache Hadoopといった開発向けミドルウェアとして用いられている。
モバイル向けアプリの分野、特に携帯電話では他に選択肢がないという理由で機能制限つきのJavaが使われている(iアプリ、オープンアプリ、MIDPなど)
これらはまとめて「Java Micro Edition」と言われてはいるものの、「標準仕様」といったものはなく、それそれのキャリア対象に合わせた制作が必要なためコストが嵩むことが問題視されていた。
近年ではスマートフォンが主力となったことでAndroidアプリの開発用に使われている。ただし、iPhoneのほうはJava言語で開発するのは非現実的な状況なので、皮肉なことに両対応したい場合にはJava言語は使いづらく、結局前述の問題は何も解決されていない。
なおAndroidに使われている仮想マシン(DalvikVM)はJavaVMと異なるバイトコードで動くため正式には「Java」とはいえない。言語としての互換性の上ではAndroid環境は一部を除きJava Standard Editionに準拠している。このため、「Java Micro Edition」にあった「あのライブラリがない」といったことが少ないのだが、それゆえにかどうかは知らないがDalvikVMに関してJavaの権利を持っているオラクルから訴えを起こされており、現在係争中である。
ハードウェア性能の向上も手伝い、図形・文字描画機能の向上、GUI表現力の拡張、インストールの簡素化、などがされたため、主にクロスプラットフォームなデスクトップ・アプリケーション開発への対応において有用性を高められている。
こういった機能を有効活用した、ニコニコ内で有名なソフトウェアとしてはJavieやMikuMikuStudioが挙げられる。
C/C++系の文法である。シンタックスシュガーが少ないのが特徴でJavaの省略しない文化が表れている。
型はプリミティブ型、列挙型(Java 5から導入)、参照型に分かれ、プリミティブ型にはboolean, char, int, short, long, float, doubleがある。
Javaの統合開発環境(IDE)としてはEclipseとNetBeansがよく知られている。
EclipseはIBMが、NetBeansはサン・マイクロシステムズ(現オラクル)が開発の主体となって開発したソフトウェアで、どちらもフリーかつオープンソースである。
これらは開発の支援機能を多く備え、生産性向上にも役立つIDEとして有名である。
特にEclipseはJavaに限らずクロスプラットフォームな開発環境においては標準的なIDEとなっていることが多い。
基本的にJavaの開発時にどちらを利用するか迷ったら書籍など情報量の多いEclipseをおすすめする。
ただし、マシン環境が貧弱な場合、NetBeansのほうがより軽いため、こちらを使うほうがいいかもしれない。
Java SE自体によく使われるようなライブラリが一通り揃っているほか、オープンソースの強力なライブラリ群があるのがJavaの特長である。Apache Software Foundationのライブラリ群などがよく知られている。
定番とされているものだとApache Ant,Apache Tomcat,Apache Struts,Apache Mavenが挙げられる。
[*1] 尤も現在ではARM等の組み込み向けCPUにおいてJava支援ハードウェアが搭載されたりしている
[*2] 実際にはそれぞれの環境によって異なることも多々あるために"Write once, debug everywhere"と揶揄されることも多い
[*3] あれ?全てがオブジェクトなんじゃないの?プリミティブ型は違うの?とか言ってはいけない。何でラッパーとかいるの?Stringはプリミ ティブ?え?違う? でもイミュータブルなので、プリミティブ的に扱っておk。って、どっち?メソッドあるからオブジェクト??意味わからないです。
・・・とか言う会話を新卒と交わし、本気でエリック・ガンマに手紙を出そうとした2年目を見たことのある人間が、少なくとも日本には一人いる。
[*4] この分野での復権を目指してJavaの技術を発展させた、Java PluginやJavaFXといったFlashと競合する技術を発表してはいるが、今のところ新規ユーザの獲得には至っていない。
急上昇ワード改
最終更新:2026/01/10(土) 09:00
最終更新:2026/01/10(土) 09:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。