Androidとは

原文:http://developer.android.com/guide/basics/what-is-android.html

                                                                                                              • -

Androidは、オペレーティングシステムミドルウェア、主要なアプリケーションを含むモバイル端末用のソフトウェアスタックです。Android SDKでは、Java言語を利用してAndroidプラットフォーム上で動作するアプリケーションの開発を始めるのに必要なツールやAPI群を提供します。

特徴

  • アプリケーションフレームワーク コンポーネントの再利用や再配置が可能
  • Dalvikバーチャルマシン モバイル端末用に最適化
  • 統合ブラウザ オープンソースであるWebKitエンジンベース
  • 最適化されたグラフィックス カスタム2DグラフィックスやOpenGL ES 1.0仕様に準拠した3Dグラフィックスを搭載
  • SQLite 構造化データストレージ用
  • メディアサポート 一般的なオーディオ、ビデオ、静止画フォーマット(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)対応
  • GSM通信 (ハードウェア依存)
  • Bluetooth、EDGE、3G、WiFi (ハードウェア依存)
  • カメラ、GPS、コンパス、加速度計 (ハードウェア依存)
  • リッチな開発環境 端末エミュレータデバッグ用ツール、メモリやパフォーマンスのプロファイリング、Eclipse IDE用のプラグイン

Androidアーキテクチャ
下記の図は、Androidオペレーティングシステムの主要なコンポーネントを示しています。各セクションについては以下に詳細に記載されています。

アプリケーション
Androidは、Eメールクライアント、SMSプログラム、カレンダー、地図、ブラウザ、コンタクト*1などを含むコアアプリケーションを搭載しています。アプリケーションはJava言語で実装されています。

アプリケーションフレームワーク
開発者はコアアプリケーションで使用されているのと同じフレームワークAPI群にフルアクセスすることができます。アプリケーションのアーキテクチャにはコンポーネントの再利用を容易にする設計がなされています。いかなるアプリケーションであってもその機能を公開することができますし、どんなアプリケーションからでも、(フレームワークで定められているセキュリティ制約に従って)他のアプリケーションの機能を利用することができます。これと同じメカニズムにより、ユーザはコンポーネントを取り替えることができるようになります。

全アプリケーションの基本構成(サービス、システム、含まれるもの)です。

  • リッチで拡張性の高いビューのセット。アプリケーションを開発するのに利用され、リスト、グリッド、テキストボックス、ボタンに加え、組込用Webブラウザも含まれています。
  • コンテントプロバイダ。他のアプリケーションから(アドレス帳のような)データにアクセスしたり、データを共有したりすることができます。
  • リソースマネージャ。ローカライズされた文字列、グラフィックス、レイアウトファイルのような非ソースコードへのアクセスを提供します。
  • 通知マネージャ。全てのアプリケーションがステータスバーにカスタムの警告を表示できるようになります。
  • アクティビティマネージャ。アプリケーションのライフサイクルを管理し、共通のナビゲーション履歴を提供します。

詳細と実例に関しては、「メモ帳チュートリアル」を参照してください。

ライブラリ
AndroidAndroidシステムの多様なコンポーネントで利用されているC/C++ライブラリ群を含んでいます。これらの機能はAndroidアプリケーションフレームワークを通して開発者に公開されています。コアライブラリのいくつかを下記に挙げます。

  • システムCライブラリ BSDによって開発された標準的なCシステムライブラリ(libc)。Linuxベースの組込端末用に最適化。
  • メディアライブラリ PacketVideoのOpenCOREベース。このライブラリは、一般に普及している多くのオーディオ・ビデオフォーマットの再生と記録をサポート。さらに、MPEG4, H.264, AAC, AMR, JPG, PNGを含む静止画像もサポート。
  • サーフィスマネージャ ディスプレイサブシステムへのアクセスを管理。また、複数のアプリケーションから2D及び3Dグラフィックスをシームレスに合成。
  • LibWebCore Androidブラウザと組込Webビューの両方に採用されている最新のWebブラウザエンジン
  • SGL 基礎となる2Dグラフィックスエンジン
  • 3Dライブラリ OpenGL ES 1.0 APIに準拠。ハードウェア3Dアクセラレーション(ハードウェア依存)か内蔵の、高度に最適化された3Dソフトウェアラスタライザーのどちらかを使用。
  • FreeType ビットマップとベクトルフォントレンダリング
  • SQLite 強力で軽いリレーショナルデータベースエンジン。全アプリケーションで利用可能。

Android ランタイム
AndroidJavaのコアライブラリで利用可能な機能とほぼ同様の機能を提供するコアライブラリ群を持っています。

Androidアプリケーションは、Dalvik VMインスタンスを生成することによって、独立したプロセスで動作します。Dalvikは効率的に複数のVMが動作できるように実装されています。Dalvik VMは、少ないメモリ領域でも動作するよう最適化されたDalvik Executable(.dex)フォーマットのファイルを実行します。VMレジスタベースです。Javaコンパイラによってコンパイルされ、標準装備のdxツールで.dexフォーマットに変換されたクラスを実行します。

Dalvik VMはスレッディングやローレベルなメモリ管理のような下位層の機能はLinuxカーネルに依存しています。

Linuxカーネル
Androidはセキュリティ、メモリ管理、プロセス管理、ネットワークスタック、ドライバモデルのようなコアシステムサービスをLinuxバージョン2.6に依存しています。また、カーネルはハードウェアと前述以外のソフトウェアとの間の抽象レイヤとしても振舞います。

                                                                                                              • -

翻訳はここまでです。SDK1.0からの違いはほとんどありません。1.0ドキュメントにはベータバージョンと書かれていたのですが、その記述が消えているぐらいです。
今まで3つに分かれていた訳文を1つにし、原文構成に合わせました。


Android翻訳目次へ

*1:アドレス帳のことだと思います。