Я нахожусь на стадии планирования веб-приложения, и я пытаюсь выбрать между GWT и Cappuccino. У меня есть идея, какая из них лучше, но мой партнер продается по другому выбору. Я надеялся получить некоторые отзывы о плюсах и минусах для каждого из людей, которые использовали тот или другой или оба. Заранее благодарим за любое понимание, которое у вас может быть.GWT против Cappuccino
ответ
Toolkit в/с Framework
GWT является toolkit. Его сила заключается в инструментах, которые он предоставляет для создания приложения. Однако он не обеспечивает рамки. Разработчики обычно строят небольшую структуру над GWT в соответствии с их потребностями. Было много внимания на шаблоне MVP для создания приложений, но это не единственный способ использовать GWT.
Cappuccino - Framework. Он имеет предписанный способ создания приложений. Кроме того, он предоставляет библиотеки для выполнения задач высокого уровня, таких как анимация, drag-and-drop undo/redo и т. Д. GWT не предоставляет библиотеки для таких задач, хотя доступны сторонние библиотеки.
Это означает, что приложения Cappuccino, как правило, богаче, чем соответствующие приложения GWT.
Offline компиляции в/с Продолжительность Перевод
GWT верит в принятии решений во время компиляции. Обнаружение браузера, I18N, встраивание изображений, генерация спрайтов, оценка шаблона uibinder выполняются во время компиляции. Deferred Binding позволяет разработчикам использовать эту концепцию в своих приложениях.
EDIT
Капучино, по умолчанию, не нуждается в компиляции. Браузер загружает файлы цели-j, а затем фреймворк переводит/интерпретирует их непосредственно во время выполнения. Однако возможно compile using jake. Вы можете выбрать один из нескольких мини-двигателей/компрессоров, включая google's closure compiler.
В результате этого архитектурного решения, GWT приложения, как правило,
быстрее во время выполнения чем эквивалентные приложения каппучино.Однако из-за времени компиляции,
развития, как правило, медленнее, чем Cappuccino. Плагин разработки GWT несколько облегчает эту боль, но стоимость не исчезает полностью.
Поскольку GWT является компилятором
closed-world
, он может удалить неиспользуемый код, встроенные вызовы методов, внутренние строки и оптимизировать код способами, которыми Cappuccino не может. Если Cappuccino должен был ввести этап компиляции, то
мог бы выполнить ту же оптимизацию; но, насколько мне известно, нет способа сделать перевод во время компиляции.
С необязательной стадии компиляции, этот пункт становится спорным. Однако приложения-капучино, которые не выполняют такую компиляцию, будут иметь низкую производительность по сравнению с приложением GWT.
Тип безопасности
GWT является Java - и поэтому type safe. Объект J является javascript и поэтому динамически типизирован. У этого есть свой advantages and disadvantages, и поскольку это религиозная дискуссия, я воздержусь от суждения.
Отладка
GWT предоставляет плагин для браузера, который помогает разработчикам непосредственно отладки Java код. В режиме разработки разработчики могут увидеть следы java стека. Однако во время выполнения сгенерированный JS-код запутывается и очень сложно отлаживать (хотя есть способ сказать GWT «не обфускать мой код»).
С помощью super-dev-mode теперь можно отлаживать код Java непосредственно из веб-браузера.
Cappuccino не имеет режима разработки, а это значит, что вы должны использовать существующие инструменты, такие как firebug для отладки. Ошибки сообщаются браузером, а для отладки кода вы должны использовать отладчики JS.
Модульного тестирование
С GWT, вы можете написать чистую тестовую яву единицы, которые не требуют браузера для запуска. Это имеет очевидные преимущества - некоторые из них - скорость и способность повторно использовать существующую инфраструктуру. Когда вам нужен браузер для тестирования, вы можете выбрать GWTTestCase или HTMLUnit. Его также можно тестировать с использованием селена.
Приложения Cappuccino могут быть протестированы с использованием OJTest. К сожалению, я не мог найти много документации по этому вопросу, поэтому не могу много комментировать. Конечно, вы всегда можете использовать Selenium для тестирования вашего webapp.
Взаимодействие с Javascript
GWT предоставляет возможность поговорить с существующими библиотеками JS - его называют Javascript Native Interface. Он зрелый и хорошо работает, но на самом деле не интуитивно. Объект J - это javascript, поэтому вам не нужно ничего делать, чтобы взаимодействовать с Javascript.
Видение
Я не могу поддержать этот аргумент, но GWT стремится сосредоточиться на создании веб-приложений с высокой производительностью, не заботясь много о внешний вид и чувствовать. Они никогда не компрометируют производительность.Cappuccino, с другой стороны, имеет тенденцию сосредотачиваться на более высокоуровневых функциях и структурах, а также на компромисс в отношении производительности во время выполнения.
В результате приложения Cappuccino выглядят богаче, но требуется некоторое время для загрузки. Приложения GWT загружаются и реагируют быстрее, но выглядят скучными. Я уверен, вы можете обойти обе проблемы, но так оно и есть.
сообщества Поддержка и Подложка
GWT поддерживается Google. Их приверженность GWT довольно сильная. Более новые приложения (Wave, Adwords, Orkut) из Google построены на GWT. У Google IO было несколько сессий по GWT. user forum довольно активен и отзывчив, а сам инструментарий активно развивается и поддерживается Google и сообществом с открытым исходным кодом. Cappuccino user group не так активен и имеет гораздо меньше членов.
Шри, это тонна хорошей информации! Спасибо за сравнение! – James
Отличное резюме. Тем не менее, «Offline Compilation v/s Runtime Translation» неверен. Cappuccino предоставляет автономный компилятор. При разработке вашего приложения вы можете не использовать его для сохранения этапа компиляции, и Cappuccino затем будет прозрачно компилировать ваш код во время выполнения. Перед развертыванием вы обычно компилируете офлайн, прежде чем сводить к минимуму и запускать оптимизаторы, такие как инструмент удаления мертвого кода «сгладить». –
В Cappuccino есть флаг безопасности экспериментального типа, хотя это проверка времени выполнения, а не время компиляции. Это не очень полезно в это время. –
Я гораздо более опытен с Cappuccino, чем GWT, но из-за его взглядов GWT выглядит невероятно быстро и довольно надежно. В конце концов, это подкрепляется довольно большим игроком в интернет-поле. Демонстрация в Google IO была впечатляющей. Хотя это может измениться, приложения GWT полностью покидают Cappuccino в пыли, когда дело доходит до времени загрузки и размера развертывания сегодня.
Это говорит о том, что я пошел с Капучино по двум причинам: во-первых, в то время как GWT является классическим «хорошим» техническим решением, Cappuccino нацелен на «только лучшую, достаточно хорошую» аудиторию. Я считаю, что с Cappuccino вы можете достичь стандарта, который редко можно увидеть в Интернете раньше. Не только в симпатичных пикселях, но и в сырой функциональности и мощности, где все работает только на уровне рабочего стола. Перетаскивание, отмена стека, прокрутка и изменение размера жидкости, разделение панелей и многое другое. GWT догоняет, как видно из Google Wave, но у него долгий путь, и Google традиционно не заботится о польском языке. Это видно, например, в Gmail, который по-прежнему не только выглядит серым, но неуклюжим в взаимодействии с пользователем после этого много лет.
Вторая причина, по которой я пошла с Cappuccino, - это то, что Java приводит меня в безумное состояние с ее негибким, смехотворным многословным и нечитаемым стилем. Но это может быть только я.
вы пошли с Objective-J из-за смехотворного и нечитабельного стиля Java? – seanmonstar
Objective-J является подробным в том смысле, что он имеет длинные имена методов, Java является многословным в том смысле, что вам нужно написать больше строк кода. Для меня это имеет большое значение. –
Я замечаю нечитаемый стиль Objective-J. это самое главное для меня. – seanmonstar
Вы могли бы быть заинтересованы в моем новом GWT UI Framework, CappuccinoGWT
Без каких-либо детальных требований к проекту вы хотите сделать, это своего рода вопрос нельзя ответить. И даже тогда вы в основном получали мнения с обеих сторон забора - у всех есть свои фавориты. Я бы рекомендовал попробовать обе фреймворки, чтобы получить «почувствовать» их и выбрать тот, который лучше всего подходит вашему * стилю. –
Я согласен с тем, что ответы на этот вопрос будут только мнениями или личными предпочтениями, но я все равно хочу знать, что нравится и нравится людям в обеих структурах. Благодаря! – James