2012/04/16

小学生からはじめるJava言語:
Javaの用途

Javaで作られたプログラムは、実際どんなところで使われているのだろうか。

WEBサーバ関係

今日の大規模なインターネットショッピングサイトや企業サイトの仕組みづくりに利用されている。Javaが数年間で一気に普及したのは、この分野の要求が大きかったため。柔軟なサーバ構築にJavaは欠かせないものとなっている。

パソコン用アプリケーション(クライアント)

パソコン上で動くアプリケーションは作れるが少数派。C++等で作られたアプリに比べ、処理速度が遅いと言われ、避けられていたようだが、最新のJava環境ではかなり高速になっている。ただJavaVM(Java仮想マシン)の起動はややもたつく。起動してしまえば、パソコンの処理速度の向上と、Java(JDK、JRE)の性能向上で、現在では、それほど問題ない速度で実行できるようだ。ただ、シビアなスピードやリアルタイム性などを求めるとC系言語にはかなわない。
またメモリ食いなのも難点。Javaアプリを起動するとどんなに小さなアプリでも、JavaVMを起動する必要があるので、少なくとも30MBぐらいは使ってしまう。小さなアプリを複数起動すると30MB X アプリ数となってしまうため、メモリの消費を減らしたい場合はJavaアプリは向かない。
Javaはバイトコードで実行するため、逆コンパイルが出来てしまうのも問題。これはソースファイルが見られてしまうことを意味する。開発ノウハウを隠したい場合は歓迎されないだろう。
ちなみにメジャーな開発言語はWindowsならVisual C++、MacならObjective-C、LinuxならC++。圧倒的にC系言語ということになる。

下はJavaで作られたアプリケーション「ImageJ」画像処理は負荷が高く処理スピードが求められるため、Javaには向かないと思われがちだが、実にキビキビした処理を実現している。Javaの特長であるプラットフォーム非依存ということでWindowsでもMacでもLinuxでも利用できるよさがある。
http://achapi2718.blogspot.jp/2011/04/imagej.html


Javaアプレット

ホームページ上で絵が動いたり、インタラクティブな仕掛けを作ることができる。Flash登場以前は目にする機会も多かったが、起動が遅いのがネックだった。現在は完全にその座をFlashに譲ってしまった。そのFlashも今後はHTML5が普及することで、存在は薄れていくと思われる。最新Javaアプレットは起動がややもたつくものの、実行速度は速く、ストレスを感じなくなっている。今後再び表舞台に立てるかどうかはクエッションだが、何よりも自由度の高さが魅力ではある。

下は自作のアコーディオン型ソフト鍵盤。音源を選択して、Applyをクリックすると、キーボードが鍵盤になります。
http://achapi2718.blogspot.jp/2010/12/java-3.html
Applet failed to run. No Java Plug-in was found.

スマートフォンや携帯端末

GoogleのAndroidの普及は目を見張るものがある。Androidのアプリ開発はJava SDKにAndroid SDKを追加することで開発できる。Android端末はJavaVMで動いているわけではないが、開発はJavaそのものと言っていい。ほかにもドコモやソフトバンクの携帯電話で一部利用できる。また、携帯電話以外でも開発できる携帯端末はいくつかある。

Android マスコット キャラクター
image/svg+xml

家電(組込)

Javaは、もともと家電用のプログラム言語として誕生した。Javaがはじめから備える非プラットフォームとネットワーク機能の充実はそのため。しかしサイクルが短く、安価に売る必要がある家電分野では、スペックを要求する汎用言語はなかなか浸透していない。現在カーナビ等、複雑な機器用にJavaが使われてはいるが、まだまだという印象だ。それでも今後ソフトウェアに依存する機器は確実に増大するため、様々なところでJavaが活用されるだろう。まだまだJavaを入れるほどではない機器が多いのも事実だが、今後、家電がネットワーク化されていくと、Javaが求められ、大きな市場になっていくと思われる。

おもちゃ

現在使われている例はほとんどないが、教育よりの玩具としてはLEGOマインドストームがある。本来はLEGO社純正のビジュアルなプログラムで動かすものだが、ユーザが独自に開発環境をいくつか作り、それが広く利用されるようなった。大学などでも教材として利用されている。開発環境の中でJavaを移植したleJOSというものがあり、制限はいろいろあるものの、純粋なJavaでプログラムを組むことができる。



Javaは、一度書けば、どこでも動く
Write Once, Run Anywhere

上記のようにJavaは、さまざまな用途、環境(PC、家電、ケータイなど)で使われている。実際の開発は環境ごとに作ることになるのだが、基本となるアルゴリズムなどは、そのまま共有することが可能。つまりプログラムの使いまわしができる部分が多い。本来環境が違えば、開発言語も違ってくるので、0から作り直す必要がある。C言語は汎用性が高い言語で、移植のしやすさが売りではあるが、開発環境はバラバラになるだろうし、プログラムに手を加えず移植すことは不可能で、細かく手直しが求められる。

小学生からはじめるJava言語 目次はこちら