GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Dionysios G. Synodinos , 翻訳者 岡田 英久 投稿日 2009年2月12日
Java EE 6 プラットフォーム仕様のパブリックドラフトが公開され(リンク)、2009 年 2 月 23 日までパブリックレビューとフィードバックを受け付けている。予定より遅れている今回のドラフト(リンク)でもっとも注目すべき点は、Java EE プラットフォームの歴史上最初のプロファイルである Web Profile かもしれない。
スペックリードの Roberto Chinnici 氏は Web Profile のあらまし(リンク)を次のように述べている。
熟考をかさねた結果、プラットフォームエキスパートグループは Web Profile として、中規模な案、わたしが以前書いた記事(リンク)のなかの選択肢 B を選んだ。
要求される技術は次のとおりだ。
Servlet 3.0
JSP 2.2
EL 1.2
Debugging support for other languages (JSR-45) 1.0
JSTL 1.2
JSF 2.0
JSR-250 1.1
EJB 3.1 Lite
JTA 1.1
JPA 2.0いくつかはバージョン番号が最新の API のそれと一致しないことに気付かれるかもしれない(たとえば EL 1.2 )。これは、メンテナンスレビューを経て該当技術に対して小さな変更を加えることを予定しているためである。それらが利用可能になれば、詳細な情報を提供するつもりだ。
Web Profile を導入した理由についてドラフトでは次のように説明されている。
Web Profile は現代的なウェブアプリケーションの開発者をターゲットとしている。
わたしたちが「現代的」という言葉をつかうことで強調したいのは、ウェブアプリケーションの世界が、最初 Servlet 仕様が現れて以降おおきな進化を遂げているという事実だ。必然的に、ごく単純なウェブアプリケーションを作るために利用される技術も、急速に発展してきた。実際、今日のウェブアプリケーションで直接 Servlet API を利用しているものはほとんど存在せず、大部分のアプリケーションは標準の、あるいはサードパーティ製のフレームワークやライブラリに依存しており、サーブレットコンテナの機能を間接的に利用している。それらのフレームワークやライブラリはオープンソースとして開発されることが多い。
ほとんどのウェブアプリケーションは、HTTP による対話の管理以外に、トランザクション管理・セキュリティ・永続化といった分野において重要な要件をもっている。そういった要件は、Java EE プラットフォームがかなり以前から提供している技術、たとえば Enterprise JavaBeans ( EJB ) 3.x や Java Persistence API などを使って簡単に解決することが可能だが、それらの技術が単なるサーブレットコンテナでサポートされることはあまりない。Web Profile は、これらの API のおおくを組み込むことで、Java プラットフォームをつかったウェブアプリケーションの開発に必要な基本的なスタックであると見なされる製品が達しなければならない水準を高めることを目的としている。
「現代的」なウェブアプリケーションをターゲットにするということは、すなわち、標準 API から成り満足のいく程度に完成されたスタックと、大規模なウェブアプリケーションのニーズにも即座に対応できる能力が提供されることを示唆している。さらに、このスタックは、残された開発者のニーズにも応えられるよう、簡単に拡張できなくてはならない。
完全性へと向かうこの動きに対して、ウェブコンテナのフットプリントを制限する願望について、物理的と概念的両方の意味で、バランスをとることが望まれている。Web Profile を学んでいる開発者の視点から見れば、パワフルだが API が冗長で過度に複雑なプロファイルよりも、的をしぼり機能の重複を極力少なくした小さなプロファイルを利用できるほうが望ましい。
Web Profile を定義するなかで、わたしたちはこれら二つの要求の中間地点を見つける努力をしてきた。
完全性の面から言えば、Web Profile はプレゼンテーションと状態管理をあつかう技術( JavaServer Faces、JavaServer Pages )、コアとなるウェブコンテナ機能( Servlet )、ビジネスロジックをあつかう技術( Enterprise JavaBeans Lite )、トランザクション技術( Java Transaction API )、永続化技術( Java Persistence API )、などを含む完全なスタックを提供している。
簡単さに関して言えば、Web Profile では、 Java EE プラットフォームの一部を成している企業バックエンド API の大部分が省かれている。そして、Servlet 仕様のあたらしいプラグイン機能(仕様書のセクション 8.2 を参照)によって、アプリケーションは設定にかかるオーバーヘッドを最小に抑えながら、サーブレットコンテナを拡張するライブラリを利用することができるのである。たとえば、Restful ウェブサービス用の Java API ( JAX-RS )のような標準技術で、フル仕様の Java EE プラットフォームには含まれているが Web Profile には含まれていない技術を、アプリケーションの web.xml を一切変更することなくウェブコンテナにプラグインすることができる。
最後に、Web Profile 準拠の製品が仕様で求められている以上の技術を実装していてもかまわないということを思い出すのは価値のあることだろう。製品が、インストール時にさまざまな設定や拡張機能の選択肢を提供したり、あるいは仕様で要求されているコア機能を越えて完全なカスタマイズを可能にするなどの機能を提供することは、十分考えられることだ。
Roberto 氏は JAX-RS が Web Profile の必須コンポーネントではないことについても述べ、JAX-RS を含めるのは時期尚早であるとエキスパートグループが感じていることがその理由であると説明している。
そのほかに欠けているものとしては Web Beans がある。Web Beans は Web Profile とフルプラットフォームいずれにおいても必須コンポーネントとはされていない。
Web Beans は Web Profile とフルプラットフォームいずれにおいても必須コンポーネントとはされていない。一方で、セクション EE.6.29 では、Web Beans は導入を検討中のコンポーネントであると述べられている。エキスパートグループでは、この問題についてコミュニティからのフィードバックを求めている。
また、注意深い読者は、現在パブリックドラフトにある Web Beans 仕様(リンク)が、ちょうど昨日おおきく更新されたことに気付かれただろう。Gavin King 氏のブログ(リンク)には、主に JSR-316 のエキスパートグループからのフィードバックによって加えられた、変更の全詳細が記述されている。もっとも大きな変更のひとつは、「 Web Beans 」という用語自体が仕様から姿を消したことだ。これは一部の人たちにとっては衝撃的なことかもしれないが、実際にはポジティブな進展なのである。なぜなら、このことは、Web Beans が提供する機能と、「コンテナ」と「コンポーネント」というすでに確立されている Java EE の概念との融合を意味するからだ。現在、Java EE プラットフォーム全体にたいする文脈的サポートと依存性注入を提供しており、最終的な結果は、もっと有用で、統合が進んでおり、「 Web Beans 」を学びやすいものになるだろうと、わたしは信じている。
Bean Validation も同様に、Java EE 6 コンポーネント JSR としては挙げられていない。
注意深い読者は、JSR-303(リンク) がパブリックレビューとなっていることにも気付かれたことだろう。しかし JSR-303 はまだ Java EE 6 コンポーネント JSR に含まれていない。これは単純にタイミングの問題だ。プラットフォームエキスパートグループは JSR-303 を含めるかどうかの議論を始めたばかりで、プラットフォーム仕様のパブリックドラフトが公開された時点で、まだ結論に達していなかったのである。 Emmanuel Bernard 氏ひきいる JSR-303 エキスパートグループがバリデーション分野における JPA と JSF のニーズに対応するため多くの作業を完成させたことを指摘しておきたい。わたしは、JSR-303 がコミュニティから歓迎されるだろうと確信している。
このドラフトはダウンロード可能となっており(リンク)、Java EE 6 仕様と Web Profile 仕様の両方が含まれている。
コミュニティが新しい仕様についてどう考えているのか、java.net で投票が行われている。投票者数はまだかなり少ないが、結果はリリースされたドラフトが人々の興味を引いていないこと(リンク)を物語っている。
よいと思う 12.1%
フルプラットフォームの仕様に重要な JSR が欠けていると思う 3%
Web Profile の仕様に重要な JSR が欠けていると思う 6%
別な理由から、よいとは思えない 6%
まだ読んでいないが、これから読むつもりだ 9%
まだ読んでいないし、読む予定もない 63.6%
もっと詳しい情報を知りたい方は、ここ InfoQ にある Enterprise Java(参考記事リンク) のページを参照してほしい。
原文はこちらです:http://www.infoq.com/news/2009/01/java-ee6-draft
【豆蔵】大好評のため、Jenkins講座を追加開催致します!Jenkins作者の川口氏が講師です。
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信