アスペクト指向の概念のコメント欄より。
リスナーの所を読んでみました。C#から入った私から見るとjavaの考えるイベントの仕組みは確かに面倒そうに感じました。でもいまどきならIDEでイベントなんか組み立てるんでしょうからコードの冗長なんて些細な問題なのかなあとも思いました。
そういえばリンク先を読んでいて思い出したのですが何かの本でMicrosoftとSunでこのイベントモデルの共通化の協議が行われたと書いてあったんです。このときSunがどうしてもMicrosoftのdelegateによるイベントモデルを受け入れなかったとか。うちにある本のどれかに書いてあったんですが・・・どこに書いてあったか忘れてしまいました><
凪瀬さんご存知でしたらネタとかにして教えてくれるとうれしいです。
この話は私は聞いたことがないのですが、MicrosoftとSunでイベントモデルで対話をするとしたら、
Java1.1ぐらいの時代(1997年)なのではないでしょうか。
当時、Microsoftが出したVisual J++ (Java1.1のエディタ)は曰くつきの代物で、
Javaでコードを書いてWindowsのネイティブアプリケーションを生成できるというものでした。
この当時、要するにMicrosoftはWindows開発のための次世代開発言語としてJavaに狙いをつけていた。
だから、Windows開発のために都合のよいイベントモデルとなるような提案をしていたとしても不思議はありません。
Javaの仕様策定のプロセスは時代で変わっていますが、当時だとSunが主導で大手からの申し入れを協議していたのかな?
このへんは調べてみないと分からないのですが、現在のJavaほどオープンなプロセスではなかったような。
MicrosoftがSunに対してJavaの仕様で提案するならこういうシチュエーションではないでしょうか。
結局、Visual J++ のWindowsネイティブアプリ作成の機能はSunの逆鱗に触れ、訴訟にまで発展し、
MicrosoftはJava互換を名乗れなくなりました。
Javaを名乗るツールで作ったものがJavaのVMで動かないというのはJavaの
「Write once, run anywhere」という精神に反するもので、Javaコミュニティには受け入れられなかったのですね。
結局、Javaが使えなくなったMicrosoftはC#を開発することになるわけですね。
C#はMicrosoftが独断で好き勝手に機能を盛り込めますから、C++にあった、
しかしJavaでは敢えて削られた機能もてんこ盛りになっている、という印象です。
Javaはその設計時に演算子オーバーロードは敢えて外しているわけです。
delegateを受け入れなかったのはその拡張による煩雑さを嫌ったからではないでしょうか。
投稿日時 : 2008年3月25日 17:21