Addistantアスペクト指向の 散プログラミング支援ツール.ppt

Addistantアスペクト指向の 散プログラミング支援ツール.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Addistantアスペクト指向の 散プログラミング支援ツール

July 26, 2001 SWoPP 2001 PRO, Okinawa Addistant:アスペクト指向の 分散プログラミング支援ツール 立堀道昭 (筑波大) 千葉滋 (東工大) 板野肯三 (筑波大) 概要 Java による分散プログラミングの 支援ツール Addistant 特に機能分散を行うプログラム開発を対象に 言語処理系と実行系で実現 既存の Java virtual machine (JVM) を活用 Addistant の特徴 アスペクト指向の導入 拡張クラスローダによる実現 分散プログラミングの障害 非分散のロジックに分散のためのコードが絡み合い各所にちらばっている Crosscutting concerns 低いモジュラリティ 分散プログラミングを難しくしているものの1つ 分散に関する事項がプログラム全体に四散しており、簡潔に記述できない 絡み合ったコードの保守?変更は困難 Crosscutting Distribution Concerns (1/2) 機能分散プログラム中、分散オブジェクトを配置するコードは散在する Crosscutting Distribution Concerns (2/2) 配置換えに伴い、散在するコードの書き換えが必要 プログラミング技法による対処の限界 Abstract Factory デザイン?パターン 常に Factory クラスを通してインスタンスを生成し、Factory のサブクラスで生成を制御 Factory method はコンテキスト分、数多く必要 生成されるクラスは共通の親をもたねばならない 提案するツール Addistant 機能分散プログラムの開発を支援 絡み合う分散配置コードの分離 抽象化による分散配置記述の簡素化 実現手段 既存の Java 仮想機械 (JVM) を利用 ソースコードの変更が不可能なクラスにも対処 Addistant の基本設計 クラス単位のインスタンスの配置方針 開発者が配置アスペクトとして宣言的記述 例: GUI のクラスはあちら、その他のユーザクラスはこちら クラスローダによるバイトコード変換 java.lang.ClassLoader のサブクラス 第三者によって提供されたソースコードのないクラスライブラリにも対応できる ロード時のバイトコード変換 与えられた配置アスペクトに従って、 Addistant の処理系が Java プログラムを 自動的に変換 Java クラス?ローダ機構を利用 JVMにクラスをロードする前にバイトコードを書き換える バイトコード変換にはJavassist[Chiba00] を 利用 分散配置アスペクト言語 独立したポリシーファイルに記述 配置クラス指定子 配置するクラスを、あるまとまりで指定できる パッケージ、サブパッケージ サブクラス ただし、重複する場合、上方の宣言が有効 現実的なシステムに向けて プロキシ?マスタ方式の限界 遠隔オブジェクト(マスタ)に対応して、手元では代理のオブジェクト(プロキシ)を用いる Java RMI など、多くのORB で使われている方式 従来の ORB の実装法をそのまま適用は無理… システム?クラスの存在 プロキシ?マスタ方式 クラス定義またはクラスを使う側の コードの変更が必要 システムクラスの場合バイトコード変換禁止 例:プロキシクラスを元のクラスの サブクラスとする実装法 元のクラスが final クラスのときは使えない、など Addistant のプロキシ実装方式 クラス毎に異なる実装法で遠隔参照を実現 実装法により、変更が必要なコードの範囲が 異なる システムクラスの変更を避けるように 実装法を選択 アスペクト言語で宣言的に指定 ?置き換え」、「名前変更」、 ?サブクラス」、?複製」 「置き換え」手法 (例:ユーザクラス) 対象クラスをプロキシに置き換え 元のクラスを変更できる場合 ひとつのJVM上には、プロキシかマスタのどちらか一方のみ 「名前変更」手法 (例:java.awt.Window) コード中に現れた対象クラス名を プロキシクラスのものに変更 元のクラスを変更できない場合 使っている側のコードを変更する 「サブクラス」手法 (例:java.util.Vector) 対象クラスのサブクラスとしてプロキシクラスを定義 1つのJVM上にプロキシとマスタを 混在させたい場合 「複製」手法 (例:java.lang.String) プロキシクラスは作らず、遠隔メソッド呼び出しの際、オブジェクトを移送して複製を渡す Shallow copy 変則版 - 「書き戻し複製」手法 配列オブジェクトに 用いる 関連研究 - AOP As

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档