Skip to main content
QUICK REVIEW

[論文レビュー] Support pour la reconfiguration d'implantation dans les applications a composants Java

Jakub Kornaś, Matthieu Leclercq|arXiv (Cornell University)|Nov 24, 2004
Advanced Software Engineering Methodologies参考文献 11被引用数 3
ひとこと要約

この論文は、FractalコンponentモデルのJava実装であるJuliaを拡張することで、Javaベースのコンポーネントシステムにおける動的実装再構成を可能にする新規アプローチを提示する。Javaのクラスローダー制限を、コンポーネント境界を中心に構築された任意のクラスローダー階層によって克服し、バイトコードの変更なしに複数のクラスバージョンの共存を可能にするとともに、Juliaのアーキテクチャ記述言語(ADL)とシームレスに統合される。

ABSTRACT

Nowadays, numerous component models are used for various purposes: to build applications, middleware or even operating systems. Those models commonly support structure reconfiguration, that is modification of application's architecture at runtime. On the other hand, very few allow implementation reconfiguration, that is runtime modification of the code of components building the application. In this article we present the work we performed on JULIA, a Java-based implementation of the FRACTAL component model, in order for it to support implementation reconfigurations. We show how we overcame the limitations of Java class loading mechanism to allow runtime modifications of components' implementation and interfaces. We also describe the integration of our solution with the JULIA ADL.

研究の動機と目的

  • 大多数のコンポーネントモデル、特にJavaベースのシステムにおいて、実行時における実装再構成のサポートが不足している問題に対処すること。
  • Javaの標準クラスローダー機構の根本的制限、たとえばクラスのアンロード不能性や同じクラスの複数バージョンのロード不能性を克服すること。
  • Java言語の意味論を変更せずに、実行時におけるコンポーネント実装およびインタフェースの動的更新を可能にすること。
  • 開発者が再構成ポリシーを定義できるように、Juliaのアーキテクチャ記述言語(ADL)と透明に統合すること。
  • コンポーネントレベルの再構成を柔軟かつ拡張可能に可能にするメカニズムを提供し、クラスローディングおよびアンローディングに対する細粒度の制御を可能にすること。

提案手法

  • JuliaのADLで表現された再構成要件とコンポーネント境界に基づいて、カスタムクラスローダー階層を設計およびデプロイする。
  • モジュールローダーフレームワークを用いて複数のクラスローダーを調整し、コンポーネント実装の独立したロードおよびアンロードを可能にする。
  • 各コンポーネントまたはコンポーネントグループごとに固有のクラスローダーインスタンスを割り当てることで、標準JVMクラスローダーのデリゲートモデルからクラスローディングを分離する。
  • クラスローダー木における親子関係を慎重に管理することで、型の安全性とコンポーネント間のクラス可視性を確保する。
  • クラスローダー管理をJuliaのADLと統合し、開発者が再構成の粒度およびクラスソース(例:.class、.jarファイル)を指定できるようにする。
  • バイトコードの変更やクラス名の変更を回避することで、JavaリフレクションおよびClass.forName()などの標準APIとの完全な互換性を維持する。

実験結果

リサーチクエスチョン

  • RQ1標準クラスローダー機構の制限があるにもかかわらず、Javaベースのコンポーネントシステムでどのように動的実装再構成を達成できるか。
  • RQ2同じクラスの複数バージョンをコンポーネントモデルで実行時に共存させるために、どのようなアーキテクチャ的および実装的戦略が必要か。
  • RQ3動的再構成の統合を、アーキテクチャ記述言語を用いた開発者にとって透明かつ設定可能な形で実現するにはどうすればよいか。
  • RQ4J2EE風の階層的クラスローダーと任意のクラスローダー構造との間で、コンポーネント再構成においてどのようなトレードオフがあるか。
  • RQ5コンポーネントのバイトコードを変更せずに、かつ標準Javaリフレクションの意味論を破壊せずに、動的再構成を達成できるか。

主な発見

  • 提案手法は、バイトコードの変更なしにJuliaにおいて実行時におけるコンポーネント実装およびインタフェースの再構成を成功裏に実現した。
  • 固定された木構造に限定されない任意のクラスローダー階層を用いることで、J2EE風のクラスローダー階層が制限を受ける再構成の柔軟性を克服した。
  • Javaリフレクションとの完全な互換性が確保されており、クラス名を変更する手法とは異なり、Class.forName()の使用も可能である。
  • JuliaのADLとの統合により、開発者が再構成の粒度やクラスソースを指定できるため、メカニズムは設定可能かつ透明である。
  • バイトコードウェーブやプロキシベースのソリューションに伴う実行時パフォーマンスのオーバーヘッドを回避しており、標準クラスローディングメカニズムに拡張制御を適用するにとどまっている。
  • プロトタイプは、クラスローダーをコンポーネントごとに管理し、専用のモジュールローダーフレームワークで調整することで、Fractalのようなコンポーネントモデルにおいて動的再構成が実現可能であることを示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。