jfician2
Java for Informatician #2
今度はJavaについて話をしよう。
情報オリンピックに関してはまたあとで話すとして、今度はJavaについて述べていこう。
「自分はJavaを愛でて撫でて磨いて崇めているので、Javaの全てを俺は知っている!」という人は#3に行っちまって結構。
プログラミングって何よ。
すまないのだけれども、現状ではそこまでは相手にしていられないので、
猫わか
なり何なりのページを参照。
じゃあJavaってどうなのよ。
まずどこから説明しようか。
-
Javaはプログラミング言語の一種。
そりゃそうだよとかいったら負け。
-
Javaは中間コードに変換する方式を採っている。
これは説明がいるかもしれない。
要するに、書いたソースコードをコンパイルするんだけど、コンパイルしてできたファイルは中間コードっていって、何か実在するCPUの機械語にはなっていない。
だから、その実行ファイルを受け取ったユーザーは、それを「仮想マシン」というプログラムの上で動かす。
仮想マシンはインタープリタ(命令ごとに読んで実行する)かもしれないし、JITコンパイラ(中間コードをユーザー側で、実行前に高速コンパイルする)かもしれない。
-
Javaは、静的に型付けされたなかなかにStrictなプログラミング言語である。
Strictは厳密なとかそういう意味ね。
つまり、ちょっと厳しいけど、間違ったコードを書いても発見しやすいって事。
一番ありがちな例で行くと、宣言されていない変数とかを使えるか否かってことなんだけど、とにかく数ある言語のなかでは厳しい部類に属すると考えればよろし。
-
Javaは、言語仕様や文法が最小限に抑えられていて、わかりやすい。
ここはC#との非常に大きな違いね。
C#は、まあMicrosoftが作っただけあって、経験を積んでプログラムを書き慣れた人が、スムーズに書けるようにいろんな機能がある。
例えば、わからない人は無視していいけど、
C#にはclassとstructの二種類のtypeがある。どちらも「複数の変数をまとめる」というような意味では同じであるが、structは小さいデータでは有効とか、classはnullがあるとか、classは参照だから書き換えた内容を共有できるとか微妙な違いがある。
いっぽうJavaにはclassしかない。
同じことをするときは自然と同じ方法に帰結する
のだ。
これは教育用として優れているということである。
-
Javaは、公式のコンパイラがフリーで提供されていて、
オープンソース
な開発環境「
Eclipse
」も広く普及している。
Visual Studio
とか高い(ただし学生なら5000円程度の
安価
で入手できる)から。あと
SharpDevelop
とかまだまだ発展途上だから。
正直これは大きいべ。
なんだかわからないものに何千円も投資したくはないわな。
-
Javaは、最近ソースコードが公開(GPLで!)されたから、デバッグのときとか時たま便利。
これはたいしたことじゃないか。
最近はC#とか.NETのソースも一部公開されてるみたいだけど。
-
Javaは、非常に使いやすいライブラリが附属してる。
C++とかC#とかは(アルゴリズムとか関連は特に)同じくらい充実してるけどさ。
C++と比較すると、GUIライブラリの存在は大きい。(Java for Informaticianでは関係ないけど)
下手に
Gtk+
とか;
Qt
とか使うとGPL汚染とかするからそこはいいよ。もちろんJavaでも
SWT
使ったらCPL汚染だけどね。
-
Javaは、多くの環境でVM(仮想マシン)が提供されていて、マルチプラットフォームへの対応度ではおそらく一番の言語である。
Linuxユーザー、Solarisユーザー、Mac OSユーザーの人々!そこは本当に大事ですよ。
もうWINEが落ちまくる経験とかしたくないから。
列挙しすぎて引くとか言わない。熱狂しすぎて嘘あるとか言わない。わかってるから。わかってるからorz