Programming Languages: some news for the last N years
Javascript in modern scala backend. [russian]
1. FOSS-SEA 2013
JavaScript & modern scala backend
Ruslan Shevchenko
<ruslan@shevchenko.kiev.ua>
@rssh1
(gradsoft, gosave)
2. Есть ли у нас план ?
●
- обзор архитектур web приложений
–
●
- scala-frameworks
–
●
90, MVC, ROR-Like, one-page ..
lift, play, spray.io, scalatra
- использование и генерация javascript
–
jscala, scala-js
16. Play
– раутер — конфигурация
- контроллер — синхронная или
Асинхронаая функция из
Request в response
- view – compile-time шаблоны
(мы не используем)
Netty, в будущем — миграция на spray.ioo
17. Play / Example
def index = Action.async {
val futureInt =
Future { intensiveComputation() }
val timeoutFuture = Promise.timeout("Oops", 1.second)
Future.firstCompletedOf(Seq(futureInt, timeoutFuture)).map
{
case i: Int => Ok("Got result: " + i)
case t: String => InternalServerError(t)
}
}
19. JavaScript / scala
●
Write in scala, produce javascriot
–
Jscala http://www.jscala.org
●
–
(lightweight, macros, from Alexander Nemish, Kiev)
Scala-js http://www.scala-js.org
●
(fully functional scala-to-js compiler, EPFL institute)
20. jscala
import org.jscala._
@JavaScript class Test {
def hello() {
print("Hello")
}
}
val testJs = Test.javaScript.as[JsStmt] // Get class Test JsAst
val main = javascript {
val t = new Test()
t.hello()
}
22. jscala
val testJs = Test.javaScript.as[JsStmt]
val main = javascript {
val t = new Test()
t.hello()
}
23. jscala
●
Исполнение – макросы
–
●
@JavaScript, javascript{ .. }
Подмножество scala
–
–
Урезанные управляющие структуры,
–
●
нет стандартные scala-lib
DOM API динамическое(пока)
Компактный читаемый javascript без runtime
24. scala-js
●
Полноценный компилятор
●
Все фичи скалы,
●
Полноценная библиотека
●
Порядка 10 Mb рантайма / стандартных
бибилиотек (js)
–
Используется google closure дл я минимизации