Date: Thu, 5 Mar 98 19:52:45 JST From: SHUDOH Kazuyuki Subject: [JavaHouse-Brewers:15730] Re: Kafka To: java-house-brewers at center.nitech.ac.jp (JavaHouse Brewers ML) Message-Id: <199803051054.TAA01348@cafe.olu.info.waseda.ac.jp> 首藤です。 若松さん wrote: 若松> 富士通が開発したエージェントシステムでKafkaというのありますよね. 若松> ある雑誌に「KafkaではJavaのクラスローダの機能を拡張して,動的にクラス 若松> のメソッドを入れ替えられる.」とありました. この文章通りのことができるとは考えにくいです。 記事を書いた方が何か誤解されているのではないでしょうか。 私の誤解でしたらすみません。 Kafka のページ(*)や以下を読んで判断して下さいませ。 (*) http://www.fujitsu.co.jp/hypertext/free/kafka/jp/ まず、クラスローダがいったんロードしたクラス定義をロード し直すことはできません。できてはまずいのです。 もしロードし直しが可能だったら、と考察すればわかります。 ただ、見かけ上クラスのロードし直しを実現しているシステムはあります。 ロードし直しするときは、古いクラスローダを捨ててしまうのです。 The Java-Apache Project http://java.apache.org/ Kafka が同じ事をしている可能性はあります。 メソッドのすげかえは、仮に実現しようとするならば、 native methods でかなりトリッキーなことをしなければなりません。 Kafka はすべてが Java で記述されています。 なので、メソッドの入れかえは不可能です。 私が知る Kafka の feature は、次の通りです。 #もちろん Kafka の機能がこれだけだというわけではありません。 agent の動作を Action という抽象クラスのサブクラスとして記述。 定義したアクションに対して次のことが可能 アクセス制限を施す アクションを入れかえる デザインパターンの用語ではコマンドパターンというのでしょうか。 挙動を、メソッドではなくて *クラスとして* 記述、というのは 私にとってはどうもすっきりしません… ごく限られた目的の挙動を記述する枠として抽象クラスやイン タフェースが用意されている、というのなら気にならないのですが、 agent の動作には様々な目的があって定型ではないので。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp