CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не...

13
О Scala и Lift Для тех, кому мало Java, и не только Галако Олег, Джар Софт

description

 

Transcript of CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не...

Page 1: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

О Scala и Lift

Для тех, кому мало Java, и не только

Галако Олег,Джар Софт

Page 2: CodeFest 2011. Галако О. — О 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

• Грамотная статическая типизация

• Надёжнее динамических языков

• Обуздать многоядерность

Page 3: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Популярные языки на JVM

groovy

jython

scala

clojure, jrubyfantom

Кол-во вакансий как показатель популярности

Page 4: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

: основные факты• 2001, Швейцария, профессор Мартин Одерски

• ScaLa = Scalable Language

• Статическая типизация + OOП + ФП

• Свободно смешивается с Java

Page 5: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

: основные факты

• Начат в 2007, первая версия - 2009

• Использован опыт Rails, Wicket, Django и др.

• Активно использует функциональную сторону Scala

<button name="b">Push me</button>"@b [onclick]" #> ajaxInvoke(() => {println("server"); Alert("client")})

• Изменения кода - в браузере через секунды

Page 6: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

С чего мы начинали?

Самостоятельное изучение

Энтузиазм, общение, интерес

Демонстрация в прототипе для небольшого проекта

Семинары в компании

Cкрипты

Полноценное самостоятельное веб приложение

Page 7: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Первый проект

• Прототип за выходные

• Мощная типизация для объединения метаданных и функционала (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 веб сервис

Page 8: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Удобные скрипты на JVM

• Скрипты на Java? Вряд ли.

• Привычные Java-библиотеки, переносимость

• Компактный, читаемый код

• Мощные средства для стандартных задач: парсинг, анализ данных, HTTP клиент и т.д.

Page 9: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Текущий проект

• Лучшая реализация Comet и AJAX

• Удобная интеграция с Facebook Graph API

• Интеграция с Hibernate, Hibernate Search (Lucene)

• Функциональный код легче модифицируется

• Дизайнер может редактировать шаблоны сам

Интерактивное Facebook приложение на Lift

Page 10: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Планы

• 3500+ Java классов, с 2000 года

• Включение Scala в сборку заняло 2 часа

• SOAP & Struts => JSON REST & Lift

• Ядро ротатора на Akka

Scala в старом большом Java проекте на 1500 запросов/с

Page 11: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Сложности

• Меньше готовых ответов

• Многолетние Java-привычки

• Много возможностей, но за всем сразу не угнаться

• Средства разработки: Eclipse сильно отстал

Page 12: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

ProfitПовышение квалификации

+

Сокращение объёмов,

повышение читаемости кода

+

Новые удобные и интересные решения

=

Эффективность

Page 13: CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только

Вопросы?

Галако Олег,Джар Софт

twitter.com/ojowoo