Подтвердить что ты не робот

Каковы ваши опыты в Scala/Lift?

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

  • Есть ли у вас Scala/Lift Developers?
  • Назовите свой опыт для разработки на этой платформе и каковы ее преимущества перед Ruby On Rails или Python/Django?
  • Вы видите это как жизнеспособную технологию и "что-то следить за" в течение следующих нескольких лет?

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

4b9b3361

Ответ 1

  • Сейчас я делаю большую часть своих вещей в Scala прямо сейчас. (Я должен упомянуть, что я думаю, что Scala - лучшая вещь с момента изобретения колеса некоторое время назад.: -D)

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

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

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

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

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

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

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

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

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

Ответ 2

В настоящий момент я работаю над своим вторым приложением Lift - это очень сильно в Lift sweet spot - очень в реальном времени, много concurrency.

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

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

"Это ощущение тяжело и повторяемо. Держу пари, что они сделали более простой способ сделать это".

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

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

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

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

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

Мой взнос от этого возобновленного выстрела на подъеме:

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

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

Ответ 3

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

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

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

  • Новая стабильная небольшая версия Lift объявляется каждые 6-8 недель. Новая веха является регулярной каждые две недели.

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

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

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