お気に入り | 日本語 | ログイン

App Engine for Java の概要

Google App Engine for Java へようこそ!App Engine では、標準の Java 技術を使用して Web アプリケーションを構築し、Google のスケーラブルなインフラ環境で実行できます。この Java 環境は、Java 6 JVM と Java サーブレットインターフェースを提供し、App Engine のスケーラブルなデータストアやサービス(JDO、JPA、JavaMail、JCache など)への標準インターフェースをサポートします。さまざまな標準がサポートされているため、アプリケーションの開発が容易なだけでなく、サーブレット環境間でアプリケーションをスムーズに移植できます。

Google Plugin for Eclipse を導入すると、Eclipse 開発環境に App Engine プロジェクト用のプロジェクト ウィザードとデバッグ設定が追加されます。また、Google Web Toolkit(GWT)を使用することで、世界レベルの Web アプリケーションを効率的に開発および配備できます。この Eclipse プラグインは、App Engine および GWT SDK にバンドルされています。

スタート ガイド: Java をまだご覧になっていない場合はぜひご一読ください。Java 技術と Google App Engine を使用した Web アプリケーション開発についてわかりやすく解説しています。

Java ランタイム環境

App Engine では、Java 6 仮想マシン(JVM)を使用して Java アプリケーションを実行します。App Engine SDK では Java 5 以降がサポートされますが、Java 6 JVM では Java 6 以前の Java コンパイラであればどのバージョンでコンパイルされたクラスでも使用できます。

App Engine では、Web アプリケーションに Java サーブレット標準を使用します。アプリケーションのサーブレット クラス、JSP(JavaServer Pages)、静的ファイル、データ ファイルなどは、標準の WAR ディレクトリ構造で整理し、配備記述子(web.xml ファイル)の配備もこの標準に従います。App Engine でリクエストを処理する際は、この配備記述子に従ってサーブレットが呼び出されます。

JVM では、サービス提供とセキュリティの観点から、隔離された安全な「サンドボックス」環境でアプリケーションを実行します。サンドボックスで実行するアプリケーションでは、他のアプリケーションのパフォーマンスやスケーラビリティに影響を及ぼす処理は実行できません。たとえば、スレッドの作成、ローカル ファイル システムへのデータの書き込み、任意のネットワークへの接続などは許可されません。また、JNI などのネイティブ コードを使用することもできません。JVM では、サンドボックス制限の範囲内の処理であれば、どのような Java バイトコードでも実行できます。

詳しくは、サーブレット環境をご覧ください。

データストア、サービス、標準インターフェース

App Engine には、永続データの格納、ネットワーク経由のリソース アクセス、画像データの操作などを行うためのスケーラブルなサービスが用意されています。App Engine と他の環境の間でのアプリケーションの移植を容易にするため、これらのサービスの Java インターフェースは可能な限り既存の標準 API に準拠しています。各サービスには完結した低レベル インターフェースも用意されており、新たにインターフェース アダプタを実装したり、直接的なアクセスを提供したりできます。

App Engine のデータストアは、信頼性が高くスケーラブルな永続データ ストレージとして使用できます。データストアでは、標準 Java インターフェースとして JDO(Java Data Objects)2.3 と JPA(Java Persistence API)1.0 の 2 つがサポートされています。これらのインターフェースは、各種標準のオープン ソース実装である DataNucleus Access Platform を使用して実装されています。

App Engine の Memcache は、データストア クエリや計算の結果を一時的にキャッシュするための高速分散ストレージを提供します。この Java インターフェースには、JCache(JSR 107)が実装されています。

アプリケーションは、URL フェッチ サービスを使用して Web 経由でリソースにアクセスし、HTTP および HTTPS プロトコルで他のホストと通信します。Java アプリケーションからこのサービスにアクセスする場合は、Java 標準クラスの java.net.URLConnection とその関連クラスを使用できます。

アプリケーションで メール サービスを使用すると、アプリケーションの管理者やログインしているユーザの代わりにメール メッセージを送信できます。Java アプリケーションでは、JavaMail インターフェースを使用してメール メッセージを送信します。

アプリケーションで 画像サービスを使用すると、画像データをさまざまな形式に変換したり、切り抜き、回転、サイズ変更、色調補正などの処理を施したりできます。CPU 負荷が大きい画像処理タスクをこのサービスで処理することで、より多くのリソースをアプリケーション サーバーによる Web リクエストの処理に割り当てることができます(サンドボックス制限の範囲内であれば、アプリケーション サーバーで JVM ベースの画像処理ソフトウェアを使用することもできます)。

アプリケーションから Google アカウントを使用することで、ユーザー認証を行えます。Google アカウントは、ユーザー アカウントの作成とログインを処理します。すでに Google アカウント(たとえば Gmail アカウント)を持っているユーザーは、アプリケーションでもそのアカウントを使用できます。アプリケーションでは、ユーザーのログインを検出したり、そのユーザーのメール アドレスにアクセスしたりできます。Java アプリケーションでは、配備記述子内のセキュリティ制約を使用して、Google アカウント経由のアクセスを制御できます。また、サーブレット リクエスト オブジェクトの getUserPrincipal() メソッドを使用してユーザーがログインしているかどうかを検出したり、ユーザーのメール アドレスを取得することもできます。低レベルな Google Accounts API を使用すると、ログイン/ログアウト URL を生成したり、データストア内のストレージに適合するユーザー データ オブジェクトを取得したりできます。

スケジュールされたタスク

アプリケーションでは、スケジュール タスクを設定することで、指定した間隔でアプリケーションの URL を呼び出すことができます。詳しくは、cron ジョブを使用したスケジュール タスクをご覧ください。

Java ツール

App Engine Java SDK にはさまざまなツールが用意されており、アプリケーションのテスト、アプリケーション ファイルのアップロード、ログ データのダウンロードなどを行えます。また、Apache Ant 用のコンポーネントも含まれており、App Engine プロジェクトでよく利用するタスクを簡単に実行できます。Google Plugin for Eclipse を導入すると、App Engine 用のさまざまな機能を Eclipse 総合開発環境に追加できます。開発、テスト、配備機能のほか、App Engine SDK も含まれています。Eclipse プラグインを導入すると、GWT アプリケーションの開発や App Engine での実行も簡単になります。

開発サーバーを使用すると、アプリケーションをローカル コンピュータで実行しながら開発およびテストできます。開発サーバーは、App Engine のデータストア、サービス、サンドボックス制限をシミュレートします。開発サーバーでも、アプリケーションのテスト中に実行されるクエリに基づいて、データストア インデックスの設定を生成できます。

App Engine で実行しているアプリケーションとはコマンドラインで対話できますが、これらの対話はすべて AppCfg という多目的ツールによって処理されます。AppCfg を使用すると、アプリケーションを App Engine にアップロードしたり、データストア インデックスの設定のみを更新し、コードを更新する前に新しいインデックスを作成したりできます。また、アプリケーションのログ データをダウンロードして、任意のツールでアプリケーションのパフォーマンスを分析することも可能です。