>> i's SQUARE >> Javaのノウハウ >> Javaとは?

Java

Write Once, Run Anywhere


■Javaについて

 1995年5月に世の中に発表されましたが、 それまでのプログラム言語では考えられないくらいの早さで 爆発的に広まったプログラム言語です。 ちなみにJavaの名前の由来はコーヒーからで、 コーヒー豆の生産率が高いジャワ島から取ったみたいです!

 文法はC言語に似ていますが、 ポインター変数の概念がなかったり、 メモリー領域をプログラマが操作できないなど様々な違いがあります。 Javaは実際には基本データ型以外の型を持つ変数は 全てリファレンスされているため内部的にはポインタが扱われています。 また、プログラマがメモリー管理出来ない代わりに ガベージコレクション機能がサポートされています。 ガベージコレクションのアルゴリズムは一般的に、 参照カウンタを設けてマークアンドスイープ方式を併用しています。

 その他に、C++と違いクラスの多重継承が出来ない制限がありますが その代わりにインタフェースがあります。 実際、Javaのオブジェクト指向はC++よりはむしろ Smalltalkから設計されています。 また、稀にJavaとJavaScriptを混同している人がいますが、 JavaとJavaScriptは全く違う言語です。





■Javaの魅力

プラットフォームに依存しない(インタープリタ言語)
オブジェクト指向(再利用可能)
・豊富なAPI
・開発環境がフリー
・ネットワークに強い
・簡易性
などJavaの魅力はあげればきりがないくらいあります!

 このような利点から、最近ではビジネスの面でも脚光を浴びてきています。 実際、企業ではインターネットと連携しデファクト・スタンダードを利用した オープンなシステムに変わってきており、 運用・開発コストなどの総費用(TCO:Total Cost Ownership)が 大幅に押さえられるJavaが注目されています。
 具体的な一例として、Javaを利用した多階層システムを構築、 サーバーサイドで処理を行いクライアントは処理を行わずブラウザ表示のみの方法を取れば インストールのコストが削減できます。

 Javaはセキュリティ面でも信頼性が高いですし、 既存システムとの連携も容易です。 その為、既存システムがこれまで溜めてきた膨大なデータを簡単に有効活用出来ます。 また Enterprise Java Beans と言われる業務ロジックを部品にして ネットワーク環境で実行できる機能を利用し、 いくつかの安定した既存ソフトウェア製品にJavaからアクセスさせる いわゆるミドルウェアとしてのニーズも高まっています。

 Javaと他システムが連携する ネットワークコンピューティング技術 (様々なマルチプラットホーム上のコンピュータをネットワークで連携させ、 ネットワーク全体を1つのシステムとして稼動させる技術) の1つとしてCORBA/IIOPがありますが、 将来的にはプログラムの種類、コンピュータ環境に関係なく (ハード・ソフトに依存せず) 複数のプログラムが通信し合い実行する世界がくることでしょう。
 現在はネットワークコンピューティング技術を家電製品に取り組み、 家電製品全体がネットワークで繋がる技術としてJini(ジニー)が 開発されています。 Jiniの名前の由来はアラジンの魔法のランプから出てくる魔人の名前からです。


■パフォーマンス

 Javaは実行速度が遅いと言われてきましたが、 ハードウェアの進化に伴い何とか実用に耐えうる性能を発揮し 拡張機能もほぼ出揃い成熟してきています。 より高速に実行する技術としては、 JIT(Just in time compiler)やHotSpotがあります。 JITはプログラム実行前にバイトコードをネイティブコードに 変換して動作させる方法ですが、 動作自体が速くなるかわりに動作が開始するまでに時間がかかってしまう デメリットがあります。 ホットスポットは頻繁に使用する部分のみ、つまりプログラムの動作を見ながら ネイティブコードに変換したほうが極めて効率の良い部分だけ変換して高速化を図ります。 JITが常に変換(静的変換)するのに対して、ホットスポットは動作しながら変換 (動的変換)します。

 Javaは操作性についても改善されています。 以前はAWT(Abstract Window Toolkit)による基本OSが持っている部品を そのまま利用していましたが、Look and Feel (どのような環境においても同じ見た目と操作性の保証)を実現するために JFC(Java Foundation Classes)の1つであるSwingが開発されました。
 良く100%PureJavaと言った言葉を耳にしますが、 これの定義は、 特定のハードウェアや特定のOSに固有の命令コードや定数を使用しないことや JavaCoreAPIというJavaの標準プラットフォーム仕様で 定められたAPI以外のAPIを使用しないことなどです。 AWTを使用したGUIは100%PureJavaの条件を満たしませんが Swingは100%PureJavaです。 しかしながら、SwingはAWTに比べて動作が遅いデメリットがあります。 Swingがストレスを感じる事なく快適に動作するには CPUが400MHz以上の環境が必要です。


■自己啓発

 向学心のある方は、ぜひJavaプログラミングに挑戦してみてはどうでしょうか? コーダーになるときっと世界が広がりますよ。 でもプログラム言語は本来自主学習により覚えていくものです。 そのため、Java関係の教育や講習会においての学習は個人的にはあまりお勧めできません。 何しろ、プログラミングはほんの数日で身につくものではないですし、 授業料はバカ高いです!そして、その割には得るものは少ないです。 実際、本屋で学習本を買ったり、ネット上で情報収集した方がよっぽど有益です。

 僕はJava関係の本は結構いろいろと読破しましたが、 その中でも特に自己啓発に役立ち本格的にJavaを勉強したい方にお勧めの本を紹介します。
Java2プログラミング講座 ¥3,360 (税込)

 この本はJAVA初心者の方でもスムーズに学べます。 また、内容もとても充実しており基本を押さえています。 しかしプログラムを書いたことがない人や オブジェクト指向を知らないビギナーでは かなりキツイものがあるかもしれません。 でも、とりあえず、ふぁいとっ、です! プログラム言語は 繰り返しコードを書くことで自然と身につけるものですから!

 しかし、とりあえず理解より先に手っ取り早く動くものが作りたい方は、 3分で解る***とか、サルでも解る***とかみたいな本を購入してみるのも手です。 それでも前庭としてある程度の知識、 例えばアプレットとアプリケーションの違いが理解できる程度の知識を 持っている事くらいは最低限必要です。

たったのひとことが人の心に温かみを与え、
たったのひとことで人の心を傷つける。