InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

Java LiteとApache Harmonyを支持するGoogleのAndroid SDK Bypasses Java ME

作者 Scott Delap , 翻訳者 編集部 投稿日 2007年11月14日

セクション
デベロップメント,
設計/アーキテクチャ
トピック
モバイル ,
Java
タグ
Java ME
先日GoogleがAndroid SDKをリリースした(source)。このリリースは最近のOpen Handset Alliance(source)の発表の後を追うものとなっている。SunのCEOであるJonathan Schwartz氏はこの発表の後にOHAとそのJavaサポートを称賛した(source)。しかしながらAndroidの観点におけるJavaの詳細は、今日に至るまで未だ漠然としたままである。

Androidはそのハードウェアアブストラクションレイヤー用の基盤としてLinux2.6を使用し、ドライバ、メモリマネジメント、ネットワーク等のサポートを提供する。このレイヤーの上にはOpenGL、フォント、メディアコーデック、SQL Lite、またブラウザ表示用のWebKitのような機能のために、C/C++で記述されたネイティブライブラリ一式が備わっている。興味深い詳細は、そのスタック上の次なるレイヤーとDalvik VMの中にあるのである。

Java SEかもしくはJava MEのフルバージョンを提供する代わりに、Googleは2方向に分岐している。一つ目はコアJavaパッケージの限定サブセットが提供されていることである(source)。一般的に使用されているjava.nio、java.lang、java utilのようなパッケージが含まれている。Apache HttpClientはAndroid特定ライブラリに加えてまとめられたいくつかのオープンソースプロジェクト中の一つである。しかしながらJMEクラスと従来のJava UI関連のパッケージであるSwingとAWTが顕著に欠如している。このルートを辿ることによって、AndoroidはJavaをその開発言語とするがフルのJDKをサポートしないもう一つのグーグルプロジェクトGWT(source)と同じ轍を踏んでいる。

AndroidはJavaの変則型の言語で記述されたアプリケーションを稼働するのにカスタムVMを使用する。

全てのAndroidアプリケーションは、自身のDalvikバーチャルマシーンのインスタンスを用いてそれ自体のプロセス内で動作する。Dalvikはデバイスが複数のVMを効率的に動作できるように記述されている。Dalvik VMは最小限のmemory footprintに最適化されたDalvik Executable(.dex)フォーマット内でファイルを実行する。またVMはレジスタベースで、含有された”dx”ツールによって.dexフォー マットに変換されたJavaランゲージコンパイラによってコンパイルされたクラスを稼働させる。Dalvik VMはスレディングや低レベルメモリマネジメントのような根本的な機能に関してはLinux kernelに依存している。

Dalvikは制限のあるバッテリーとCPUコンディションの下で動作させるという点において、モバイル装置に適している。Apache V.P.、Java Community Process Geir Magnussonは、DalvikがApache Harmonyクラスリブを使用することを記載している(source)。またAndroid SDKはApache Software Licenseの下でライセンスされている。GPLv2を使用するのに比較してこの決断はArs Technicaによって徹底的に保護されている(source)

上記の図はAndroidのスタックである。ブルーのアイテムはJavaのAndroidサブセットで記述されている。これにはリソースマネジメントや ウィンドウなのどのアプリケーションフレームワークサービスが含まれている。中核のAndroid Phone、Browser、Contactアプリケーションもまた同様にJavaで記載されていてDalvik VMの下で動作する。

Android SDKは現在Windows XPかもしくはそれ以上、またOS X 10.4.8+とLinuxをサポートしている(source)。JDK 5か6もまた必要である。一方EclipseはEclipse 3.2+プラグインを必要とせず、デバッグツールとエミュレータと共に提供されている。

デベロッパたちから得られた早期のSDKに関するレビューにはいろいろな意見が盛り込まれていた。Java Liteの使用は厄介であるという意見もあった(source)

・・・私の意見としてはこれには少しがっかりさせられました。現在のJavaのプロファイルに同調していないのは残念なデザインチョイスです。またそれによってAndroidはそれ以外のものと互換性がなくなってしまうのです。私の見解としてはそれは不必要なことだと思うのです。それに加えてAndroidはフルJava、J2MEと他のいろいろなオープンソースプロジェクトからの機能をたくさん重複しているように思えます。それぞれのケー スにその理由がある事は確実なのですが、全体的な結果としてはいろいろな車輪の再発明のように見えるのです。Android APIが既存のものより大幅に速く、より柔軟で実用的 等々であるというのは疑わしいです。

Ryan Block氏は概してJavaを問うている。

私はJavaをそのアプリケーションレイヤ環境として使用したAndroidに落胆した人は私だけではないでしょう。Androidは平均的なJava 実行環境よりもはるかに最適化されたフレームワークであり、中核のOSにネイティブでコードされたものと同様にモバイルマルチタスクJava VMアプリケーション環境は絶対に稼働しないのです。これは スワイプ、タップ、タッチ等の動作がiPhone/iPodタッチで設定された基準より粗雑で、ビジュアル的に満足度のより低い体験を意味するのです。

Ed Burnette氏(source)はレイヤーの中のスタックに価値を見出している。

これはデベロッパたちにとって良い知らせであります。なぜなら例えばARM用に1バージョン、×86用にもう一つのバージョンといったように異なるアーキテクチャごとにプログラムを再コンパイルする必要がなくなるからです。またそれは電話の中に導入可能なハードウェアに多大な柔軟性をもたらし、生産者側にも利点をもたらすのです。既存のアプリケーションを壊す必要なく、新たなタイプのプロセッサを使うことができるのです。
原文はこちらです:http://www.infoq.com/news/2007/11/android-java

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。