Это интересный вопрос, который довольно часто всплывает в различных группах сообщений, в твиттере и даже в IRC. Есть несколько способов сравнить SproutCore с Cappuccino, но, возможно, некоторые из непосредственных параметров, на которые обращают внимание люди, следующие:
1) Соответствующий набор функций
2) Простота использования
3) Поддержка сообщества и документация
Давайте посмотрим на первый пункт -- там соответствующий набор функций. По «набору функций» есть несколько способов взглянуть на это. От количества виджетов пользовательского интерфейса, которые у них есть; фундаментальная поддержка для соединения вещей вместе и связи с какой-то серверной частью; общий архитектурный подход фреймворка, хотя и не обязательно «особенность», но все же важный; и, да, даже язык, который вы можете использовать.
Что касается языка, я думаю, важно, чтобы вы не упускали из виду то, что используется (JS против Obj-J). Почему? Из-за усыновления и того, откуда вы родом. SproutCore исходил из того, что JavaScript действительно является языком Интернета, поэтому вы используете его для программирования в соответствии с фреймворком. Там, где JavaScript не хватает полноты объектно-ориентированного программирования (правильное наследование объекта-объекта и т. д.), он компенсирует это фреймворком (например, 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, у них обоих есть механизм хранения данных, и у них обоих есть свой собственный соответствующий стиль рендеринга и создания виджетов/представлений пользовательского интерфейса.
Рендеринг представлений для меня является особенно важной областью. Оба фреймворка имеют некоторый уровень абстракции, чтобы избавить вас от непосредственного взаимодействия с 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 или никогда не создавали приложение, похожее на десктоп или iPad, то будет справедливо сказать, что вам придется немного поучиться, независимо от того, какой фреймворк вы выберете. При этом то, чего вы не знаете и хотите узнать, можно получить в соответствующем сообществе и документации каждого фреймворка. У обоих есть активные сообщества в той или иной форме, поэтому вы не останетесь в дураках, если где-то застрянете. Что касается документов, Капучино, надо признать, имеет преимущество. Документы для SproutCore отсутствуют, но кодовая база, по крайней мере, полностью прокомментирована. Сообщество SproutCore полностью осведомлено о том, что документы нуждаются в обновлении, и в настоящее время этим занимаются, так что продолжайте проверять.
Наконец, вы упомянули долгосрочный прогноз для двух фреймворков. Общеизвестно, что Motorola купила платформу Cappuccino, так что у вас наверняка есть крупная компания, поддерживающая ее рост и долговечность, или, по крайней мере, на данный момент так кажется. Что касается Apple и SproutCore, я лично не могу говорить за них, но Apple не владеет фреймворком. Есть много компаний и разных людей, которые так или иначе используют фреймворк и вносят в него свой вклад. Это может вызвать у некоторых людей и компаний паузу или дискомфорт для тех, кто смотрит на SproutCore, из-за более органичного характера разработки фреймворка, но я не вижу в этом проблемы. Мне кажется, что оба фреймворка будут существовать еще долгое время, особенно сейчас, когда все больше внимания уделяется разработке настольных приложений и приложений для iPad следующего поколения с использованием фреймворков с открытым исходным кодом. И, эй, конкуренция между фреймворками — это хорошо — держит всех в напряжении :-).
Надеюсь, эта информация поможет вам принять решение!
Ваше здоровье,
Майк
person
Michael Cohen
schedule
26.11.2010