CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не...
description
Transcript of CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не...
О Scala и Lift
Для тех, кому мало Java, и не только
Галако Олег,Джар Софт
Кому и зачем?
• Удобнее, мощнее, «правильнее» Java
case class Person(name: String, age: Int) // = 20+ строк на Java://factory method, getters, equals, hashCode, toString, serialization и др.
List(1, 2, 3, 4, 5).filter(_ % 2 == 1).map(_ * 2).mkString(",") // 2,6,10
• Грамотная статическая типизация
• Надёжнее динамических языков
• Обуздать многоядерность
Популярные языки на JVM
groovy
jython
scala
clojure, jrubyfantom
Кол-во вакансий как показатель популярности
: основные факты• 2001, Швейцария, профессор Мартин Одерски
• ScaLa = Scalable Language
• Статическая типизация + OOП + ФП
• Свободно смешивается с Java
: основные факты
• Начат в 2007, первая версия - 2009
• Использован опыт Rails, Wicket, Django и др.
• Активно использует функциональную сторону Scala
<button name="b">Push me</button>"@b [onclick]" #> ajaxInvoke(() => {println("server"); Alert("client")})
• Изменения кода - в браузере через секунды
С чего мы начинали?
Самостоятельное изучение
Энтузиазм, общение, интерес
Демонстрация в прототипе для небольшого проекта
Семинары в компании
Cкрипты
Полноценное самостоятельное веб приложение
Первый проект
• Прототип за выходные
• Мощная типизация для объединения метаданных и функционала (traits)
val activationDate = new PersistentSimpleField(this, DayType, "Date of the first registered impression") with Required with Indexed
new DeleteEntityResource(new Category) with SingleIdRequired with AdminSessionRequired with DBLogging
• Встроенная поддержка XML
• Lift для обработки REST и JSON
Самодокументирующийся REST + JSON веб сервис
Удобные скрипты на JVM
• Скрипты на Java? Вряд ли.
• Привычные Java-библиотеки, переносимость
• Компактный, читаемый код
• Мощные средства для стандартных задач: парсинг, анализ данных, HTTP клиент и т.д.
Текущий проект
• Лучшая реализация Comet и AJAX
• Удобная интеграция с Facebook Graph API
• Интеграция с Hibernate, Hibernate Search (Lucene)
• Функциональный код легче модифицируется
• Дизайнер может редактировать шаблоны сам
Интерактивное Facebook приложение на Lift
Планы
• 3500+ Java классов, с 2000 года
• Включение Scala в сборку заняло 2 часа
• SOAP & Struts => JSON REST & Lift
• Ядро ротатора на Akka
Scala в старом большом Java проекте на 1500 запросов/с
Сложности
• Меньше готовых ответов
• Многолетние Java-привычки
• Много возможностей, но за всем сразу не угнаться
• Средства разработки: Eclipse сильно отстал
ProfitПовышение квалификации
+
Сокращение объёмов,
повышение читаемости кода
+
Новые удобные и интересные решения
=
Эффективность
Вопросы?
Галако Олег,Джар Софт
twitter.com/ojowoo