Ответ 1
Это интересный вопрос, который довольно часто выскакивает на разные группы сообщений, твиттер и даже IRC. Есть несколько способов оценить SproutCore и Cappuccino, но, возможно, некоторые из непосредственных соображений, которые люди смотрят, следующие:
1) Их соответствующий набор функций
2) Простота использования
3) Поддержка и документация сообщества
Посмотрим на первую точку - соответствующий набор функций. Под "набором функций" есть несколько способов взглянуть на него. Из количества виджетов пользовательского интерфейса; основополагающая поддержка для соединения вещей и общения с каким-то внешним видом; каркасный общий архитектурный подход, хотя и не обязательно "особенность", но все же важная; и, да, даже язык, который вы можете использовать.
Что касается языка, я считаю важным, чтобы вы не отвергали то, что используется (JS против Obj-J). Зачем? Из-за принятия и того, откуда вы пришли. SproutCore пришел с точки зрения того, что JavaScript действительно является языком Интернета, так что вы используете для программирования против фреймворка. В тех случаях, когда JavaScript не хватает на языке OO полноты (надлежащее наследование объектного объекта и т.д.), Это компенсируется в рамках (например, MyApp.Foo = SC.Object.extend({...})). Капучино приходит под другим углом. Они используют Obj-J в качестве основного улучшения языка для JS, чтобы внедрять языковые функции, отсутствующие в JS; это вместо того, чтобы вводить эти языковые функции непосредственно в структуру (Cappuccino). Конечно, как уже отмечали люди в Cappuccino, вы все равно можете использовать JS для программирования непосредственно с Cappuccino, но тогда вы упускаете то, что предоставляет Obj-J. Обратите внимание на сообщество Cappuccino: Пожалуйста, поправьте меня, если я ошибаюсь:-). Наконец, если вы уже знакомы с Obj-C, то Obj-J может быть больше вашей чашкой чая. Эй, даже Sony, судя по всему, теперь прыгает на всем победителе Obj-C, чтобы развиваться против своей мобильной платформы: -P.
Глядя на архитектуру двух фреймворков, они оба смотрели на структуру Apple Cocoa для руководства/вдохновения в той или иной форме. Cappuccino принял Cocoa полностью к сердцу и в основном портировал Cocoas API. Опять же, если вы собираетесь разрабатывать приложения в Apple с помощью Cocoa, тогда вы, вероятно, почувствуете себя как дома. С другой стороны SproutCore взял вдохновение от Cocoa, где он чувствовал себя хорошо. Что касается чистой архитектуры, они оба следуют MVC, они оба используют привязки Cocoa -style, у них обоих есть механизм хранения данных, и оба они имеют свой собственный стиль визуализации и компоновки виджета/представлений пользовательского интерфейса.
Проведение представлений - это для меня особая область важности. Обе структуры имеют некоторую абстракцию уровня, чтобы удалить вас от прямого взаимодействия с CSS и HTML, хотя в конце концов они должны отображать то, что в конечном итоге понимает веб-браузер.
На стороне Cappuccino они полностью абстрагируют от вас CSS и HTML. Вместо этого вы используете фреймворк различных примитивов рендеринга для "рисования" ваших представлений. Из-за этого уровня абстракции Cappuccino может использовать лучший подход рендеринга, а не связывать вас, в некоторой степени, с CSS и HTML.
Что касается SproutCore, вы оказываетесь ближе к "металу", так сказать. При выполнении чистого рендеринга представления вы используете объект контекста рендеринга, который обеспечивает определенную степень абстракции, но, в конечном счете, вы непосредственно вставляете HTML и добавляете имена классов для применения CSS. Даже после того, как ваше представление было отображено, и вы хотите манипулировать определенными частями представления на основе события, вы можете напрямую обращаться к элементам DOM и управлять их свойствами. В зависимости от того, откуда вы пришли, это может показаться хорошим или плохим. Хорошо для тех, кто привык работать с CSS и HTML, и как более прямой контроль над тем, как визуализируются и стилизуются представления. Плохо, если вы хотите в целом визуализировать представление, чтобы использовать лучший подход рендеринга на основе того, что позволяет браузер (HTML/CSS, SVG, холст HTML5 и т.д.). Но, обратите внимание, есть планы на будущее сделать SproutCore более абстрактным способом рендеринга, но все же позволять вам напрямую работать с HTML и CSS, если вы этого захотите. Таким образом, вы в конечном итоге получите лучшее из обоих миров.
Теперь, что касается виджета/просмотров пользовательского интерфейса запаса, в который входят две рамки: у них обоих есть много возможностей, чтобы вы начали. Кнопки, метки, списки, сегментированные представления, переключатели, скроллеры и т.д. - все они есть. Поэтому можно с уверенностью сказать, что у вас все в порядке в обоих лагерях.
Возвращаясь назад, давайте обсудим простоту использования. Для меня простота использования основана на вашем собственном личном опыте работы с JavaScript, HTML, Obj-C, Cocoa, другими структурами MVC, документацией и поддержкой сообщества. Если вы никогда не работали с Cocoa, или никогда не строили приложение для работы с decktop или iPad, то справедливо сказать, что у вас будет немного кривой обучения, независимо от того, какую структуру вы выберете. Это, как говорится, то, что вы не знаете и хотите узнать, можно получить через каждую структуру, соответствующую сообществу и документам. У обоих есть активные сообщества в том или ином, так что вы не останетесь на холоде, если где-нибудь застрянете. Что касается документов, Каппучино, по общему признанию, имеет верх. Документов для SproutCore не хватает, но база кода, по крайней мере, полностью прокомментирована. Сообщество SproutCore полностью осведомлено о документах, нуждающихся в обновлении, и в настоящее время это то, что рассматривается, поэтому продолжайте проверку.
Наконец, вы упоминали долгосрочный прогноз для двух структур. Это общеизвестно, что Motorola купила платформу Cappuccino, поэтому у вас, безусловно, есть большая компания, поддерживающая ее рост и долговечность, или, по крайней мере, сейчас так выглядит. Что касается Apple и SproutCore, я лично не могу говорить за них, но Apple не владеет этой картой. Есть много компаний и разных людей, которые все используют и вносят свой вклад в рамки. Это может привести к тому, что некоторые люди и компании сделают паузу или дискомфорт для тех, кто смотрит на SproutCore из-за более органичного характера разработки фреймворка, но я не вижу в этом проблемы. Я чувствую, что обе структуры будут работать в течение долгого времени, особенно сейчас, когда больше смотрят на разработку приложений для настольных компьютеров и iPad следующего поколения с использованием фреймворков с открытым исходным кодом. И, эй, конкуренция между фреймворками хороша - держит всех на своих пальцах:-).
Надеемся, что эта информация поможет вам принять ваше решение!
Приветствия,
Mike