暗黒面に堕ちたJava

昨日は「新キッズ・ウォー」のおはなしがちょこっとだけ出てきたので、 "war" つながりで.warファイルのコトから始めたい。といっても技術的な内容じゃなくて、「.warファイル」ってどう読むか、っていうだけだ。
.warファイルってのはJava EEな人たちにはおなじみのファイル形式で、ココではとりあえず「Javaで動的なWebページをつくるときに使うものだ」くらいの理解で十分だ。まぁわたしもよく理解してないし、興味もないので別にどうでもいいのだ。もっと詳しく知りたい人は、仕様書を読むなりぐぐるなり詳しい人に聞くなりしてもらいたい。クラスローダがどうこうとか意味不明なおはなしが出てきて、きっとうんざりすると思う。
「.warファイル」ってどう読むかだけど、別にどう読もうが人の勝手なワケだし、意志が通じさえすればいいんだから、 "TeX" を「てっく」と読むか「てふ」と読むかと同様、どうでもいいかと思うかもしれない。でも、わたしなんて例えば "Linux" を「りぬくす」と読みたいのに、まわりの人がみんな「『りなっくす』だろ、あんぽんたん。」みたいに言うから仕方なく合わせてるワケだし、こんなハズかしい思いをしないためにもけっこう重要だったりするのだ。そうそう、サムおじさんは「らいなっくす」って読んでるらしいよ。
えぇと…「.warファイル」の読み方だった。わたしの大っ嫌い! な雑誌に "JavaWorld" っていうのがあるんだけど、だいぶむかしの記事のどっかにちょこっと書いてあった。だいたいこんな感じで。

  • 「.warファイル」は「(どっと)うぉーふぁいる」って読むよ!
  • まさか「わーふぁいる」なんて読んでないよね?
  • "STAR WARS" は「すたーうぉーず」であって、「すたーわーず」じゃないワケだし。
  • サムおじさんも「うぉーふぁいる」って読んでるんだから、みんなも合わせようねっ!

いや、わたしは「わーふぁいる」って読んでるんですけど…。
「うぉーふぁいる」だったら「戦争ファイル」みたいでとってもイヤだし、そもそも「.warファイル」の "war" ってのは "Web ARchive" の略なんだから、「うぇぶあーかいぶ」→「うあー」→「わー」でいいじゃないかって思うケド、どう? だいたい戦争好きなサムおじさんの言い方にいちいち合わせる必要なんてないし、日本人が中途半端な英語でウォーウォー言ってたら、「おい、ファッキンジャップがまた戦争しかけてくるんじゃないか?」なんて誤解されて、その会話を聞いてた日本人の偉いひとが「ファッキンジャップくらいわかんだよバカヤロー!」なんてドンパチ始めたら国際問題につながりかねないワケだし。
それならいっそ、「『戦争』の "war" と同じ読み方はやめて、平和的に『わー』って読みません?」って提案して、「さすがは平和ボケ、じゃなくて平和を愛する日本人、考え方からして違う…感服いたしたっ。」と言わせてやろう。そしたらアナキン・スカイウォーカーさんだってフォースの平和利用を考えてくれると思うのだ。
さて。ついでなんでJavaについてもちょこっとだけ書いておきたい。Javaが初めて一般に公開されたころ、その言語仕様は簡単で覚えやすかった。ついでにクラスライブラリも簡単で貧弱だった。クラスライブラリのほうは時間とともに充実していき、いまでは関連技術もバカみたいに増えちゃったけど、言語仕様はあんまり変わらなかった。だから「Javaはいちおう使えます」って人は比較的短時間で養成できるケド、それだけじゃ使いモノにならなくて、関連技術を理解して使いこなせるようになるまでがメチャクチャ大変だ。
そんななか、マイクロソフトJavaを滅ぼすべく新たな言語を密かに開発し、これをC#と名付けた。後発というコトもあってJavaにはない便利な機能がいくつかあり、例えばXML Webサービスとかはかなり簡単に実現できるらしい(よく知らない)。それに圧倒的な力をもつマイクロソフトが背後にいるもんだから、Javaにとってはかなりの脅威だ。
このC#の登場でJavaな人たちはあせったのかもしれない。J2SE 5.0と呼ばれるバージョンで、ついに言語仕様の大幅な変更を行ったのだ。どんな変更なのかを一言で表すと、「理解してる人は簡単に開発できる」ってトコじゃなかろうか。理解してない人にとっては覚えなきゃいけないコトが少し増えただけで、しかも多用すると性能が悪くなるような新機能もあったりするし、悪夢は減ったんだか増えたんだかよくわかんない。
また、「簡単に開発できる」ってのは「何かあったときの原因究明が難しくなる」ってコトにだいたい等しいワケで、決して「すべての開発者にやさしい」ってコトではない。そんなのはお構いなしに、J2SE 5.0ではブラックボックス化される処理が増えるようだ…いまや、Javaは暗黒面に堕ちた。
それに、J2SE 5.0で行われた言語仕様の変更は、C++のテンプレートとC#をマネしただけのようにもみえちゃったりする。C#のソースファイルの拡張子ってたしか ".cs" だから、日本語的には「シス」に似ている*1。やっぱりJavaは暗黒面に…(しつこい)。

*1:英語的には "Sith" だから、あまり似てない。