検索
連載

EclipseでJava版App Engineを始めるための基礎知識Google App Engineで手軽に試すJavaクラウド(1)(1/4 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

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

 米グーグルは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リクエストによって、ほかのホストへアクセスとデータ取得ができるJavaプログラムからHTTPとHTTPSリクエストによって、ほかのホストへアクセスとデータ取得ができる
  • Mail API
    GAEjの管理者、およびユーザーからメールを送信できるGAEjの管理者、およびユーザーからメールを送信できる
  • Image API
    専用のImageサービス機能によって、イメージデータのサイズ変更や回転、反転などができる専用の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クラウド環境へのデプロイ・実行までを解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る