slide1
Download
Skip this Video
Download Presentation
既存 Java プログラムの バイトコード変換による 機能分散

Loading in 2 Seconds...

play fullscreen
1 / 21

既存 Java プログラムの バイトコード変換による 機能分散 - PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on

既存 Java プログラムの バイトコード変換による 機能分散. 筑波大学 立堀道昭 佐々木俊幸 千葉滋 板野肯三. たつ ぼり. ソフトウェアの分散実行. GUI とアプリケーション・ロジックの分離 「PC anywhere」 「ゼロ・アドミニストレーション」 「シン・クライアント」 管理コストの削減 安価なクライアント環境を活用できるよう. ソフトウェアの自動分散化. 自動化による開発コスト削減 既存の環境(全自動の遠隔表示) X Window System、VNC、Rawt [IBM Haifa 98] 既存の(半自動)分散化支援ツール

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 既存 Java プログラムの バイトコード変換による 機能分散' - michel


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

既存Javaプログラムのバイトコード変換による機能分散既存Javaプログラムのバイトコード変換による機能分散

筑波大学

立堀道昭

佐々木俊幸 千葉滋 板野肯三

たつ ぼり

JSSST SPA 2001, Kyoto

slide2
ソフトウェアの分散実行

GUI とアプリケーション・ロジックの分離

「PC anywhere」

「ゼロ・アドミニストレーション」

「シン・クライアント」

  • 管理コストの削減
  • 安価なクライアント環境を活用できるよう

JSSST SPA 2001, Kyoto

slide3
ソフトウェアの自動分散化
  • 自動化による開発コスト削減
  • 既存の環境(全自動の遠隔表示)
    • X Window System、VNC、Rawt[IBM Haifa 98]
  • 既存の(半自動)分散化支援ツール
    • JavaRMI、HORB、ObjectSpace、…
    • Emerald[Black87]、”remotenew”[Nagaratnam96]、JavaParty[Philippen99]、…

JSSST SPA 2001, Kyoto

x window
X Window
  • Xlib ライブラリレベルで分散化
    • 低レベルな命令が大量にネットワークを飛び交う

マウスが動いた

マウスボタン押された

Xlib

マウスボタン離された

ユーザプログラム

線を書け

JSSST SPA 2001, Kyoto

slide5
ORBによる手動(半自動)変換
  • ユーザプログラムを変更
    • 応答性能のよい遠隔表示が可能

ORB

ライブラリ

ウィンドウ内でクリックあり

ユーザプログラム

ユーザプログラム

内部ウィンドウ表示

JSSST SPA 2001, Kyoto

slide6
既存の分散化手法
  • X Window
    • ライブラリ・レベルの分散化
      • 完全自動だが遅い
  • ORB
    • プログラム全体を手で分割して分散化
      • 速いが、開発に余分な工数が必要

XProtocol

ユーザプログラム

GUIモジュール

ユーザプログラム

JSSST SPA 2001, Kyoto

addistant
提案するシステムAddistant
  • より自動化されたORB
    • プログラム全体を自動変更して分散化
    • 開発者はプログラムを直接いじる必要はない
  • 現実的なシステムにむけて
    • 実用的な Swing アプリケーションにも対応
    • 既存の Java 仮想機械 (JVM) の利用
    • バイトコード変換
    • 開発者による分散化の指示の簡素化

JSSST SPA 2001, Kyoto

addistant1
Addistant の基本設計
  • クラスローダによるバイトコード変換
    • バイトコード変換にはJavassist[Chiba00] を利用
  • クラス単位でインスタンスの配置方針を指示
    • 開発者がポリシーファイルに宣言的記述
    • 例: GUI のクラスはあちら、その他のユーザクラスはこちら

JSSST SPA 2001, Kyoto

slide9
現実的なシステムに向けて
  • プロキシ・マスタ方式の限界
    • 遠隔オブジェクト(マスタ)に対応して、手元では代理のオブジェクト(プロキシ)を用いる
    • Java RMI など、多くのORB で使われている方式

しかし、既存の ORB の実装法をそのまま適用は無理…

メソッド呼び出し

プロキシ

マスタ

ネットワーク通信

JSSST SPA 2001, Kyoto

slide10
システム・クラスの存在
  • プロキシ・マスタ方式
    • クラス定義またはクラスを使う側のコードの変更が必要
    • システムクラスの場合バイトコード変換禁止
    • 例:プロキシクラスをサブクラスとする実装法
      • 元のクラスが final クラスのときは使えない、など

JSSST SPA 2001, Kyoto

addistant2
Addistant の方式
  • クラス毎に異なる実装法で遠隔参照を実現
    • 実装法により、変更が必要なコードの範囲が異なる
    • システムクラスの変更を避けるように実装法を選択
    • “長いものには巻かれろ”法
  • XML風のポリシーファイルで宣言的に指定
    • 「置き換え」、「名前変更」、「サブクラス」、「複製」

JSSST SPA 2001, Kyoto

slide12

Widget

Widget

show()

show()

.. Show ..

.. Send ..

「置き換え」手法(例:ユーザクラス)
  • 対象クラスをプロキシに置き換え
    • 元のクラスを変更できる場合
    • ひとつのJVM上には、プロキシかマスタのどちらか一方のみ

Widget w = new Widget();

w.show();

分散化

置き換える

JSSST SPA 2001, Kyoto

java awt window

Widget

WidgetProxy

show()

show()

.. Show ..

.. Send ..

「名前変更」手法(例:java.awt.Window)
  • コード中に現れた対象クラス名をプロキシクラスのものに変更
    • 元のクラスを変更できない場合
    • 使っている側のコードを変更する

Widget w = new Widget();

w.show();

分散化

WidgetProxy w

= new WidgetProxy();

JSSST SPA 2001, Kyoto

java util vector

Widget

WidgetProxy

show()

show()

.. Send ..

.. Show ..

「サブクラス」手法(例:java.util.Vector)
  • 対象クラスのサブクラスとしてプロキシクラスを定義
    • 1つのJVM上にプロキシとマスタを混在させたい場合

Widget w = new Widget();

w.show();

分散化

指示の場合によっては

Widget w

= new WidgetProxy();

JSSST SPA 2001, Kyoto

java lang string
「複製」手法(例:java.lang.String)
  • プロキシクラスは作らず、遠隔メソッド呼び出しの際、オブジェクトを移送して複製を渡す
    • Shallow copy
  • 変則版 - 「書き戻し複製」手法
    • 配列オブジェクトに用いる

byte[] buf = …;istream.read(buf);

JSSST SPA 2001, Kyoto

window
応答性能の実験クリック –Window表示
  • クリックしてから内部ウインドウが完全に表示されるまで
    • スタートアップホスト
      • Sparc 440MHz
    • GUI ホスト
      • PentiumII 500MHz
    • ネットワーク
      • 10Base-T Half
      • 100Base-TX Full

JSSST SPA 2001, Kyoto

window1
応答性能の実験クリック –Window表示
  • クリックしてから内部ウインドウが完全に表示されるまで
    • スタートアップホスト
      • Sparc 440MHz
    • GUI ホスト
      • PentiumII 500MHz
    • ネットワーク
      • 10Base-T Half
      • 100Base-TX Full

JSSST SPA 2001, Kyoto

swing
分散 Swing アプリケーション
  • ポリシーファイル

<policy>

<importproxy="rename" from="display">

[email protected] [email protected] .. </import>

<importproxy="rename" from="application">

[email protected][InputStream|OutputStream|..]

[email protected]* </import>

<importproxy="subclass">

[email protected][AbstractCollection|..] </import>

<importproxy="writeBackCopy">

[email protected] </import>

<importproxy="replace" from="application">

[email protected] </import>

<importproxy="copy">

- </import>

</policy>

JSSST SPA 2001, Kyoto

slide19
応答性能の測定結果
  • プログラム全体の変換による速度改善
    • 応答時間(秒) (10Base-T(100Base-TX))
    • 通信量(キロバイト)

JSSST SPA 2001, Kyoto

slide20
まとめ
  • 透過な分散 JVM を既存の JVM を用いて構築する際に鍵となる技術
    • 既存の Java プログラムを複数のホスト上に分散させるための支援ツールAddistant を提案
  • その他の貢献
    • 分散プログラミング用の Aspect Oriented Programming ツール
    • Javassist[Chiba00] 応用のケース・スタディ

JSSST SPA 2001, Kyoto

slide21
質問・提案をどうぞ

JSSST SPA 2001, Kyoto

ad