Учитывая различные преимущества языка Scala я решил записать свое следующее веб-приложение в Scala. Однако я должен использовать Калитку или Лифт? Я знаком с Калиткой, и как он вполне немного, но знаю очень мало о Лифте. Действительно ли изучение Лифта стоит усилия в этом контексте?
В словах порядка, как Лифт выдерживает сравнение с Калиткой? Учитывая, что веб-приложение будет в Scala, использование Лифта могло сделать мою жизнь как разработчика легче?
Если вам нравится Wicket, вам следует придерживаться того, что вы знаете и любите. Wicket - отличный веб-фреймворк, а работа на Scala и Wicket очень приятна, потому что вы можете использовать черты Scala для компоновки классов в Wicket... это действительно сокращает количество шаблонов по сравнению с Java.
У Lift есть сильные стороны, которых нет у Wicket:
Что касается комментариев в этой теме, я хотел бы не согласиться с некоторыми из сделанных заявлений:
Но, повторюсь, если вам нравится Wicket, придерживаться Wicket - отличный выбор... Wicket еще лучше в Scala.
Я сделал несколько веб-приложений на Lift. Исходя из традиционного фона Java с большим количеством Maven + JSF / Facelets + Spring + Hibernate, я должен признать, что, хотя я люблю Scala, меня разочаровывают некоторые слабые стороны Lift. В частности, я думаю, что в сниппетах часто смешиваются бизнес-правила с деталями интерфейса. Кроме того, очень сложно реализовать комплексное модульное тестирование.
Я не знаком с Wicket, но на данный момент я пишу приложение с использованием Play Framework. Поддержка Scala в основном работает неплохо, есть модуль Akka. Akka прекрасно подходит для любых нетривиальных приложений, требующих масштабирования.
Play выглядит очень многообещающе, хотя он все еще находится в активной разработке, документация также кажется довольно хорошей. Инфраструктура CRUD удобна для быстрого перехода в функциональное состояние или для создания простого интерфейса администратора для данных, которые не будут меняться очень часто.
Уикет и Лифт - совершенно разные звери. У меня есть некоторые знания об обеих средах (но далеко от экспертного уровня, который вы обычно видите здесь):
Wicket: Каждая страница на веб-сайте имеет страницу с шаблоном HTML и вспомогательный класс Java / Scala. Магия Wicket состоит в том, чтобы подключить страницу шаблона HTML к соответствующему классу и сопоставить каждый идентификатор Wicket в шаблоне с правильным методом в классе, чтобы данные были видны на сгенерированной странице HTML, отправленной клиенту. Вот и все. Wicket - это чистая сеть и не более того. Очень легко создавать собственные графические компоненты в Wicket и наследовать от них.
Lift: Lift был создан Дэвидом Поллаком как реакция на проблемы, возникшие у него с Rails. Что ему нужно, так это производительность и безопасность. Подъемник быстрее и безопаснее, чем Rails. На самом деле он очень безопасен и автоматически обрабатывает атаки SQL-инъекций, CRSF, XXS и повторного воспроизведения.
Lift делает то же самое, что и Rails (сопоставляется с БД), но сильно отличается от Rails. Ментальное наследие Rails очевидно, поскольку некоторые API в Lift используют синтаксис Ruby (с подчеркиванием и вопросительными знаками в инспекторах), что может удивить разработчика Scala. Lift - это не классический MVC-фреймворк, такой как Wicket, это Model-ModelView-View. На самом деле Lift больше ориентирован на цикл запрос-ответ. Он предназначен для имитации программирования GUI, управляемого событиями (например, Java Swing или .NET GUI). Это означает, что HTML-элементы и действия записываются в одном месте:
var inputName = ""
SHtml.text(inputName,s => inputName = s)
Этот код создаст входной HTML-тег, подобный этому:
<input type="text" value=""/>
, и подключит функцию к переменной, чтобы входные данные были сохранены. Структура такая же, даже если вместо HTTP GET / POST используется AJAX.
Лифт выразительный и мощный, но не очень легкий.
Пожалуйста, поправьте меня, если это не так!