Какой ваш опыт развивается в Scala / Lift? - PullRequest
47 голосов
/ 05 сентября 2010

В последнее время я слышал много хорошего о Scala и веб-фреймворке Lift , особенно от парней Foursquare , поэтому я мог бы использовать эту технологию в своемследующие проекты.

  • Кто-нибудь из вас разрабатывает Scala / Lift?
  • Какой у вас опыт разработки на этой платформе и в чем ее преимущества перед Ruby On Rails или Python / Django?
  • Считаете ли вы ее жизнеспособной технологией и «чем-то, за чем нужно следить» в течение следующих нескольких лет?

Стоит ли это того? Поделитесь своим опытом на платформе Scala / Lift.

Ответы [ 3 ]

28 голосов
/ 05 сентября 2010
  1. Сейчас я делаю большинство своих вещей в Скале. (Должен отметить, что я думаю, что Scala - лучшая вещь с момента изобретения колеса некоторое время назад. :-D)

    По моему скромному мнению, это единственный язык, который действительно позволяет людям выбирать лучший подход к задаче без какого-либо ненужного разделения между (более) объектно-ориентированным и (более) функциональным подходами.

    Глядя на языки, которые утверждали нечто подобное раньше, я в основном вижу два конкурирующих языковых лагеря дизайна:

    • Те из объектно-ориентированной стороны, которые увидели, что функциональное программирование в последнее время приобрели некоторую популярность, и подумали: «Ну, мы не очень понимаем эту функциональную вещь, но давайте добавим немного необычного синтаксического сахара в наш язык, поэтому мы можем утверждать, что это также функционально! " (примеры: Java, Python)

    • Затем те из функциональной стороны, которые думали: «Ну, наш функциональный подход намного превосходит все остальное, и эта объектно-ориентированная ерунда раздражает, но давайте добавим несколько дополнительных ключевых слов в наш язык, которые сделают наш язык ускользнет от научного сообщества точно! (примеры: F #, OCaml)

    Дизайнеры Scala объединили множество подходов, исходящих с обеих сторон, и создали какой-то хорошо продуманный язык, который, по моему скромному мнению, является самым большим отличием от других языков, которые решили использовать подход Франкенштейна к проектированию языков программирования.

  2. Проделав с Lift только небольшие вещи и только поверхностный опыт с Rails и Django, я должен признать, что большую часть времени, когда я удивлялся, почему что-то в Lift работает не так, как я ожидал, это было связано с тот факт, что мои ожидания были ошибочны, а подход Лифта превосходил.

    Lift, конечно, не является "простым введением в Scala", но изучение работы Lift было почти таким же полезным, как изучение Scala до него.

    Возможность иметь «чистое» представление без какой-либо логики в нем является большим улучшением для других платформ, которые утверждали то же самое, но не достигли этого. Поддержка литералов XML в Scala позволяет проверить правильность вашего ответа: во время компиляции компилятор докажет, что вы отправляете клиенту только правильно сформированный XML.

  3. Lift является жизнеспособной технологией и на данный момент единственным реальным подходом, если вы хотите создавать веб-приложения, которые выглядят, чувствуют и ведут себя как «настоящие» настольные приложения без написания безумных объемов кода самостоятельно.

9 голосов
/ 11 апреля 2011

Я сейчас работаю над своим вторым приложением Lift - оно очень сильно в ласковом месте Lift - очень в реальном времени, много параллелизма.

Первое, которое мы потеряли после нескольких дней борьбы сслой БД (теперь мне лучше поверить), и вместо этого он перешел в Play / Scala.Это позволило максимально расширить имеющиеся знания нашей команды и сделать возможным установление сроков.Но горячая перезагрузка кода практически прекратилась, когда наш проект стал достаточно большим (продолжал работать PermGen - это постоянная проблема с компиляцией Scala где угодно) и ручным манипулированием такими вещами, как параметры вызова метода и безопасность расположения в разных местах.на сайте получилось довольно громоздко.Мы были рады, когда это было сделано - так же, как я склонялся к поиску Rails 1, скорость увеличивалась с уменьшением размера проекта, и к концу все стало таким же утомительным и подверженным ошибкам, как работа в Velocity /.Spring / XML ++ и т. Д.).

На этот раз мы посвятили себя тому, чтобы просто понять, как Lift делает то, что он делает, и правильные способы делать вещи.Это означало много случайного просмотра списка рассылки (обсуждения, которые имеют несколько версий, часто все еще актуальны), и, что наиболее важно, новый дух для команды.Необходимо было очень сильно усвоить девиз:

«Это тяжело и повторяется. Держу пари, что они сделали более легкий способ сделать это».

До сих пор Lift никогда нас не разочаровывал.Между прочим, я не говорю о таких вещах, как Sitemap и синтаксис конкатенации списков - вы ДОЛЖНЫ иметь довольно хороший контроль над функциональным Scala, иначе вы просто не сможете читать исходный код или даже настраивать свое приложение.

Это говорит о том, что это не сумасшедшие монады ввода-вывода или что-то в этом роде, просто некоторые распространенные идиомы, которые вы все равно найдете в течение нескольких недель в Scala.

Самой большой проблемой для нас была медленная компиляцияцикл.Для этого требуется около 20 секунд: запустите наш проект, который отличается от Play, который (когда он работает) в горячем режиме компилирует все ваши вещи.С другой стороны, мы на самом деле рассчитывали, что на днях один из наших разработчиков пожаловался на это, и оказалось, что, хотя Play технически скомпилировал его, странице все равно потребовалось 12 секунд для загрузки в режиме Dev.Таким образом, это не большая потеря, просто кажется немного медленным, чтобы прыгать в командную строку.

Lift позволяет вам многое сделать, и в нашем приложении есть много мест, где (потому что оно доступно), мы сказали: «Да, мы действительно предпочли бы, чтобы это живое обновление немедленно обновлялось для всех зрителей этой страницы, вместо того, чтобы потом обнаруживать, что они устарели (подумайте о том времени, когда вы публиковали одновременнокто-то на SO, с тем же ответом.) COMET есть везде, оказывается - это не случай специалиста, а способ, которым все должно работать. И Lift делает это действительно простым.

Мы также любим сильных, программно настраиваемая модель безопасности - как только мы переключили свои взгляды на «Мы должны занести в белый список каждое местоположение и указать необходимые условия входа», мы никогда не видели другой проблемы сеанса - вы знаете, те, где вы предполагали, что пользователь прошел быопределенный путь, и, следовательно, будет знать целую кучу параметров? Например, действительный пользователье, а область интересов или как?(Я намеренно расплывчато).Это может быть одной из неловких вещей в инфраструктуре с состоянием, когда вы захотите иметь пригодное для использования состояние, когда пользователь переходит на страницу, вместо того, чтобы (например) просто требовать, чтобы все состояния переносились при каждом запросе.

Мой вывод из этого обновленного выстрела в Лифт:

Оно того стоит.Не только для создания приложения, которое вы пытаетесь создать, но и для создания приложения, которое вы не знали, что вам нужно.

Там много царапин на голове, но не так много кода. И когда это работает, это действительно работает. Он быстрый и чистый, и, несмотря на все чудеса работы браузера и сервера, я еще ни разу не видел, чтобы он запутался.

7 голосов
/ 02 февраля 2011

Я занимаюсь разработкой корпоративного финансового приложения в Lift более 6 месяцев, и я был программистом JAVA. Я заметил несколько моментов, которые могут вам помочь:

  1. Я пишу заметно меньше строк кода ( отличный пример )

  2. Вокруг Lift есть очень любезное сообщество . Они всегда пытаются дать содержательный ответ. У меня нет плохого опыта. Даже они открыты для новых предложений по новым функциям в Lift. Они одобрили два моих предложения!

  3. Новая стабильная минорная версия Lift объявляется каждые 6 - 8 недель. Новый этап регулярен каждые две недели.

  4. Lift - отличный фреймворк для веб-приложений. Вы можете прочитать о семи основных функциях Lift.

  5. Поднять модуль ORM по умолчанию - Mapper не для больших и продвинутых моделей баз данных с большим количеством внешних ключей и ограничений. Нам пришлось использовать Скверил.

Я не могу себе представить, что мне сейчас нужно возвращаться к коду JAVA. Но мой маленький совет - попытаться написать простое приложение, и вы увидите.

...