GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Alex Blewitt , 翻訳者 鰈崎 義之 - CSKシステムズ 投稿日 2009年9月29日
この1ヶ月の間、Java Modularity ワーキンググループ(JSR 294)の現状について多くの議論がなされた。JSR は、異なるモジュールシステム間(特に Sun の Project Jigsaw と OSGiについて)の共通基盤を見つけようとしているが、現在の提案はあまりにも複雑であり、世界初となるメタモジュールシステムという概念を導入している。
多くの議論は言語仕様と実装の違いに集中した。現状では、(ほとんどExpert Groupが嫌っている)JSR 294 ドラフトは、モジュール、バージョン、制約、依存性のコンセプトを'取替え可能な'外部のモジュール性プロバイダに委譲するメタモジュールシステムを定義している。残念ながらこれは、バージョン番号、依存性の共通基盤が存在しないことを意味しており、一つあるいは別のモジュールシステムのために開発したモジュールが、結局のところ他のモジュールと非互換になってしまうような事態につながる。
そのようなあいまいさは、OpenJDK Jigsaw 提案あるいは OSGi のどちらかで動作するモジュールシステムを早急に必要としている、Java コミュニティにとっては何の助けにもならない。多くの人が、OpenJDK はなぜ OSGi を再利用できないのかと尋ねた。–しかしその単純な答えは、OSGi はモジュール性のためだけには複雑すぎだということだ。コアスペック(モジュールレイアを定義している)は極めて小さいにもかかわらず。ライセンスに関する問題も、OSGi を採用できない一因である。
あいまいに定義されたセマンティクスと外部プロバイダが意味を決定づけるコンセプトのメタモジュールシステムを開発する代わりに、メーリングリストグループに投稿されたSimple Module System 提案は、メタモジュールシステムを捨て去り、両方のモジュールシステムがサポートできる共通点に集中することを掲げている。これは邪魔になっているいくつかの主要な違いである、(どんな場合でも、あらゆる場所で Java 開発者のための利益となる)モジュールバージョンの表記と、必要とするパッケージがエクスポートしているすべてのパッケージを暗黙的にインポートするという Maven モジュール依存性と同じような、モジュール依存性の定義に関する同意に達することになるだろう。
この事は、Java 開発者が Jigsawa と OSGi の両方で動作するモジュールを構築することを可能にする。たとえそれぞれモジュールシステムがより強力な拡張を持っていたとしても、大多数の Java ライブラリを構築しモジュールを提供するだけの開発者にとっては必要ないだろう。これによりモジュール提供者は使用する二つの非互換のフォーマットを選択することに煩わされずに、代わりに Java ライブラリのモジュール性に集中できる。動的モジュールシステム内でモジュールを使用する事により、より強力な動的モジュール性が利用できるようになるだろう。しかしほとんどの場合、静的なモジュール性で十分であろうが。
提案の重要な点は以下のとおり。
JSR プロセスの仕事のおかげで、一人もしくは何人かの人々は仕様を書く責任がある。Expert Group は議論するため、課題を指摘するため、あるいはドラフトを承認するためにある。ここしばらくの間、メタモジュールシステムに対するグループのメンバーからの共通の承認が無かった。そして Expert Group メンバー(Sun の社員を含む)の何人かは、現在のドラフトの課題を強調するために彼ら自身の提案を書く必要を感じていた。これは、Java の標準化されたモジュールシステムに挑み獲得するための最後の努力のように感じる。OpenJDK の Jigsaw の要求と OSGi の要求の両方が、外部実装への依存無しに完全に言語仕様内部で定義された Simple Module メカニズムによってかなえられることを望まれている。
おそらく最大の利益は、バージョン番号の表現について同意が得られたことであろう。OSGi は長い間 Sun を除くすべての Java ライブラリにとって十分な major.minor.micro.qualifier 書式を定義していた。Sun は 1.major.minor.micro.qualifier を使っている。しかし別の重大な違いは、OSGi において空の qualifier はバージョン番号の範囲の'一番下'の値であり、ほとんどの Java 開発者の共通する使い方や Jigsaw では、空の qualifier は'一番上'の値である。(すなわち、Jigsaw において 1.0.0 は 1.0.0.beta より大きいが OSGi では反対である。)このような特殊なケースを解決する共通基盤を見つけることは、モジュールシステムのバージョン要求に向かう良いステップとなるであろう。五番目の数字の追加の要求があるとしても、将来のバージョンの OSGi がサポートできるケースであろう。
メタモジュールシステムが Java のための Simple Module System に置き換えられることについてどう思うだろうか?
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
【豆蔵】大好評のため、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
スレッド表示 返信