(有)未来検索ブラジルが運営するあらゆる言葉についての記事を閲覧・編集したり、コメントをしたりするサイトです。

単語記事: 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
編集内容についての説明/コメント: もうちょっと修正
記事編集 / 編集履歴を閲覧 /

Javaについて語るスレ

43 : ななしのよっしん :2012/02/21(火) 23:29:15 ID: blZHskYNSq
すごく今更ながらjavaチーム開発、大規模な開発用に作られてるのを実感した。
44 : ななしのよっしん :2012/03/04(日) 16:08:29 ID: lXG3Z+B/qd
Javaと聞いてスターウォーズの某ナメクジ野郎を思い浮かべたw
45 : ななしのよっしん :2012/03/14(水) 07:16:40 ID: MNhrgDtMVQ
スマートフォンにおいては選択肢が広がったのでほとんど使われる気配が見られない。
いや、AndroidJavaなんですけど・・・
46 : mongrelP :2012/03/15(木) 01:51:27 ID: EwnGxCpgGP
Androidについて追記したりいろいろ書いた。
定番ライブラリって他に何があったっけ?
47 : ななしのよっしん :2012/03/15(木) 02:21:09 ID: Co8QpAmgre
スマホはどっちかっていうとAIRとかPhonegapとかtitaniumあたりが流じゃね?
48 : mongrelP :2012/03/15(木) 02:59:01 ID: EwnGxCpgGP
>>47
Androidは確実にJava環境が流。
クロスラットフォームなものを使っても機種依存なところで引っかかると最終的にどうしてもその部分はJavaで書かざるをえなかったりする。
速度面もまだネックなのでゲームとかだとJava+NDKじゃないとアレだとか(アリカ中の人が言ってた)。
ここらへんはiPhoneにおけるObjective-Cにも言えることだが。
49 : ななしのよっしん :2012/03/17(土) 03:52:20 ID: MNhrgDtMVQ
>>46
たった20時間で、、えらいよ君!

iPhoneは、ObjC以外でtitaniumとかも使う人増えてきた感じかな。
でもObjC+楽するための言って感じで、基本的にObjCは必須。
50 : ななしのよっしん :2012/03/17(土) 14:57:14 ID: Co8QpAmgre
モジュールのこと?
51 : ななしのよっしん :2012/04/07(土) 13:34:21 ID: DOI8PFzU/N
AndroidJava特許訴訟、OracleがGoogleの賠償提案を拒否「あまりに少ない」 - ITmedia ニュース
http://www.itmedia.co.jp/news/articles/1203/30/news049.html

> Oracleが特許侵Googleを訴えている裁判をめぐり、3月27日遅くに
>裁判所に提出された書類によると、「GoogleがOracleの特許を侵していることが
>来たる裁判で明された場合、GoogleAndroidの売り上げの一定割合を>Oracleに支払う」との
>Googleによる提案を、Oracleは「額が少なすぎる」として拒否したという。

> この訴訟は、GoogleモバイルOSAndroid」がOracleのプログラミング言語
>「java」の特許を侵しているとして、2010年にOracleがGoogleを相手取って起こしたもの。
52 : ななしのよっしん :2012/05/03(木) 23:35:12 ID: tpQfqLDs+N
Oracle死ね
ページトップへ戻る