理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
JPAを利用した RESTful Webサービスの開発
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
WebサービスII (第10回) 2007年11月28日 植田龍男.
Servlet J2EE I 第8回 /
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
WebサービスII (第8回) 2007年11月14日 植田龍男.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
AspectScope によるアスペクトとクラスのつながりの視覚化
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングと Dependency Injection の融合
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
データベースを使ったプログラミング ~JDBCを使ってみよう~
アプリケーションに応じた AOP による高速化が可能な 永続システム
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
複数個のJoinpointの集合を 対象としたPointcutを 記述可能なアスペクト指向言語
Webアプリケーションの方向性 データベース論 第13回.
アスペクト指向言語による 例外処理の記述方法の改善
Javaによる Webアプリケーション入門 第6回
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
AspectScope による アスペクト指向プログラ ミングの支援
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
Jakarta Struts (2) ソフトウェア特論 第11回.
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
既存Javaプログラム向け 分散化支援システムの開発
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
アスペクト指向を利用した永続オブジェクト・アクセスの高速化
Javaによる Webアプリケーション入門 第11回
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
アスペクト指向言語のための 独立性の高いパッケージシステム
アプリケーション依存の先読みが可能なO/Rマッピングツール
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
分散 Java プログラムのための アスペクト指向言語
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
IDE を活用した言語機構に頼らないコード再利用のためのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
Javaによる Webアプリケーション入門 第8回
Javaによる Webアプリケーション入門 第4回
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
クラスの追加 メソッドの追加 TestCaseの追加 Test Methodの追加.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾 永続システムのための アスペクト指向言語 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾

典型的なWEBアプリケーション インターネット掲示板 プログラムに関する部分 : データベースに関する部分 Servlet, Struts, JSP ( これらのコンテナとしてtomcat ) データベースに関する部分 リレーショナルデータベース, 永続クラス name : varchar(100) content : text WEBブラウザ ActionServlet(コントローラ) Index01Action.java 処理を記述 req.setAttribute (“name”, “Taro”); 永続クラス(モデル) String name; String content; // getter & setter <!– index01.jsp --> <html> …${name} </html> 一貫性を 保つ必要が ある JSP(ビュー) WEBコンテナ

モジュール化が困難 拡張機能をモジュールとして追加したい e.g. メールアドレス欄を追加 オブジェクト指向では困難 既存のAOPでは不十分 Actionクラスなどあちこちの変更が必要 既存のAOPでは不十分 別途データベースに関する部分の編集が必要 post name : varchar(100) content : text address : varchar(200) Index01Action.java Index02Action.java Map に name, content 情報を入れる (表示部分で利用) address も入れる データベースに 保存するもの (name, content)を、 Map に入れる address も入れる String name; String content; String address; Post.java ・・・

提案: 永続システムのためのアスペクト指向言語 データベースにまたがる関心事もモジュール化可能 GluonJ と AspectualStore を拡張して実現 ウィーブ時にデータベーススキーマの変更を行う ユーザはデータベーススキーマを変更する必要なし Ant タスクによる実行時前の織り込みをサポート post (データ ベース) 既存の アスペクト 指向言語で モジュール化 できる範囲 Index01 Action Index02 Action 本来 モジュール化 したい部分 Post (永続 クラス)

アドレス欄を追加するアスペクト post @Glue public class PostGlue { 永続クラス name : varchar(100) content : text address : varchar(200) post 永続クラス @Glue public class PostGlue { @Refine @PersistClass static class Post extends Post{ @Type(length = 200, fixed = false) private String address; … // setter & getter } // Action の方も変更 Post クラスに Addressフィールドを 追加 自動的に データベースの 変更を行う Post.java データベースの型の指定方法は三通り アノテーションをつけない場合 Type アノテーションをつける場合 SqlType アノテーションをつける場合 private String name; private String content; private String address;

全体の処理の流れ 1.Aspect 記述 2. データベーススキーマを変更 3. Weave (GluonJ ) カラム追加情報 管理用テーブル Javac (コンパイル) <本システム> application Class file DB Javassist (追加フィールド の取り出し) JDBC (DB 変更) GluonJ (weave) 2. データベーススキーマを変更 カラムの追加情報は専用のテーブルを作り管理 Weave : カラムを追加 Unweave: カラムを削除 3. Weave (GluonJ ) 永続クラスに対しては SQL 発行処理を追加 Javassist

データベーススキーマの変更方法 ユーザの用途に応じて選択可能 既存のテーブルにカラムを追加 アンウィーブ時にはカラムを削除 テーブル追加に比べて実行速度が速いと考えられる 既存のテーブルとは違うテーブルを作り、カラムを追加 (実装中) アンウィーブ時にデータを残す SQL 文を変更する必要あり => カラム追加に比べて実行速度が遅いと考えられる

デモ インターネット掲示板 アドレス欄を追加するモジュールをAspectQのアスペクトとして実装 ウィーブ・アンウィーブで容易に抜き差し可能 自動的に DB にも反映

関連研究 既存のアスペクト指向言語 (GluonJ, AspectJ 等) XDoclet, hbm2ddl + 既存のアスペクト指向言語 データベースまでを含む関心事はモジュール化不可能 XDoclet, hbm2ddl + 既存のアスペクト指向言語 永続クラスから XML 、XML からデータベーススキーマを作成するツール ソースコードレベルで解析(コメントを利用) ウィーブ時にソースコードを変更する必要あり ウィーブ時にコメントもコピーする必要あり

まとめと今後の課題 永続システムに対応したアスペクト指向言語 今後の課題 データベーススキーマの自動変更(実行時前) データベースの型の指定方法は三通り アノテーションなし、Typeアノテーション、SqlTypeアノテーション データベーススキーマの変更方法 既存のテーブルにカラムを追加 既存のテーブルとは別テーブルを作成しカラムを追加 実行時前の織り込みをサポート 全体で2500行 今後の課題 既存のテーブルとは違うテーブルを作成する場合