Step 1: Java Java Java
このページは、Java 初心者の美樹ちゃんが、一人前の
Java プログラマーに育っていくのを目的としたページです。なんてね!
さてさて、Java 講座の第1回目の始まりだけど、
こういうものの始まりってやっぱり Java の生い立ちとか、特徴なんかを書いた方がいいのかな?
エッ何もそこから始めなくても...
いいからいいから能書きがあったほうがそれらしいじゃん。(じゃんを使うと関西生まれ ss
のお兄ちゃんには抵抗があって山びこのように じゃん じゃん 反響しちゃうね!)
美樹ちゃんは C++は知っているよね。
なんとなく
Javaは C++ からポインタ、多次元の配列、構造体、共用体を取ったようなものと思えばいいかな。#include,
#defineといったマクロも無いね。それでは本編の始まりだ!軽く構文から説明しよう!
エッもう終わり?Javaはオブジェクト指向言語だとかマルチプラットフォーム対応とかは?
だって能書き聞くのいやそうだったから簡単にまとめたんだけど...
でもやっぱり...
じゃあ、一応真面目に説明するね!
Java は、Sun Microsystemsの
James Gosling が中心になって開発されたものなんだ。彼も、いろいろなプロジェクト(Open Lookなど)を行ってきたんだけど、全てお流れになって可哀相だったんだ、けどやっと
Java で日の目をみたってとこかな。ここでは、Java誕生のいきさつまでは書かないので知りたかったら適当な本を読んでね。
Javaが広まったのは、Web上のコンテンツを華やかにすることが始まりのようなイメージが強いけど、注目される理由はもっともっと別のところにあるんだ。
まず、美樹ちゃんが言ったようにマルチプラットフォームに対応しているということ。どういう事かを簡単に説明すると、
通常のアプリケーションというのは、同じ動作をするものでも上の図のようにOS,
CPU(異なるプラットフォーム)ごとにプログラムを用意しなくてはならない。この開発方法だと、プログラムのソースはある程度共通にできるとしても、グラフィカル・ユーザー・インターフェース(GUI)はそれぞれのプラットフォームごとに用意しなくてはならなかったり、デバッグもそれぞれで行わなくてはならないなど、開発コストや時間、配付方法を考えただけでもたいへんなものになってしまう。
しかし、Javaは右の図のように Java
VM(バーチャルマシン)を利用することでそれらの問題を解決しているんだ。Javaのアプリケーションは、JavaコンパイラによってJava バイトコードとよばれるマシンに依存しないバイナリーコードにコンパイルされ、 Java VMによって実行されるんだ。この Java VMがプラットフォームごとの違いを吸収するので、Java
VMが動作する環境ならどこでも、Javaアプリケーションは動くことになる。開発者は Java VM をターゲットにしたアプリケーションを一種類作るだけでよくなるわけさ。これが、マルチプラットフォームに対応しているということなんだ。
さらに、Java が凄いのは GUIツール(部品)も提供していることなんだ。イメージや 2D、3Dを扱うツールも提供しているので、GUIに依存した現在のアプリケーション開発もなんの不自由なく作れるっていうわけさ!
開発が楽になるのは分るけど、Javaのアプリケーションって実行速度が遅くない?
さすが美樹ちゃん、インタプリタを良く使っているだけあって、この疑問がすぐにわいたね!
そう、Javaのアプリケーションは、それぞれのプラットフォーム上にある Java VM が Java バイトコードをインタプリトしているから、他のコンパイル言語で作られたアプリケーションより実行速度が遅いんだ。でも、それを解決するために、ジャストインタイム
(JIT)と呼ばれる、Javaバイトコードをプラットフォーム依存のマシン語に翻訳してから実行する方法が考えられたんだ。これによって、他のコンパイル言語にひけをとらない速度で
Javaアプリケーションが実行できるようになったんだ。
オブジェクト指向.......この言葉を説明するにはもう少しスペースが必要なので別コラムとしてそのうち説明するね。では、なぜ
Javaがオブジェクト指向言語だから良いのかとういところだけど、オブジェクト指向のプログラムの拡張と再利用性を高めるという概念を利用しているところなんだ。例えば、C言語は関数の集まりであるライブラリという形でいろいろな部品を提供しているけど、再利用性があまり考慮されていない。同じような機能の関数はあるんだけどちょっと機能が物足りないような場合、既存の関数を利用するにしても、新たに物足りない機能を追加した関数を作らなくてはならない。しかし、Javaでは、既存の機能を継承し新しい機能のみを実現すればよい。このことは、目的の機能作成に集中できることやプログラミングおよびデバッグする上で十分に時間を節約できるということになる。
Javaはこの他に、プログラミングの手助けとなるいろいろな特徴をもっているんだ。
ポインタが無いのはちょっとふれたけど、コンパイル時の強力な型チェック、不要になったメモリ領域を自動で解放するガーベージコレクション (GC) といった特徴がある。このことだけでも、Javaをプログラミング言語として使うに値するかな?というのも、バグというのはほとんどが先にあげたメモリ管理の難しさから発生している。Java
はそのメモリ管理をあまりプログラマが意識しなくてよいから。でも、言語として利用するだけではMicrosoftになっちゃうよ!
アプリケーション実行時のことを考えてみても、実行時に Java VM が、バイトコードのアクセスするメモリ領域を検証しているので、意図しないエラーによって別のメモリ領域を書き換える事が無い。このことは、悪意もって作られたバイトコードが悪さをすることを避けられるので高いセキュリティを保っていることになる。
また、プログラミングに必要な部品(クラス)も豊富に提供されていることや国際化対応、Multi-Threadに対応であることも利点の一つにあげられる。Cや
C++とのインターフェースも提供されているんだ(セキュリティーの関係で制限はあるけれど)。
第一回目はこんなところかな?
次回は、プログラミングをする前に必要な、Javaの文法とツール(コンパイラやインタプリタ)の説明をするね。