Reflection 2001 - The Third International Conference on Metalevel Architectures and Separation of Crosscutting Concerns - Kyoto, Japan, September 25-28, 2001

The Java Technology Workshop

Sponsored by Sun Microsystems

(Held in conjunction with Reflection 2001, The 3rd International Conference on

Metalevel Architectures and Separation of Crosscutting Concerns)

Kyoto, Japan
25 September 2001

Workshop website: http://www.openjit.org/reflection2001/java-tech-workshop.html

Conference website: http://www.openjit.org/reflection2001/

 

Aim

欧米と比較して、わが国においてはJavaに関する利用技術は進みつつあるものの、Javaテクノロジー、特にJavaシステム自身に対する貢献は少ない。これはOOPSLA, ECOOP, PLDIなど、主要な国際会議においてJavaが中心的な言語システムとなっているのにも関わらず、わが国からの論文が少ないことなどからも見て取れる。しかも、わが国が貢献した大学および研究所に存在するJavaテクノロジーはむしろ欧米において知名度が高く、わが国の企業におけるインパクトが様々な理由により少ないのが現状である。

そこで、今回京都リサーチパークで9月25-28日に開催されるReflection 2001国際会議(http://www.openjit.org/reflection2001/)の併設ワークショップとして、9月25日にJavaテクノロジーワークショップと銘打ち、わが国が誇る、アカデミアで国際的に認知された一流のJavaテクノロジーに関する一連のシステム研究を紹介する講演会を催す。

発表は日本語で行う。

なお、参加者はReflection2001の参加者は無料、それ以外は一般1万円、学生5千円の参加費を徴収する。参加者は最大150名である。

Workshop Organizers

Session 1: 先進的Java セキュリティ (10:30-11:30)

Javaにおけるセキュリティとその問題点

高木 浩光 (産業技術総合研究所)

Javaにおけるセキュアな実行系

後藤 礼史,田浦 健次朗 (東京大学)

本研究では,機能拡張可能なアプリケーションを安全に効率良く実行できる枠組の提案と実装を行う.機能拡張可能なアプリケーションは,必要になった時点で機能拡張できる点が優れているが,誰でも拡張機能を作成できるために安全面で問題がある.そこで,拡張コードに一定の自由度を与えながら最低限の安全性を保証する枠組が求められる.

我々は,Secure Shared Memory (SSM)と呼ぶモデルを提案する.SSMは,実行時ユーザとコード作成者に相当する二つの概念を用いて,読み,書き,実行の3種類のアクセス権限を動的に制御する.また,実行時ユーザ切り替えや動的な権限の変更に対応し,柔軟な制御を可能にする.SSMは現在Java上に実装されている.アプリケーションの実行時間は10〜50倍に増加するが,関数内エスケープ解析などにより,良いものでは2倍前後まで減少する.今後は,関数間エスケープ解析などの導入によりさらにオーバーヘッドを削減できる見込みである.

Session 2: Java 言語技術およびリフレクション (13:00-14:30)

Java言語ソースコード処理フレームワークEPPとMixJuice言語

一杉 裕志 (産業技術総合研究所)

EPP (Extensible Java Pre-Processor)は,Java言語の言語拡張や,Java言語で書かれたソースコードの解析・変換処理をするための強力なフレームワークである.今回の発表では,(1)EPP 1.1の応用事例,(2)実用性を大幅に向上させるEPP 2.0の構想,(3)EPP 2.0の実装用言語であり,ソフトウエアの拡張性・再利用性を大幅に高める「差分ベースモジュール機構」を有するMixJuice言語,の3つについて述べる.

Javaと他言語とのインターフェイス技術

湯淺 太一 (京都大学)

Javaの持つ諸機能を,対話型プログラミング環境に取り込むための試みとして,「ぶぶ」と呼ぶScheme処理系を開発中である.この処理系では,単にJavaのクラスライブラリをロードしてインスタンスを生成したりメソッドを呼び出したりできるだけでなく,SchemeレベルでJavaクラスを拡張(サブクラスを定義)できるなど,Javaとの「シームレス」なインターフェイスを提供している.処理系開発の過程で培われたインターフェイス実装技術を紹介する.

Javaにおける先進的リフレクション技術OpenJava, Javassist

立堀道昭 (筑波大),千葉 滋 (東工大)

我々がJava向けに開発してきた,構造リフレクションの技術を紹介する.実際のソフトウェア開発の場では,しばしばプログラムを変えたりコードを追加することが必要になる.機能の変更・追加のためにプログラマが額に汗して行なっていた変更を,構造リフレクションはメタプログラムにしたがって半自動的に行なう.これにより,ソフトウェアの生産性や保守性の向上を図れる.我々は,このような構造リフレクションを Java に導入したシステム,OpenJavaとJavassistを開発してきた.これらのシステムの特徴と,実際の応用例を紹介する.

Session 3: Javaの高度な言語実装技術 (14:45-15:45)

JavaでのOpen Just-In-Timeコンパイラ技術OpenJIT

小川 宏高,松岡 聡 (東工大)

Open Compilerは,自己反映計算をベースとして,コンパイラにさまざまな言語拡張や最適化の為のモジュールを組み込む技術である.我々は,Java言語のJust-In-TimeコンパイラにOpen Compilerの技術を適用し,クラス単位での最適化のためのカスタマイゼーションを可能にしたOpenJITを開発している.OpenJITは,アプリケーションや計算環境に特化した動的な言語機能の拡張や最適化が可能であり,新たなコンパイル技術の研究基盤としての役目を果たす.

Javaでの高速部分計算技術

増原 英彦 (東京大学)

部分計算とは,プログラムに部分的な入力を与えて実行し,より高速な(特化された)プログラム生成する技術である.本発表では,Javaバイトコードを対象として,実行時に高速に部分計算を行うBCS (ByteCode Specialization)システムを紹介する.このシステムでは部分計算を行うプログラムを予め生成しておき,そのプログラムが実行時に特化されたバイトコード列を生成する.これによって既存のJITコンパイラの援用が可能になり,高速かつ移植性の高い部分計算が実現されている.

Session 4: Javaでの先進的分散実行技術 (16:00-17:00)

Javaにおける分散共有メモリ技術

早田 恭彦 (東工大),中田 秀基 (産業技術総合研究所/東工大)

Javaの持つポータビリティを損なわないPureJavaなソフトウェア分散共有メモリのデザインについて,Javaの特性やメモリ管理・プログラミングモデル・性能などの側面から述べる.さらに,このデザインに基づいてポータブルなJavaソフトウェア分散共有メモリシステムJDSMを実装し,異なるOS上において数値計算アプリケーションを用いて評価した結果についても述べる.

JavaにおけるAgent技術

佐藤 一郎 (国立情報学研究所)

エージェントは自律的に動作するソフトウェアであり,知識処理やユーザ補助,シュミレーション技術などの幅広い応用をもっている.一方,Java言語はエージェント実装において有望なだけでなく,モバイルエージェントなどの新しいエージェント技術の原動力となっており,ここではJava言語によるエージェントシステムを紹介するとともに,今後の研究動向について概説する.