InfoQ

News

Dalvik、Androidのバーチャルマシーンが激しい論議を巻き起こす

作者 Ryan Slobojan, 翻訳者 編集部 投稿日 2007年11月20日 午後8時10分

コミュニティ
Java
トピック
モバイル,
ライセンス
タグ
Sun Microsystems,
Mono,
Google,
Java ME

先日行われたGoogleのAndroid SDKのリリース(source)と共に、APIとモバイル分野において与えられる影響に関するディスカッションが盛んであった。しかしながらJavaコミュニティにおいて重大なディスカッションを引き起こした分野は、Androidプラットフォーム(source)の基礎であるDalvikバーチャルマシーンである。

Dalvikと標準のJavaバーチャルマシーン(JVM)間での大きな違いは、JVMはスタックベースである一方Dalvikはレジスタベースであることである。Dalvikにレジスターベースのアプローチが選ばれた理由として、携帯電話のような制限された環境において有益であり、より効率的な事前の最適化を可能にする(source)からであると推測される。レジスターベース対スタックベースのバーチャルマシーンに関する詳細な解析(PDF・英語)によって、レジスタベースのVMはコンパ イルされた時により大きなプログラムを代償として、更に速い実行時間を可能にするという結論が出された。

Dalvikは制限されたメモリ内で複数のバーチャルマシンのインスタンスを同時に動作させるのを可能にするよう最適化されていて、一つ一つの Dalvikアプリケーションが別々のLinuxプロセスとして動作する。Neil Bartlett氏(ブログ・英語)は、それぞれのアプリケーションにそれぞれのプロセスを与えることによって動的なインストール、活性化、非活性化を可能にするが、 Dalvikがなぜ、単一のプロセス内でこれを可能にするOSGiを使用する代わりに前者を選んだかということに疑問を掲げている(source)。その疑問に対して、Radoslav Gerganov氏は別々のプロセスはVMがもしクラッシュした際に全てのアプリケーションが閉じてしまうのを防ぐからであると返答している。Carl Rosenberger氏(source)もまた、OSGiがAndroidプラットフォームに導入できる事を提示し(source)、一方Jilles van Gurp氏(source)はなぜグーグルはインタープロセスコミュニケーションのようなコンポーネントを再実装すること(source)を選択したのかということを問うている。

今やDalvikが対象としている言語はJavaだけではない。今までにDalvik上でScalaを動作させる(source)という成功例があり、Hecl(source)もまた導入さ れている(source)。Groovyを動作させることも試みられたが(source)まだ成功は収められていない。Monoプロジェクト(サイト・英語)の設立者であるMiguel De Icaza氏(ブログ・英語)もまた、Dalvikのソースコードが有効になり次第MonoとDalvikを統合することに興味を示しており(source)、Android SDKで提供されるJava-to-Dalvikに類似したCIL-to-Dalvikリコンパイラを含んで、これを成功させるいくつかの方法に関する推測も行われてきた。

Dalvikの完成はJavaプラットフォームの最初の重要な割裂が進行しているという懸念を持ち上げた。何人かの人は、Dalvikをマイクロソフトの JVM(source)やSunのマイクロソフトに対する訴訟(source)に結び付けて、同じようなことがグーグルに起こるのではないかと懸念しており、一方他の人たちはマイクロソフトがJava実装を主張していた一方、グーグルはDalvikがそうであるとを主張していないこと(source)を指摘している。Sunはこの潜在的な割裂に関する懸念を表明(source) しており、DalvikとJVMの互換性を確実にするべく、グーグルに協力することを提案している。グーグルはそれに対してDalvikが現在 Java MEのプラットフォームに存在している亀裂を解消し、また制限の少ないライセンスを所有したプラットフォームを提供するための試みであったと返答している。またこれがJavaの将来においてSunとGoogleのより大きな権力争いをもたらす前兆であるという見解もあった。Ian Skerrett氏(source)はDalvikの完成がOpenJDK用(source)のガバナンス委員会の設立における進展の欠如と同様に、Java MEからの収益源を支配、また確保しようとするSunの試みに対する反応(source)であるとみなしている。これが発端となり、Dalibor Topic氏(source)はグーグルがSunと同じ道を歩むかどうか(source)という質問を投げかけている。

そこで面白いのはもちろん、OpenJDKについては尋ねたのに、なぜ誰も同じ質問をグーグルに関しては尋ねる勇気がないのかということである。
Androidはオープンソースとして販売されているにも関わらず、専売特化されたものである。またAndroidにはサインされ、ブラックボックス化された互換性に関する誓約がある。Androidにはガバナンスモデルがなく、またいつかそれを所有するという兆しもない。Androidには仕様がなく、 また、SDKライセンスにおいてグーグルによって使用許可されていないので、そのライセンスは代案の実装を禁止している。 Androidは完全にグーグルによって管理されており、またグーグルはグーグルの財政上支障をきたすものであれば、競合のアプリケーションを抹殺する権限等を所有している。そのオープン性は意図的にグーグルの財政上の利害に沿ったものとなっているのだ。あのJavaの独占性を他の容器に入れたのと同じで ある。

私たちはまるでJCPの再生を目撃しているような感じである。オープンソースコミュニティのストリートにおける信頼性を、単一の独占された実装の周りにいるもう一つの閉ざされたベンダー連合に貸そうと人々が列を成しているのである。それが今回はSunでなくグーグルなだけである。

Stefano Mazzocchi氏(source)がJava MEとDalvikにまつわるライセンス問題を詳細に分析した記事(source)を掲載し、Dalvikはモバイル市場において影響を及ぼすのに都合の良い位置にいることを結論付けた。グーグルは今までに訴訟を起こされる可能性のあるポイントを避けるよう心がけてきたが、Mazzocchi氏はいずれSunはグーグルに対し知的財産に関する訴訟を起こすと考えている(IBMの可能性もある)。また彼はJCP外で操作することによって、グーグルはAndroidを遥かに速く修正することができ、またSunのJCPにおける変更を拒否する能力を妨害することも可能なのである。また彼らは基礎的なJava ME実装において有効ではないUSBやBluetoothのようなコンポーネント用のインターフェースを付加することもできるのである。最終的に DalvikのソースコードをApacheライセンス下でライセンスすることによって、携帯電話所持者はライセンス費用を払う必要なく使用、また修正できるので、それを採用する率が高いのである。

DalvikはJavaコミュニティにおいてかなりの議論を巻き起こしているが、あなたはどう思うだろうか?

原文はこちらです:http://www.infoq.com/news/2007/11/dalvik

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

メタプログラミングを使ってRubyにプロパティを追加する

Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。