InfoQ

News

Javaデベロッパ用のActionScript Virtual Machineを理解する

作者 Jon Rose, 翻訳者 編集部 投稿日 2007年11月14日 午前1時46分

コミュニティ
Ruby,
Java,
Architecture
トピック
RIA,
オープンソース,
プログラミング,
リッチクライアント/デスクトップ,
Object Oriented Design
タグ
Apollo,
Closures,
Flex,
Adobe,
Adobe Integrated Runtime,
Flash
ActionScript Virtual Machine 2(AVM2)はActionScript 3.0(AS3)バイトコードをFlash Player 9ランタイム内で実行する。Action Script 3はオブジェクト指向のプログラミング言語で、Adobe FlexとAIR内でFlashベースのアプリケーションを構築する際に使用されている。AS3はECMAScript標準(source)の第3版に完全に準拠している。

Javaのデベロッパにとってバーチャルマシーンの概念は何も新しい事ではないが、AVM2には一見する価値のある機能がたくさんあるのだ。Per Olesen氏はStrong Typing、Method Closures、Just-in-Time(JIT)コンパイラとGarbage Collectionを含むAVM2の重要な機能(source)に関して議論しているブログを掲載した。

タイプ情報
AS3はストロングタイピングをサポートし、Olesen氏は下記のように論じている。
AS3に先立って全てのタイプ情報はコンパイルされる時点でコードからはがされていました。ランタイム時では全ては単なる動的にタイプされた分子であったのです。AS3ではタイプ情報をランタイムに全て持ってこれるのです。

明確にタイプされた変数を使用するとパフォーマンスが向上し、またメモリの消費量を削減できるのです。
メソッドクロージャ
AS3はメソッドクロージャをサポートする。Olesen氏は下記のように説明している。
AS3においてはメソッドクロージャがありますが、またそれは機能が内部で作られたその環境を保つ一方(定義された当時の”これ”は未だ以前の”これ”を 意味しているのです。)、機能である変数をつくることができ、またそれを受け回すことができるという事を意味しているのです。
Gary Grossman氏とEmmy Huang氏の記事'Action Script 3.0 Overview'(source)の中で、彼らはメソッドクロージャのキーとなる使用法を説明している。
イベントハンドリングはメソッドクロージャのおかげでActionScript 3.0内で簡易化され、またビルトインイベントデリゲーションを提供する。

myButton.addEventListener("click", someMethod);
ジャストインタイム(JIT)コンパイラ

JITコンパイルはバイトコードがパフォーマンスを証明するためにネイティブマシーンに変換されるテクニックである。Adobeの記事'ActionScript Virtual Machine 2(AVM2) Overview(source)は、開発に及ぼされる影響に関して詳細を記している。
実際にAVM2はJITの方法でランタイム時にコードを変換するかもしれないが、これは実行の意味には影響せずそのパフォーマンスにのみ影響する。
Olesen氏はデベロッパに影響を与えるものは考慮する必要があることを記している。
AVM2内のJITで一つ気付くことがあります。コンストラクタはJITされていませんので、もしあなたがパフォーマンス集中コードをクラス内に所有していたらそれをコンストラクタ外に持っていってください。
ガベージ・コレクション
Olesen氏はAVM2におけるガベージ・コレクションを高く評価している。
メモリマネジメントとガベージ・コレクションは別のMMgcプロジェクト内に見うけられます。これは増加、保守的なマーク・スウィープと統合されたDeferred Reference Counting(DRC)メカニズムなのである。もちろんガベージ・コレクション実装は短時間(30ミリ秒)で、最善のクライアントパフォーマンス用に調整されて いる。
更なるリソースを探している人たちはFarata SystemsのJava5とActionScript3 間の言語シンタックスを比較した詳細なブログエントリ(source)を見て欲しい。またMozilla Tamarin Project(source)をレビューするとAVM2上にて、更なる情報を得ることができる。TamarinはFlash Player 9とAIRプラットフォーム内で使用されているAVM2実装である。更にはAdobeはJavaデベロッパたちに向けたコミュニティFlexサイトを提供 している。http://flex.org/java/.

Javaデベロッパたちにとって学習プロセスを緩和するような、ActionScriptシンタックスとバーチャルマシーンアーキテクチャにおいてたくさんの類似点があるのだ。

原文はこちらです:http://www.infoq.com/news/2007/11/understanding-actionscript-vm
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。