web-dev-qa-db-ja.com

SproutCore対カプチーノ

JavascriptとObjective-Jの言語の違いは別として、カプチーノはSproutCoreに比べてどのようなメリットがありますか?

長期予測の観点から、SproutCoreはAppleに支えられているため、カプチーノよりも「サポート」されていますか?

私は2つから選択しようとしています。私はJavaScriptとObjective-Cの両方に精通しています。

46
Sheehan Alam

これは興味深い質問であり、さまざまなメッセージグループ、Twitter、さらにはIRCでもかなり頻繁に出てきます。 SproutCoreとCappuccinoを評価する方法はいくつかありますが、おそらく、人々が注目している直接の比較のいくつかは次のとおりです。

1)それぞれの機能セット
2)使いやすさ
3)コミュニティのサポートとドキュメント

最初のポイントを見てみましょう-それぞれの機能セットがあります。 「機能セット」とは、いくつかの見方があります。彼らが持っているUIウィジェットの数から;物事を相互に接続し、ある種のバックエンドと通信するための基本的なサポート。フレームワークの一般的なアーキテクチャアプローチ。必ずしも「機能」ではありませんが、それでも重要です。そして、はい、あなたが使用できる言語でさえ。

言語に関しては、使用されているもの(JS対Obj-J)を却下しないことが重要だと思います。どうして?養子縁組とあなたがどこから来ているのか。 SproutCoreは、JavaScriptが実際にWebの言語であるという観点から来たので、フレームワークに対してプログラミングするために使用するものです。 JavaScriptが言語に欠けている場合OO完全性(適切なオブジェクト-オブジェクト継承など)はフレームワークで補います(例:MyApp.Foo = SC.Object.extend({...}) )カプチーノは別の角度から登場します。JSに欠けている言語機能を注入するために、JSの主要な言語拡張としてObj-Jを使用します。これは、これらの言語機能をフレームワーク(カプチーノ)自体に直接注入する代わりに使用します。もちろん、カプチーノの人々が以前に指摘したように、JSを使用してカプチーノ本体に対してプログラミングすることはできますが、Obj-Jが提供するものを見逃してしまいます。カプチーノコミュニティへのメモ:私が違う :-)。最後に、あなたがすでにObj-Cに精通している人なら、Obj-Jがあなたのお茶かもしれません。ねえ、ソニーでさえ、モバイルプラットフォームに対して開発するためにObj-Cの時流に乗っているようです:-P。

2つのフレームワークのアーキテクチャを見ると、どちらもAppleのCocoaフレームワークを見て、何らかの形でガイダンス/インスピレーションを得ています。カプチーノはCocoaを完全に心に留め、基本的にCocoasAPIを移植しました。繰り返しになりますが、Cocoaを使用してAppleでアプリを開発している場合は、おそらく自宅にいるように感じるでしょう。一方、SproutCoreは、Cocoaからインスピレーションを得て正しいと感じました。純粋なアーキテクチャの場合、どちらもMVCに従い、Cocoaスタイルのバインディングを使用し、データストアメカニズムを備え、UIウィジェット/ビューをレンダリングおよび構成する独自のスタイルを備えています。

ビューのレンダリングは、私にとって特に重要な領域です。どちらのフレームワークにも、CSSとHTMLを直接処理する必要がないように、ある程度の抽象化があります。ただし、最終的には、Webブラウザーが最終的に理解できるものにレンダリングする必要があります。

カプチーノ側では、CSSとHTMLを完全に抽象化します。代わりに、フレームワークのさまざまなレンダリングプリミティブを使用して、ビューを「描画」します。このレベルの抽象化により、カプチーノは、CSSやHTMLとある程度結合する代わりに、利用可能な最良のレンダリングアプローチを利用できます。

SproutCoreに関しては、いわば「金属」に近づいています。ビューの純粋なレンダリングを行うときは、ある程度の抽象化を提供するレンダリングコンテキストオブジェクトを利用しますが、最終的には、HTMLを直接挿入し、クラス名を追加してCSSを適用します。ビューがレンダリングされた後でも、イベントに基づいてビューの特定の部分を操作したい場合でも、DOM要素に直接アクセスしてそれらのプロパティを操作できます。あなたがどこから来ているかに応じて、これは良いか悪いように見えるかもしれません。 CSSとHTMLの操作に慣れていて、ビューのレンダリング方法とスタイル設定をより直接的に制御したい人に適しています。ブラウザで許可されているもの(HTML/CSS、SVG、HTML5キャンバスなど)に基づいて最適なレンダリングアプローチを利用するために、ビューを一般的にレンダリングする場合は不適切です。ただし、SproutCoreに、より抽象的なレンダリングアプローチを持たせながら、必要に応じてHTMLとCSSを直接​​操作できるようにする将来の計画があることに注意してください。したがって、最終的には両方の長所を活用できます。

さて、ストックUIウィジェット/ビューに関しては、2つのフレームワークが付属しています-それらは両方ともあなたを動かすために箱から出してすぐにたくさんあります。ボタン、ラベル、リスト、セグメント化されたビュー、ラジオボタン、スクローラーなど-それらはすべてそこにあります。したがって、どちらの陣営でも大丈夫だと言っても過言ではありません。

さかのぼって、使いやすさについて説明しましょう。私にとって、使いやすさは、JavaScript、HTML、Obj-C、Cocoa、その他のMVCフレームワーク、ドキュメント、およびコミュニティサポートを使用した個人的な経験に基づいています。 Cocoaを使用したことがない場合、またはデッキトップやiPadのようなアプリを作成したことがない場合は、どのフレームワークを選択しても、少し学習曲線が必要になると言っても過言ではありません。そうは言っても、あなたが知らないことや学びたいことは、各フレームワークのそれぞれのコミュニティとドキュメントを通じて取得できます。どちらも活発なコミュニティを持っているので、どこかで立ち往生しても寒さに取り残されることはありません。ドキュメントに関しては、確かにカプチーノが優勢です。 SproutCoreのドキュメントは不足していますが、コードベースは少なくとも完全にコメントされています。 SproutCoreコミュニティは、更新が必要なドキュメントを完全に認識しており、現在処理中のものであるため、引き続き確認してください。

最後に、2つのフレームワークの長期予測についてお話しました。 MotorolaがCappuccinoフレームワークを購入したことは周知の事実です。そのため、確かにその成長と寿命を支えている大企業があります。少なくとも今のところはそう思われます。 AppleとSproutCoreについては、個人的には話せませんが、Appleはフレームワークを所有していません。多くの企業や個人がいて、フレームワークの開発はより有機的な性質を持っているため、SproutCoreを検討している人にとっては、一時停止したり不快感を覚えたりする可能性がありますが、それは問題ではないと思います。私の感じでは、両方のフレームワークは長い間存在し、特にオープンソースフレームワークを使用した次世代のデスクトップおよびiPadアプリの開発を検討している今では、フレームワーク間の競争は良好です-全員がそれぞれの状態を維持しますつま先:-)。

この情報があなたの決定に役立つことを願っています!

乾杯、

マイク

65
Michael Cohen

Objective-jMichaelについてのコメントに触れたいと思います。

Objective-jではなくJavaScriptにドロップダウンしても、何も失うことはありません。実際には、特に無料のブリッジクラスがある場合は、区別するのが難しいです(これについては後で詳しく説明します)。

Objective-jは、実際にはjsの単なる薄いラッパーです。これは、sproutcoreがフレームワーク機能として実装する言語機能として従来実装されてきた古典的な継承を提供し、コードのインポート、アクセサー生成、静的スコープ、およびメッセージングnilのサポートも提供します。

Objective-jインスタンス変数には、必要に応じて従来のドット構文を介してアクセスできます...私は次のように考えたいと思います。メソッドの作成を開始すると、ほとんどの場合JavaScriptを作成します。つまり、ループ、変数、関数、クロージャなどはすべて単なるJavaScriptです。ドロップダウンしても何も失われません。まさにそれが言語の設計方法です。

CPDate、CPArray、CPException、CPStringなど、私が思い出せないクラスのいくつかを「フリーダイヤルブリッジ」することで、さらに一歩進んでいます。フリーダイヤルブリッジは、CPArray ISネイティブjs配列であり、ネイティブjs配列はCPArrayであるため、両方の世界のメソッドと関数を交換可能に使用できます。

したがって、たとえば、次のことができます。

var foo = [];
[foo addObject:"bar"];
foo.Push("2nd Push");
var value = foo[0];
var value2 = [foo objectAtIndex:0];

alert(value === value2); //true

ご覧のとおり、objective-j構文とjs構文を一緒に使用しています...これがあればその力を想像できます。

混乱がないことを確認するために、最後に出力したいのは、objective-jがブラウザーで解析されることです。事前にコンパイルする必要はありません(ただし、アプリをデプロイする準備ができたときにコンパイルツールを提供します)。

学習に時間がかかる巨大な獣のようにobjective-jに不必要に先送りされる人もいると思います。objective-jはjsに多くの優れた機能を追加しますが、実際にそれらを学習しても実際にはあなたを連れて行かないでしょうあなたがすでにオブジェクト指向プログラミングに精通しているなら、そして明らかにあなたがココアから来ているなら、あなたはすぐに飛び込むことができるでしょう。

16
Me1000

「カプチーノvs.スプラウトコア」についてのブログ記事を書いた。これは技術的な比較ではありませんが、他の興味深いデータを比較します。

http://elii.info/2010/11/cappuccino-vs-sproutcore/

4
Elias

カプチーノのウェブサイトから:

「既存のフレームワークのもう一方の端には、SproutCoreのようなテクノロジーがあります。SproutCoreはカプチーノと同様の目標を掲げていますが、まったく異なるアプローチを採用しています。それでも、HTML、CSS、JavaScript、プロトタイプ、およびまったく新しい独自のセットに依存しています。また、特別な開発ソフトウェアと面倒なコンパイル手順が必要です。これは間違ったアプローチだと思います。

カプチーノを使えば、HTMLを知る必要はありません。 CSSの行を書くことは決してありません。 DOMとやり取りしたことはありません。開発者には、1つのテクノロジー、Objective-J、および1セットのAPIのみを学習してもらいます。さらに、これらのテクノロジーは、よく知られていてよく理解されている既存のテクノロジーの実装です。開発者は、何十年にもわたる集合的な経験を活用して、リッチWebアプリケーションの構築ペースを大幅に加速させることができます。」

したがって、カプチーノにはビルドツールがない/必要がないようで、開発者からブラウザを完全に抽象化します。一方、Sproutcoreではビルドツール(開発サーバーなど)を入手でき、開発者はDOMとは何かをある程度知っている必要があります。

3
hvgotcodes

Michael Cohensの回答は、非常に詳細であったため、ほとんどすべてを網羅していました。

私は過去3週間、決定に苦労してきました。私は両方のフレームワークについてウェブ上にあるすべてを読み、両方を使用して多くのソースサンプルを作成しましたが、それでも決定を下すことができません。次の問題により、私はあるフレームワークから別のフレームワークにジャンプし、決断を難しくし続けています。

  1. Sproutcoreには、カプチーノよりも優れたデータストアAPIがあります。

  2. Sproutcoreは、カプチーノよりもバインディングをうまく利用しています。カプチーノもkvc/kvoをサポートしていますが、バインディングはまだ完全にはありません。たとえば、sproutcoreでは、バインディングとArrayControllerを使用してインクリメンタルロードを非常に簡単に実装できますが、カプチーノではそれほど単純ではありません。もちろん、カプチーノはCPTableViewデータストアAPIを提供します。これは非常にクリーンで、バインディングを使用しない場合でも同様の結果を得ることができます。ココアがコアデータの前に行ったことです。とはいえ、カプチーノではバインディングが絶えず取り組んでいます。

  3. カプチーノは私の個人的な好みに応じてより良いビューAPIを持っています。私はhtmlとDOMの開発に慣れていますが、DOMを完全に抽象化し、cssを取り除くというアイデアを非常に好みます。

  4. 私にとって本当に重要な問題の1つは、sproutcoreに適切なTableViewがないことです。現在、SC.TableViewはアルファ版であり、パフォーマンスはまったくありません。 sproutcoreのテーブルビューのタイムラインがわかりません。 irc sproutcoreチャネルで質問しようとしましたが、満足のいく回答が得られませんでした。一方、カプチーノは非常に最適化された素晴らしいテーブルビューを備えています。

  5. Sproutcoreよりもcappuccinoで書かれた実際のアプリケーションの方が多いことがわかりました。ソースサンプルとしてカプチーノによって提供され、非常に役立つかなり素敵な本格的なアプリケーションもあります。チェックアウト http://githubissues.heroku.com/

私はobjective-cの経験がなく、純粋なjs構文を非常に好むという事実にもかかわらず、おそらく現在のプロジェクトでカプチーノを使用し、sproutcoreが将来より良いテーブルビューで出てくることを願っています。

3