【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
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フィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?