Какие веб-фреймворки Scala доступны?
Я только начал изучать Scala, и первое, что я собираюсь реализовать, - это крошечное веб-приложение. В прошлом году я использовал Erlang для реализации программного обеспечения на стороне сервера, но никогда раньше не писал веб-приложений. Это будет отличный опыт.
Существуют ли веб-фреймворки для Scala кроме Lift?
Не поймите меня неправильно, Лифт выглядит потрясающе. Я просто хочу знать, сколько существует фреймворков, чтобы потом выбирать между ними. Всегда хорошо иметь выбор, но я нашел только Лифт.
18 ответов
Я очень заинтересован в Scala, но я еще не использовал его, поэтому, с учетом этого предостережения, фреймворки, о которых я знаю, не упомянуты в ответе HRJ (Lift, Sweet, Slinky):
Я написал в блоге об этом.
Подводя итог, некоторые из вариантов:
Я наконец обнаружил, что ни один из них не подходит для меня, и разработал мою собственную маленькую "основу". (Это еще не с открытым исходным кодом).
Ниже приводится дамп рамок. Это не значит, что я на самом деле использовал их:
Коус. Традиционный веб-фреймворк MVC для Scala.
Нефильтрованный Инструментарий для обслуживания HTTP-запросов в Scala.
Аморе Порт Scala веб-платформы Ruby Sinatra
Весы XML. Гибкий подход к обработке XML и упрощенный способ взаимодействия с XML.
Пояс Rack-подобный интерфейс для веб-приложений, построенный на основе Scalaz-HTTP
MixedBits. Основа языка программирования Scala для создания веб-сайтов.
Круговой спуск Объединяет несколько автономных проектов с открытым исходным кодом для разработки приложений с использованием языка программирования Scala.
Скала Вебмашина. Портовая машина Basho в Scala, основанная на REST система для создания веб-приложений
Боулер RESTful, многоканальный готовый веб-фреймворк Scala
Мне нравится лифт;-)
Play - мой второй выбор для Scala-дружественных веб-фреймворков.
Калитка - мой третий выбор.
Попробуйте Play Framework, который также поддерживает Scala.
Следует отметить, что существует также значительный интерес к Wicket и Scala. Калитка удивительно хорошо подходит Scala. Если вы хотите воспользоваться преимуществами очень зрелого проекта Wicket и его экосистемы (расширений), а также лаконичным синтаксисом и преимуществами производительности Scala, этот может быть для вас!
Смотрите также:
Одним из очень интересных веб-фреймворков с коммерческим развертыванием является Scalatra, вдохновленный Sinatra Руби. Вот статья InfoQ об этом.
Я нахожу нефильтрованный очень интересным https://github.com/unfiltered/unfiltered.
Это упоминается в списке ИттайД.
Вот презентация об этом http://unfiltered.lessis.me/ и видео http://code.technically.us/post/942531598/doug-tangren-presents-the-unfiltered-toolkit-for
Также здесь есть статья с дополнительной информацией http://code.technically.us/post/998251172/holding-the-parameter
Играть довольно мило.
Сейчас производство готово. Он включает в себя: классную структуру шаблонов, автоматическую перезагрузку исходных файлов в безопасное место, систему действий, которую можно составить, akka awesomeness и т.д.
Это часть Typesafe Stack.
Используя его для двух проектов, я могу сказать, что он работает довольно плавно, и в следующий раз стоит подумать над тем, чтобы изучить новые веб-фреймворки.
Я склонен использовать JAX-RS с использованием Jersey (вы можете писать хорошие ресурсы в Scala, Java или Groovy) для написания веб-приложений RESTul. Затем я использую Scalate для рендеринга представлений, используя один из различных языков шаблонов ( JADE, Scaml, Ssp (Scala Server Pages), Усы и т. Д.).
Прикрутил, думаю мы на одной лодке. Я также приезжаю в Скала из Эрланга. Мне очень нравится Nitrogen, поэтому я решил создать веб-фреймворк Scala, вдохновленный им.
Посмотрите на Xitrum. Его документ довольно обширный. От README:
Xitrum - это асинхронная и кластерная веб-платформа Scala и веб-сервер на базе Netty и Hazelcast:
- Он заполняет пробел между Скалатрой и Лифтом: более мощный, чем Скалатра, и более простой в использовании, чем Лифт. Вы можете легко создавать как RESTful API, так и постбэки. Xitrum - это сначала контроллер, как Scalatra, а не первый вид, как Lift.
- Аннотация используется для URL-маршрутов в духе JAX-RS. Вам не нужно объявлять все маршруты в одном месте.
- Типичная безопасность, в духе Скала.
- Async, в духе Нетти.
- Сессии могут быть сохранены в куки или кластеризованном Hazelcast.
- Проверка jQuery интегрирована для проверки на стороне браузера и на стороне сервера. i18n использует GNU gettext, что означает, что в отличие от большинства других решений поддерживаются формы единственного и множественного числа.
- Условный GET с использованием ETag.
Hazelcast также дает:
- Внутрипроцессный и кластерный кеш, вам не нужны отдельные серверы кеша.
- В процессе и кластеризованная Comet, вы можете масштабировать Comet на несколько веб-серверов.
Следуйте инструкциям для быстрого начала.
Существует новый веб-фреймворк, называемый Scala Web Pages. С сайта:
Целевая аудитория
Веб-инфраструктура Scala Pages, вероятно, понравится веб-программистам, которые имеют опыт работы с Java и хотят программировать веб-приложения на Scala. Акцент делается на ООП, а не на функциональном программировании.
Характеристики и особенности
- Придерживается парадигмы модель-вид-контроллер
- Текстовый шаблонизатор
- Простой синтаксис:
$variable
а также<?scp-instruction?>
- Кодирование / обнаружение контента, возможность обрабатывать международные текстовые кодировки
- Фрагменты вместо пользовательских тегов
- Перезапись URL
Есть также Pinky, который раньше был на bitbucket, но был переведен на github.
Кстати, github - отличное место для поиска проектов Scala, так как там много чего нужно.
Я хотел бы добавить свои собственные усилия в этот список. Вы можете узнать больше информации здесь:
Он находится на ранней стадии разработки, и я все еще активно над этим работаю. Он включает в себя такие функции, как:
- Акцент на простоте и расширяемости.
- Интегрированный инструмент для сборки.
- Модульная конструкция; некоторые начальные модули включают в себя поддержку сервисов scalate, email, jms, jpa, squeryl, cassandra, cron и многое другое.
- Простые RESTful контроллеры и действия.
Любая обратная связь очень ценится.
ОБНОВЛЕНИЕ: 2011-09-078, я только что опубликовал серьезное обновление до версии 0.9.1. Больше информации на http://brzy.org/ где есть скринкаст.
И Сладкий, и Слинки кажутся бездомными около года. Сладкий Maven репозиторий sweetsoftwaredesign.com мертв, поэтому нет даже возможности загрузить зависимости.
Note: Spiffy is outdated.
< plug>
Spiffy:
- is written in Scala
- использует фантастическую библиотеку Akka и актеров для масштабирования
- использует сервлет API 3.0 для асинхронной обработки запросов
- модульный (замена компонентов прямолинейна)
- использует DSL, чтобы сократить код там, где он вам не нужен
- поддерживает Scalate и Freemarker для шаблонов
Spiffy - это веб-фреймворк, использующий Scala, Akka (реализация актера Scala) и API Java Servlet 3.0. Он использует асинхронный интерфейс и нацелен на обеспечение массовой параллельной и масштабируемой среды для веб-приложений. Различные компоненты Spiffy основаны на идее, что они должны быть независимыми минималистичными модулями, которые выполняют небольшие объемы работы очень быстро и передают запрос следующему компоненту в конвейере. После того, как последний компонент завершил обработку запроса, он сигнализирует контейнеру сервлетов, "завершив" запрос и отправив его обратно клиенту.
https://github.com/mardambey/spiffy
< / plug>
Вы также можете попробовать контекст. Он был разработан, чтобы быть Java-фреймворком, но я успешно использовал его со Scala также без проблем. Это основанный на компонентах фреймворк, имеющий свойства, аналогичные Lift или Tapestry.
Я наткнулся на ваш вопрос несколько недель назад, но с тех пор также узнал о Circumflex. Это хороший, минимальный фреймворк, который, следовательно, прост в освоении, а также имеет довольно хорошую документацию.
Помимо минимальности, он также утверждает, что хорошо работает с другими библиотеками и позволяет вам использовать собственную реализацию вещей, когда вам это нужно.