単語記事: Java

編集

http://dic.nicovideo.jp/oekaki/25489.png

Javaとは、プログラミング言語の一つである。Java VMなどの実行環境全体をす場合もある。

人によってはJavaScriptと混同している場合があるので注意を要する。(特に書店の店員さん)

もともとはコーヒー豆の種類であるJavaから。コンピュータを知らない人にとっては風呂釜洗浄剤だったり原人だったりの名前だったりカレールウだったりする。缶紅茶とかゴダイゴとかが出てきたら立なおっs(ry

概要

1990年代に サン・マイクロシステムズ(現:オラクル)が設計した物が元になっている、プログラム言語の一つ。オブジェクト指向である。

当初は、Javaで動作する専用のハードウェアも開発し、インターネット電機器への進出も計画されたが頓挫し、現在はJava VMを介した実行環境メインとなっている。[*1]

特徴

基本的に「JavaVMさえあればどこでも動く」という移植性の高さから「Write once, run anywhere」と言われる。[*2]

Java言語として

オブジェクト指向であること、プリミティがあること[*3]、中間言仮想マシン方式であること、ガベージコレクションがあること、静的な強い付き言であること、ドキュメンテーションコメントの書法を定義していること(JavaDoc)、などがある。

C++に見られる多くの機良して吸収し言仕様も大幅に編、さらにC++では標準機として持てなかった機を大幅に追加していった。これにより高い汎用性と生産性をアピールすることになった。

過去は非常に互換性を重視しようという意図があり、その関係で長らくGenericsが要望されながら搭載が見送られてきた経緯があるが、C#の存在を意識してかJava5(1.5)をにむしろ互換性を犠牲にしてまで様々仕様を搭載しようとする姿勢に変化している。

Java仮想マシン(Java VM,JVM)

Javaバイトコードとして定義(コンパイル)された命令セットを実行する仮想マシン

バイトコードそのものはJavaを前提としているものの厳密にJava専用というものではないため、他言でもバイトコードに変換すればJava仮想マシンで動作させることができる。

実際にScalaClojureといった言を始め様々な言バイトコードに変換するコンパイラが存在する。

使われ方

リッチ・クライアント(Java Applet)

10年ほど前までは「リッチ・クライアント」の分野でなんらかの機Webページに付加することが「アプレット(Java Applet)」が流行りかけていた。

しかし、マイクロソフトが勝手に改造した件の訴訟のゴタゴタや、ネットスケープナビゲータでJavaプレットを表示しようとすると数分間一切操作を受け付けない状態になるため露に敬遠されているうちに、こちらの分野は Flash、さらに近年では所謂AjaxHTML5に奪われてしまい、現在では見る影もなくなっている。[*4]

またGoogleJava(ただしライブラリの互換性はほとんどなし)からJavaScriptに変換するGWT開しているが、これもあまり普及してるとは言い難い状況である。

エンタープライズ(Java Enterprise Edition)

 に大規模なWebサービスサーバ側)、また会社間(B2B)システム、ECサイト(電子商取引サイト)、社内イントラシステム等、「会社の中の人向け」のシステム構築の言として広く使われている。総じて「エンタープライズ」向けと言われることも多い。

最近では実行環境の監視などのノウハウが溜まっているなど、スケールアウトのしやすさから所謂「クラウド」において開発用途に使われる。

Javaそのものは使われなくてもScalaClojureといったJava VM上で動く言JRubyやJython(それぞれJava製のRubyPythonインタプリタ)など開発環境体として、またJenkinsやApache Hadoopといった開発向けミドルウェアとして用いられている。

モバイル(Java Micro Edition , Android)

モバイル向けアプリの分野、特に携帯電話では他に選択肢がないという理由で機制限つきのJavaが使われている(iアプリオープンアプリMIDPなど)

これらはまとめて「Java Micro Edition」と言われてはいるものの、「標準仕様」といったものはなく、それそれのキャリアに合わせた制作が必要なためコストが嵩むことが問題視されていた。

近年ではスマートフォンとなったことでAndroidアプリの開発用に使われている。ただし、iPhoneのほうはJavaで開発するのは非現実的な状況なので、皮なことに両対応したい場合にはJavaは使いづらく、結局前述の問題は何も解決されていない。

なおAndroidに使われている仮想マシン(DalvikVM)はJavaVMと異なるバイトコードで動くため正式には「Java」とはいえない。言としての互換性の上ではAndroid環境は一部を除きJava Standard Editionに準拠している。このため、「Java Micro Edition」にあった「あのライブラリがない」といったことが少ないのだが、それゆえにかどうかは知らないがDalvikVMに関してJavaの権利を持っているオラクルから訴えを起こされており、現在係争中である。

その他、及びすべての環境に共通すること(Java Standard Edition)

 ハードウェアの向上も手伝い、図形・文字描画機の向上、GUI表現の拡インストールの簡素化、などがされたため、クロスラットフォームなデスクトップアプリケーション開発への対応において有用性を高められている。

 こういった機を有効活用した、ニコニコ内で有名なソフトウェアとしてはJavieMikuMikuStudioが挙げられる。

開発

文法

C/C++系の文法である。シンタックスシュガーが少ないのが特徴でJava省略しない文化が表れている。

はプリミティ、列挙Java 5から導入)、参照に分かれ、プリミティにはboolean, char, int, short, long, float, doubleがある。

開発環境

Javaの統合開発環境(IDE)としてはEclipseNetBeansがよく知られている。

EclipseIBMが、NetBeansはサン・マイクロシステムズ(現オラクル)が開発の体となって開発したソフトウェアで、どちらもフリーかつオープンソースである。
これらは開発の支援を多く備え、生産性向上にも役立つIDEとして有名である。

特にEclipseJavaに限らずクロスラットフォームな開発環境においては標準的な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 PluginJavaFXといったFlashと競合する技術を発表してはいるが、今のところ新規ユーザの獲得には至っていない。

関連動画

関連商品

関連コミュニティ

関連項目


【スポンサーリンク】

携帯版URL:
http://dic.nicomoba.jp/k/a/java
ページ番号: 194512 リビジョン番号: 1470580
読み:ジャバ
初版作成日: 08/06/03 01:23 ◆ 最終更新日: 12/03/15 20:00
編集内容についての説明/コメント: もうちょっと修正
記事編集 / 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ


JavaTEA

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Javaについて語るスレ

77 : ななしのよっしん :2013/09/15(日) 17:22:26 ID: rw1X7i2GQp
大規模エンタープライズ用途として耐えうるサーバサイドモジュールが作れて
分散トラザクションも考慮するとなると、選択肢Javaしかない
飛ぶを落とす勢いのAndroidJava
小規模のWeb系もJSP+Servletはなんだかんだでまだまだ元気

そりゃ単純に言としては、良いとこ取りの後続言の方がブラッシュアップされてるし
日曜プログラミングする分には確実にもっと生産性の高い言がいくらでもあるけど
Javaは今のところ環境的に、構造的に隙が
だから息が長いし、TwitterRubyからJava乗り換え
検索レスポンスタイムも1/3に善できた
78 : ななしのよっしん :2013/09/17(火) 22:16:36 ID: 1fCfGro1I4
JavaというよりJavaVM様々だな。
79 : ななしのよっしん :2013/11/30(土) 13:10:42 ID: y9E2gQEqao
JavaとはJavaVMの有用性を示すために作られたデモ用の言です
80 : ななしのよっしん :2014/02/24(月) 23:24:29 ID: 1fCfGro1I4
組み込みでも頑って欲しい。
81 : ななしのよっしん :2014/03/26(水) 22:34:19 ID: sdLuPDo/gx
 あなたと JAVA
 今すぐダウンロー
 ド

[無料Javaダウンロード]
82 : ななしのよっしん :2014/05/05(月) 23:34:20 ID: Br9jGQfkFC
Javaインストール(更新)が何度も失敗する場合はどうしたらいいんでしょうか・・・過去のやつとかを全てアンインストールすればいいんでしょうか
83 : ななしのよっしん :2014/05/10(土) 23:55:10 ID: mCT9+08uH6
>>77
Twitter乗り換えた先の言JavaではなくてScalaな。Java VMで動くからって、ごっちゃにしたらかわいそうだ。
84 : ななしのよっしん :2014/07/29(火) 21:13:12 ID: CV6lG4yHl9
Java2~Java8共通のtypo
java.lang.Thread("デーモンスレッドになます"); // at javadoc
85 : ななしのよっしん :2014/08/05(火) 09:13:54 ID: kaYHfPqNnS
askが付いてきてる・・・
86 : ななしのよっしん :2014/08/25(月) 08:12:21 ID: OuzmzQnqyE
今更ながらjavaの古いバージョンアンインストールしないとセキュリティが脆くなるということを知った
割と頻繁にアップデートしてるから大丈夫だろうと思っていたけど、思わぬ落とし穴もあるもんだな
グニャラくんの本が出ました!
  JASRAC許諾番号: 9011622001Y31015