Google App Engineで手軽に試すJavaクラウド
連載インデックスへ
Google App Engineで手軽に試すJavaクラウド(1)

EclipseでJava版App Engineを始めるための基礎知識


有限会社サイバースペース
清野克行
2009/5/11


Google App Engineがやって来るJa!va!だぁ!


今回の主な内容

Google App Engineがやって来るJa!va!だぁ!
GAEjを理解する8つのポイント
Google App Engineのアカウントを取得してみよう
GAEjアプリ作成のための環境設定
EclipseでGAEjプロジェクトを作成するには?
GAEjアプリをローカルPC上で実行するには?
GAEクラウド環境へアップロードするには?
注意! 「アプリケーションIDとバージョンの
  指定を間違えると大変なことに」
GAEクラウド環境でアプリを実行するには?
コラム 「PythonとJavaをバージョン違いで
  混在できる」
日本語表示の問題を解決するためにjQueryを使う

 米グーグルは2008年4月7日、Pythonで作成したプログラムが動くクラウド・コンピューティング環境「Google App Engine」(以下、GAE)を発表しました。それからちょうど1年後の2009年4月7日、GAEはPythonに加えてJavaへの対応(以下、GAEj)を発表しました(参考:グーグルのクラウドがJava対応、JRubyも稼働か)。

 2008年のGAE発表当初、日本ではPythonのプログラマ数があまり多くなく、反響もいまひとつの感じがありましたが、今年になって開発者や利用実績が多いJavaに対応したことで、GAEのユーザー数が一気に増加する可能性があります(参考:App Engine発表後、クラウド時代に向けJavaの対応が加速)。

 本連載では、GAEjの概要・特徴から環境設定、アプリケーションの作成、GAEjクラウド上でのBigtableの操作、jQueryによる日本語表示の解決、そしてDWRによるjQueryとGAEjサーブレットの連携までといった業務用アプリケーションとして応用できるところまで徹底解説していきます。

GAEjを理解する8つのポイント

 まずは、GAEjの主な概要・特徴を8つ紹介します。

【1】Java 5/6のサーブレット/JSP、JavaBeansが使える

 クラウド上にあるWebアプリケーション実行環境は、Javaのバージョン6対応ですが、アプリケーションはJava 5/6のどちらでも作成できます。また、対応アプリケーションはJava Servlet(サーブレット)が基本ですが、ほかにJSP(JavaServer Pages)や、サーブレットから呼び出されるJavaBeansも使用可能です。

【2】Java言語以外でも実行できる

 GAEjのJVM(Java Virtual Machine)は、Javaのバイトコードを実行するので、生成するコンパイラがあれば、Java言語以外でも実行できます。例えば、JRubyGroovyScalaJavaScriptRhino)、PHPQuercus)なども動作可能です。

【3】Eclipseプラグインがある

 GAEj用のJavaアプリケーション作成とクラウド環境へのデプロイは、コマンドラインからも可能ですが、Eclipseのプラグイン「Google Plugin for Eclipse」が用意されているので、アプリケーションの作成からクラウド環境へのデプロイまでを、すべてEclipseの開発環境内で行えます。

 なお、プラグインはEclipse 3.4(Ganymede)およびEclipse 3.3(Europa)に対応しています。

【4】GAEjで制限されているJavaの機能

 GAEjでは、サーブレットを使用するサーバサイドJavaの機能をほとんど使用できますが、一部サポートされていない機能もあります。

 例えば、スレッドの起動やファイルシステムへのアクセス、ソケット通信、それにJNI(Java Native Interface)によるJavaプログラムからの、ほかの言語で開発されたネイティブコード・プログラムの利用はできません。

【5】JDOとJPAによるBigtableへのアクセス

 グーグルのデータ管理システム「Bigtable」に、JDO(Java Data Object)とJPA(Java Persistence API)を通じてアクセスできます。JDOおよびJPAの詳細は、下記記事を参照してください。

 ただし、BigtableはRDB(Relational Database)ではないため、アクセスにはGAEj固有の方式も含まれます。そのため、現在多くの業務システムで使われているRDBMSからGAE上に移植するにはデータベースの設計自体を変える必要があると議論されているところです。

【6】専用Java APIがある

 主な専用Java APIは以下になります。

  • Memcache Java API
    Bigtableの直接アクセスを一部代替するJCacheでのイン・メモリのキャッシュサービスを利用できる
  • URLフェッチAPI
    JavaプログラムからHTTPとHTTPSリクエストによって、ほかのホストへアクセスとデータ取得ができる
  • Mail API
    GAEjの管理者、およびユーザーからメールを送信できる
  • Image API
    専用のImageサービス機能によって、イメージデータのサイズ変更や回転、反転などができる

【7】Googleアカウントで認証

 GAEjアプリケーションにアクセスするユーザーに対して、Googleアカウントでの認証機能を提供します。

【8】そのほかGWTやcronも

 【5】〜【7】の機能は、Python版でサポートされていたものとほぼ同様ですが、Java版ではこのほかに、GWT(Google Web Toolkit)でのAjaxアプリケーション作成、UNIXなどでおなじみの日時指定スケジュールジョブ実行ツールcronのサポートなどが追加されています。

 GWTはAjaxのプログラムをJavaで作成して変換する機能を持つグーグルのフレームワークです。詳しく知りたい読者は下記記事を参照してください。

Google App Engineのアカウントを取得してみよう

 作成したプログラムをグーグルのクラウド環境で稼働させるためには、最初にGAEのページで認証キーを所得する必要があります。

 今回のJava版の発表は「Early Look」扱いで、ユーザー数は当初1万人限定でしたが、その後すぐに2万5000人に拡張されています。筆者の場合は、サインアップから認証キーをリクエストして1日半くらい経過してから、メールが届いてGAEjの利用が可能になりました。

 筆者はGAEjの使用許諾メールが届くのにそれほど時間はかからないと思って、何度か受信トレイをのぞきましたがメールは届いておらず、人数制限に引っ掛かってしまったかと思っていました。翌日になって、何げなくメールボックスを開くと、グーグルからのメールが届いていたという感じで、ある程度は待つ必要があるようです。

 そのほかの認証キーを取得する際の注意点については、主にPython版の説明ですが下記記事が参考になります。認証キーを取得する部分はJava版とほぼ共通です。

エンジニア視点で比較する"雲"の違い
特集:クラウド体験記(前編)
 Amazon EC2、Google App Engine、Windows Azure、Force.comという4大クラウドの機能や使いやすさを比較。あなたは、どのクラウドが最適か?
Insider.NET」フォーラム 2009/3/17

 次ページからはGAEjアプリケーション作成に入っていきますが、今回はGAEjのEclipse環境設定から、簡単な表示をするアプリケーションの作成、それにGAEクラウド環境へのデプロイ・実行までを解説します。

1-2-3-4

 Index
第1回 EclipseでJava版App Engineを始めるための基礎知識
Page1
Google App Engineがやって来るJa!va!だぁ!
GAEjを理解する8つのポイント
Google App Engineのアカウントを取得してみよう
  Page2
GAEjアプリ作成のための環境設定
EclipseでGAEjプロジェクトを作成するには?
  Page3
GAEjアプリをローカルPC上で実行するには?
GAEクラウド環境へアップロードするには?
注意! 「アプリケーションIDとバージョンの指定を間違えると大変なことに」
  Page4
GAEクラウド環境でアプリを実行するには?
コラム 「PythonとJavaをバージョン違いで混在できる」
日本語表示の問題を解決するためにjQueryを使う





Java Solution全記事一覧



TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH