[解決済み】Corona、Phonegap、Titaniumの比較について
質問
私はウェブ開発者ですが、自分のウェブ製品をiPhoneに移行したいと考えています。Google Mapsのような製品で、携帯電話の画面上に地図を表示し、地図をドラッグしたりサイズを変更したり、地図に追加した情報を表示したりすることができます。
HTML、CSS、Javascriptを使って、iPhoneのネイティブアプリを開発できる技術がいくつかあることは知っています。 そのうちのいくつかを紹介します。
他に類似の製品はありますか? また、どのような違いがあるのでしょうか? どれを選べばいいのでしょうか?
解決方法は?
私は、stackoverflowに登録したのは、上位に投票された回答に対してコメントするためだけです。悪いことに、stackoverflowは新しいメンバーがコメントを投稿することを許可していません。だから、私はこのコメントをもっと答えのように見せなければなりません。
Rory Blythの回答は、2つのjavascriptモバイルフレームワークについて、いくつかの有効なポイントを含んでいます。しかし、彼の重要なポイントは間違っています。真実は、TitaniumとPhoneGapは異なるというよりも、似ているということです。どちらも、一連のjavascript APIを通じて携帯電話の機能を公開し、アプリケーションのロジック(html、css、javascript)はネイティブのWebViewコントロールの内部で実行されます。
-
PhoneGapは、Webアプリのネイティブラッパーというだけではありません。PhoneGap javascript APIを通じて、Webアプリは、Geolocation、加速度計、カメラ、連絡先、データベース、ファイル システムなどの携帯電話の機能にアクセスできます。基本的に、携帯電話SDKが提供する機能はすべて、javascriptの世界とブリッジすることができます。一方、携帯電話のWebブラウザ上で動作する通常のWebアプリは、これらの機能のほとんどにアクセスすることができません(セキュリティが主な理由です)。したがって、PhoneGapアプリは、Webアプリというよりも、モバイルアプリと言えます。確かにPhoneGapを使用して、PhoneGap APIをまったく使用しないWebアプリをラップすることはできますが、それはPhoneGapが何のために作成されたのか、ということではありません。
-
Titaniumは、html、css、javascriptのコードをquot;ネイティブビット"にコンパイルしません。それらは、埋め込み画像ファイルのように、実行可能なバンドルにリソースとしてパッケージされます。アプリケーションが実行されると、これらのリソースはUIWebViewコントロールに読み込まれ、そこで実行されます(もちろん、ネイティブビットではなく、javascriptとしてです)。javascriptからネイティブコード(またはオブジェクトコード)へのコンパイラのようなものは存在しません。これは、PhoneGapでも同じように行われます。アーキテクチャの観点からは、これら2つのフレームワークは非常によく似ています。
さて、両者はどう違うのでしょうか?そうです。まず、TitaniumはPhoneGapよりも、より多くの携帯電話機能をjavascriptに橋渡しすることで、より豊富な機能を備えているように見えます。最も顕著なのは、PhoneGapは、多くのネイティブUIコンポーネントをjavascriptに公開していないことです(もしあったとしても)。一方、Titaniumは、javascriptで呼び出すことができる包括的なUI APIを持ち、あらゆる種類のネイティブなUIコントロールを作成し、制御することができます。これらのUI APIを利用することで、Titaniumアプリは、PhoneGapアプリよりもネイティブに見せることができます。第二に、PhoneGapは、Titaniumよりも多くの携帯電話プラットフォームをサポートしています。PhoneGapのAPIは、より汎用的で、iPhone、Android、Blackberry、Symbianなど、異なるプラットフォームで使用することが可能です。Titaniumは、少なくとも今のところ、iPhoneとAndroidを主なターゲットとしています。そのAPIのいくつかはプラットフォーム固有です(iPhone UI APIのように)。これらのAPIを使用することは、アプリケーションのクロスプラットフォーム能力を低下させることになります。
ですから、もしあなたのアプリをよりネイティブに見せることに関心があるなら、Titaniumの方が良い選択です。もし、アプリを他のプラットフォームに簡単に移植したいのであれば、PhoneGapの方がよいでしょう。
2010年8月13日に更新しました。 ミッキーさんの質問に対するチタン社員の回答へのリンクです。
2010年12月04日に更新しました。 この記事の情報を最新に保つために、年に一度の見直しを行うことにしました。1年の間に様々なことが変化し、最初の投稿にあった情報の一部が古くなってしまったからです。
一番大きな変化は、Titaniumからでした。今年の初め、AppceleratorはTitanium 1.0をリリースし、アーキテクチャの観点から以前のバージョンと大きく異なるものになりました。1.0では、UIWebViewコントロールは使われなくなった。代わりに、あらゆるUI機能のためにTitaniumのAPIを呼び出すことになります。この変更は、いくつかのことを意味します。
-
アプリのUIが完全にネイティブになります。TitaniumのネイティブAPIがすべてのUIニーズを制御するので、アプリにはもうWeb UIはありません。Titaniumは、クロスプラットフォーム・ネイティブUIフロンティアのパイオニアとして、多くの称賛を受けるに値します。Titaniumは、ネイティブUIのルック&フィールを好みながらも、公式のプログラミング言語を嫌うプログラマに、代替手段を提供します。
-
ウェブビューがなくなったため、アプリ内でHTMLやCSSを使用することができなくなります。(注意:Titaniumではまだウェブビューを作成することができます。しかし、ウェブビューで活用できるTitaniumの機能はほとんどありません)。 Titanium Q&A: HTML & CSSはどうなったのですか?
-
DOMオブジェクトの存在を前提としたJQueryなどの一般的なJSライブラリが使えなくなります。コーディング言語としては、引き続きJavaScriptを使用することになります。しかし、あなたがWebプログラマーとしてTitanium 1.0を利用するのであれば、利用できるWebテクノロジーはほとんどこれだけです。
Titaniumのビデオです。Titanium 1.0での新機能。
さて、Titanium 1.0はJavaScriptを"native bits"にコンパイルしてくれるのでしょうか?Appceleratorは、この問題について、この開発者ブログで最終的に明らかにしました。 Titanium Guides プロジェクト。JS環境。 私たちプログラマーは、マーケティング部門の人たちよりも純粋な人たちですよね :-)
PhoneGapに話を移します。PhoneGapについては、あまり目新しいことはありません。私の認識では、今年の後半にIBMが飛びつくまで、PhoneGapの開発はあまり活発ではありませんでした。IBMはNitobiよりも多くのコードをPhoneGapに貢献していると主張する人さえいます。それが事実かどうかは別として、PhoneGapが活発に開発されていることを知るのは良いことです。
PhoneGapは引き続きWeb技術、すなわちHTML、CSS、JavaScriptをベースにしています。PhoneGapは、Titaniumが行っているように、ネイティブUI機能をJavaScriptに橋渡しする計画を持っていないようです。Web UIは、パフォーマンスとネイティブのルック&フィールの面でまだネイティブUIに遅れをとっていますが、その差は急速に縮まってきています。パフォーマンスの面でモバイルWeb UIに明るい機能を保証するWeb技術の2つのトレンドがあります。
-
JavaScriptエンジンがインタプリタから仮想マシンに移行。JavaScriptは、より高速に実行するためにネイティブコードにJITコンパイルされます。 Safari JS エンジン:SquirrelFish Extreme
-
WebページのレンダリングがCPU依存からGPUアクセラレーションに移行。ページ遷移や3Dアニメーションのようなグラフィックを多用するタスクは、ハードウェアアクセラレーションの助けを借りて、よりスムーズになります。 ChromeのGPUアクセラレーションによるコンポジットの実現
このようなデスクトップ・ブラウザー発の改良は、モバイル・ブラウザーにもいち早く届けられています。実際、iOS 3.2やAndroid 2.0以降、モバイルウェブのビューコントロールはより高性能になり、HTML5にも対応するようになった。モバイルWebの未来は、大きな子供を町に呼び寄せるほど有望なのです。 JQueryは最近、モバイルウェブフレームワークを発表しました。 JQuery MobileはUIガジェットを提供し、PhoneGapは電話機能を提供します。この2つを組み合わせることで、完璧なモバイルWebプラットフォームが完成すると私は考えています。
また、次のようなことも書いておきます。 センチャタッチ もうひとつのモバイルWeb UIガジェットフレームワークとして。Sencha Touch バージョン 1.0 は最近、GPLv3 を含むデュアルライセンスモデルでリリースされた。Sencha Touchは、JQuery Mobileと同じようにPhoneGapとうまく動作します。
という方は GWT プログラマー(私のように)、あなたはチェックアウトしたいかもしれない GWTモバイル GWTでモバイルWebアプリを作成するためのオープンソースプロジェクトです。GWTでPhoneGapを使用できるようにするPhoneGap GWTラッパーが含まれています。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] コードサインエラーです。プロビジョニングプロファイル 'XX-YY-ZZ' が見つかりませんでした。
-
[解決済み] ストーリーボードの警告:プロトタイプのテーブルセルは再利用可能な識別子を持つ必要がある
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] 携帯電話でWebページ内のリンクをクリックすると電話がかかってくるようにするには
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】XcodeとSDK 4+を使用してファットスタティックライブラリ(デバイス+シミュレータ)をビルドする。
-
[解決済み】iTunes Connect Screenshots Sizes for all iOS (iPhone/iPad/Apple Watch) devices
-
[解決済み】Androidはほぼリアルタイムのプッシュ通知に対応していますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コードサインエラーです。プロビジョニングプロファイル 'XX-YY-ZZ' が見つかりませんでした。
-
[解決済み] Xcodeにコードの自動整形機能はありますか?
-
[解決済み] KERN_INVALID_ADDRESSとKERN_PROTECTION_FAILUREの違いは何ですか?
-
Cocoaposがエラーを報告 Podsプロジェクトを生成する Abort trap: 6
-
[解決済み】iPhoneのCoreデータをWebサーバーと同期し、他のデバイスにプッシュする方法は?[クローズド]
-
[解決済み】2つのNSDatesを比較する方法。どちらがより新しいですか?
-
[解決済み】iTunes Connect Screenshots Sizes for all iOS (iPhone/iPad/Apple Watch) devices
-
[解決済み】iPhoneアプリでNSErrorを使用するにはどうすればよいですか?
-
[解決済み】Xcode 4がターゲットデバイス上で "finished running <my app>"と表示される -- 何も起こらない
-
[解決済み】Xamarin 2.0 vs Appcelerator Titanium vs PhoneGap [重複]。