[解決済み】Xamarin 2.0 vs Appcelerator Titanium vs PhoneGap [重複]。
質問
今年のIDEの進化(話題のプラットフォームはすべて変更されています)を受けて、これらのプラットフォームの技術状況を理解したいと思っています。
それぞれの長所と短所は何ですか? また、そのアプローチには限界があるのでしょうか?
C#とJavascriptの経験が豊富で、プログラム言語の影響がないため、どちらかに傾いてしまうことがあります。
どのように解決するのですか?
概要
によって報告されました。 ティム・アンダーソン
クロスプラットフォーム開発 は 大きな問題 そして、すべての人が同じプラットフォームを使う日が来るまでは、そうあり続けるでしょう。アンドロイド? HTML?WebKit? iOS?Windows?Xamarin?Titanum? PhoneGap? Corona? ecc.
時々、次のような言葉を耳にします。 基本的に2つのアプローチがあります。 クロスプラットフォームモバイルアプリの 次のどちらかです。 使用 アン 埋め込み ブラウザ制御 を記述し ネイティブアプリとしてラップされたウェブアプリ のように Adobe PhoneGap/CordovaやSenchaが採用する同様のアプローチ、あるいは できる 使用 a クロスプラットフォームツール その ネイティブ アプリ Xamarin Studio、Appcelerator Titanium、またはEmbarcarderoなどのような。 FireMonkey
しかし、2番目のカテゴリーの中にも、多様性があります。特に は、ユーザーをどの程度抽象化するかという点で異なります。 インターフェース
ここがトレードオフです。クロスプラットフォーム・フレームワークを設計する場合 は、どのプラットフォームでもほぼ同じようにアプリケーションを動作させることができます。 UIデザインを全プラットフォームで共有するのであれば、それは難しいことです。 どのような場合でも、同じように正しいデザインであると感じられるようにします。そのほうが 多くのゲームで採用されているような、個性的なデザインにすることで アプリに特徴を持たせ、その一貫性を美徳とする。 を持つことはできませんが、そのような場合であっても、そのプラットフォーム どのプラットフォームでも
編集 2014年のXamarin v3から、以下の選択が可能になりました。 Xamarin.Forms(ザマリン・フォーム と同様に、ここで述べた哲学に従った純粋なネイティブもあります。
一方、Xamarin Studioでは、共有のGUIフレームワークを提供しようとはしていません。
<ブロッククオート私たちは、ユーザーインターフェースの抽象化レイヤーを提供しようとはしていません。 すべてのプラットフォームで。それは、すべてのプラットフォームに対応するための悪いアプローチだと思います。 最小公倍数的なユーザーインターフェース (Nat FriedmanからTim Andersonへ)。
しかし、アプリのために2つ以上のユーザーインターフェースデザインを維持するための労力がかかるという欠点があります。
PhoneGapとTitaniumの比較は、以下の記事でよく報告されています。 ケビン・ウィナーリー のブログで紹介しています。
PhoneGap
<ブロッククオートPhoneGapの目的は、次のことを可能にすることです。 HTMLベースのWebアプリケーション を デプロイされ ネイティブアプリケーションとしてインストールされる . PhoneGapウェブ アプリケーションはネイティブアプリケーションのシェルでラップされており は、複数のプラットフォームのネイティブアプリストアからインストールすることができます。 さらに、PhoneGap は、共通のネイティブ API セットを提供するように努めています。 ウェブアプリケーションでは通常利用できない、基本的な カメラへのアクセス、デバイスの連絡先、センサーなど、まだ公開されていな ブラウザを使用します。
PhoneGapアプリケーションを開発するために、開発者は以下のものを作成します。 HTML、CSS。 およびJavaScript を開発するのと同じように、ローカルのディレクトリに 静的なウェブサイト アプローチ ネイティブクオリティのUIパフォーマンス での ブラウザは自明な課題であり、Senchaは大規模なウェブチームを擁しています。 この問題を解決するために、プログラミングの専門家がフルタイムで取り組んでいます。しかし しかし、今日、ほとんどのプラットフォーム、ブラウザにおいて ネイティブクオリティのUIパフォーマンス とレスポンシブであることは、単に 不可能 たとえSencha Touchのような高度なフレームワークであってもです。では しかし、ブラウザはすでに「十分」なのでしょうか?それはあなたの要求次第です。 しかし、ネイティブUIに比べれば、間違いなく見劣りします。 ブラウザによっては、もっと悪い場合もあります。
PhoneGapは、人が思っているほど真のクロスプラットフォームではなく、すべての機能がすべてのプラットフォームで等しくサポートされているわけではありません。
-
Javascriptはアプリケーションスケールのプログラミング言語ではなく、グローバルスコープでのやり取りが多く、異なるライブラリがうまく共存できないことが多いのです。knockout.jsとjQuery.mobileをうまく共存させるために何時間も費やしましたが、いまだに問題が残っています。
-
フレームワークやライブラリの状況が断片的である。選択肢が多すぎるし、十分に成熟していないものが多すぎる。
-
不思議なことに、私たちのアプリのニーズに対しては、まともなパフォーマンスを達成することができました(jQuery.Mobileでは無理でしたが...)。jqMobiを試してみました(あまり成熟していませんが、高速です)。
-
他のアプリやデバイスの機能との相互作用は非常に限られています。また、HTML5には、ジオロケーション、カメラ、ローカルデータベースなどの一部を除き、標準が存在しないため、いずれにしてもクロスプラットフォームにはならないでしょう。
によって カール・ワクラウエク
Appcelerator Titanium
の目標は チタン Mobileは、高いレベルを提供することです。 クロスプラットフォームJavaScript ランタイムと モバイル向けAPI の開発(現在では、iOS、Android、Windows Phoneをサポートしています。Titaniumは、実際には、PhoneGap、Adobe AIR、Corona、Rhomobileよりも、MacRuby/Hot Cocoa、PHP、node.jsとの共通点が多いのですが、そのような共通点はありません。Titaniumは、モバイル開発に関する2つの主張の上に成り立っています。 - プラットフォーム間で正規化できるモバイル開発APIのコアが存在します。これらの領域は、コードの再利用のためにターゲットとされるべきです。 - プラットフォーム固有のAPI、UI規約、そして、開発者がそのプラットフォーム向けに開発する際に取り入れるべき機能が存在します。これらのユースケースには、可能な限り最高のエクスペリエンスを提供するために、プラットフォーム固有のコードが存在するはずです。
そういった理由からです。 Titaniumは、"一度書いたら、どこでも使える "というものではありません。 . Xamarinと同じですね。
Titaniumは、Xamarinと似たような方向で、さらに一歩踏み込んだことをしようとしています。実際には、深さの異なる2つのレイヤーを行う予定です。レイヤーTitanium(in JS)は、バチバチのJS-of-Titaniumを提供します。あなたはより低レベルに行きたい場合は、追加のレイヤーを作成している(ハイパーループと呼ばれる)、ここで(常にJSで)SOのネイティブAPIに直接戻ってあなたを呼び出すために
Xamarin (+ MVVMCross)
<ブロッククオートXamarin(元々はNovellの一部門)は、この1年半で は、Visual Studio用の独自のIDEとスナップインを市場に投入しています。 この Monoの大前提は、異種のモバイルアプリケーションを作成することです。 を使用して、ネイティブUIの開発戦略を維持しながら、C#を使用しています。
ネイティブアプリを開発するためのビジュアルデザインプラットフォームを構築したほか また、テスト・スイートの統合、ネイティブ・アプリケーションの導入など、さまざまな取り組みを行っています。 ライブラリのサポート、Nuget スタイルのコンポーネントストアなどです。最近、彼らは IDEでiOSのビジュアルデザインを提供し、開発者を解放しています。 XCodeを開くことから解放されます。 Visual Studioでは、3つのプラットフォームすべてが をサポートし、クラウドテストスイートも視野に入れています。
Xamarinは最初からリッチなAndroidのビジュアルデザインを提供しています。 を体験できます。私はまだEclipseや他のIDEをダウンロードしたり開いたりしたことがありません。 Xamarin以外では。 本当にすごいのは、LINQを使えるようになったことです。 コレクションを操作し、カスタムデリゲートとイベントを作成する。 objective-CやJavaの制限から解放されました。多くの Newtonsoft JSON.Netのようなライブラリは、私が甘やかされてきたものです。 の3つの環境で完璧に動作します。
私の考えでは、以下のようないくつかの大きな利点があります。
- ネイティブ・パフォーマンス
- コードが読みやすい (IMO)
- テスタビリティ
- クライアントとサーバーの間で共有されたコード
- サポート (Xamはbugzillaでもっとうまくできるはずですが)
私にとってのアップグレードは、XamarinとMVVMCrossを組み合わせて使うことです。これはまだ新しいフレームワークですが、他のいくつかのフレームワーク(MvvmLightやmonocrossなど)の経験から生まれたもので、現在ではいくつかのリリース済みのクロスプラットフォームプロジェクトで使用されています。
まとめ
これらの枠組みを理解した上で、私が選択したのは、開発ツールを 製品ニーズ . しかし、一般的には、(たとえ初期のオーバーヘッドが高くても)使いやすいと感じたツールを使い始めれば、ずっとそれを使い続けることになるのです。
私が選んだのは Xamarin + MVVMCross そして、この選択に満足していると言わざるを得ません。 ソフトウェアのアップデートやシステムの限定的な機能、あるいは最も些細なフィーチャーグラフィックスを見るために、Native SDKに近づくことを恐れないからだ。 かなり構造化されたコードを書く (DDD+SOA)です。 は非常に便利です を持たせることです。 コアプロジェクト は、C# のネイティブなビューの実装と共有されています。
参考文献とリンク
- http://www.theregister.co.uk/Print/2013/02/25/cross_platform_abstraction/
- http://kevinwhinnery.com/post/22764624253/comparing-titanium-and-phonegap
- http://forums.xamarin.com/discussion/1003/your-opinion-about-several-crossplatform-frameworks#Comment_3334
- http://azdevelop.azurewebsites.net/?page_id=181
- https://github.com/MvvmCross/MvvmCross
- http://pierceboggan.com/post/51671827932/binding-third-party-objective-c-libraries-in
関連
最新
-
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 実装 サイバーパンク風ボタン