SlideShare une entreprise Scribd logo
1  sur  23
Scala/Play - web platform
Ruslan Shevchenko
<ruslan@shevchenko.kiev.ua>

Scala -- язык программирования:

http://www.scala-lang.org

Play – framework

http://www.playframework.org

Open Source

Существует поддерживающая
организация (typesafe).

http://www.typesafe.org

Хорошо

Лаконичный язык

Статическая типизация

ROR-подобный фреймворк

Из коробкт много хороших вещей

(less, coffescript, require.js ... etc)

Async interfaces. [WebSockers, comet]

Developer friendly

Плохо

Незнакомый язык

ROR-подобный фреймворк

.................
Scala – новый язык
Scala

JVM – based (Java byte-code)

Статическая типизация, вывод типов

Функциональное программирование

Объектно ориентированное тоже есть

Множественное наследование
Scala, пример кода:
def sumEvens(seq: Seq[Int]) =
seq.filter.{ _ % 2 == 0 }.sum
Scala, пример кода:
int sumEvens(l: ArrayList[Integer]): Int
{
int sum = 0
for(x in l) {
if (x %2 == 0) sum += x;
}
return sum;
}
def sumEvens(seq: Seq[Int]) =
seq.filter.{ _ % 2 == 0 }.sum
Java:Java:
Scala, пример кода:
function sumEvens($seq)
{
$sum = 0
foreach($seq as $x) {
if ($x %2 == 0)
$sum = $sum + x;
}
return $sum;
}
def sumEvens(seq: Seq[Int]) =
seq.filter.{ _ % 2 == 0 }.sum
PHP:PHP:
Scala
1. Кривая обучения
2. Скорость компилятора
Проблемы:
Достоинства:
1. Мощность и лаконичность.
2. Параллелизм из коробки
3. Интеграция с Java инфраструктурой
4. DSL
........ (можно рассказывать довольно долго)
Синхронно
Синхронн
о
Асинхронно
Неблокирующее API
Akka
Netty
Организация взаимодействия с браузером
Request => Reply
WebSocket
Comet
Поддержка client-side средств

less

coffescript

JavaScript modules
LAMP

Linux

Apache

MySql

PHP (Perl, Python)
CPMS

Cloud

Play

Mongo

Scala
LAMP

Linux

Apache

MySql

PHP (Perl, Python)
CPMS

Cloud

Play

Mongo

Scala
CPMS

Cloud

Play

Mongo

Scala
CP_S

Cloud

Play

Any

Scala/Java
CPMS

Cloud

Play

Mongo

Scala
CP_S

Cloud

Amazon, Heroky, CloudBess, Cloud Foundry...

Play

_

NoSQL

Mongo, Cassandra, ...

SQL

Postgress ....

Scala
Легкий (в противовес java традиции)
Дружественный к разработчику
Использование:
https://github.com/guardian/
http://engineering.linkedin.com/
Scala/Play: ресурсы
Scala/Play: ресурсы
http://www.typesafe.com/ (play activator)
http://www.playframework.org
(documenation)
http://www.scala-lang.org (documentation)
http://twitter.github.io/scala_school/
Scala в UA
google group: scala-ua
FB Group: scala ukraine.
https://www.facebook.com/groups/256373621041781/
https://groups.google.com/forum/?fromgroups#!forum/scala-ua
Все читают – никто не пишет
Руслан Шевченко
ruslan@shevchenko.kiev.ua
@rssh1

Contenu connexe

Similaire à Play/Scala as application platform (for http://wbcamp.in.ua 2013)

Марат Абдуллин "Хроники серверного Жаваскрипта"
Марат Абдуллин "Хроники серверного Жаваскрипта"Марат Абдуллин "Хроники серверного Жаваскрипта"
Марат Абдуллин "Хроники серверного Жаваскрипта"Yandex
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentAnton Kirillov
 
Scripting languages
Scripting languagesScripting languages
Scripting languagesLev Panov
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
 
Анатомия инструментов автоматизации функционального тестирования
Анатомия инструментов автоматизации функционального тестированияАнатомия инструментов автоматизации функционального тестирования
Анатомия инструментов автоматизации функционального тестированияAlexei Barantsev
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
IronRuby: внутренности и примеры использования
IronRuby: внутренности и примеры использованияIronRuby: внутренности и примеры использования
IronRuby: внутренности и примеры использованияAlexander Byndyu
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Alex Ott
 
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...HappyDev-lite
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionNikita Lipsky
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014InterSystems
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...lshevtsov
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)Bakyt Niyazov
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScriptOleg Podsechin
 

Similaire à Play/Scala as application platform (for http://wbcamp.in.ua 2013) (20)

Марат Абдуллин "Хроники серверного Жаваскрипта"
Марат Абдуллин "Хроники серверного Жаваскрипта"Марат Абдуллин "Хроники серверного Жаваскрипта"
Марат Абдуллин "Хроники серверного Жаваскрипта"
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Scripting languages
Scripting languagesScripting languages
Scripting languages
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Анатомия инструментов автоматизации функционального тестирования
Анатомия инструментов автоматизации функционального тестированияАнатомия инструментов автоматизации функционального тестирования
Анатомия инструментов автоматизации функционального тестирования
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
SAP hands on lab_ru
SAP hands on lab_ruSAP hands on lab_ru
SAP hands on lab_ru
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
IronRuby: внутренности и примеры использования
IronRuby: внутренности и примеры использованияIronRuby: внутренности и примеры использования
IronRuby: внутренности и примеры использования
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)
 
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
15 HappyDev-lite-2015 autumn. Анна Тарасенко. Java в современном мире, вторая...
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Scala On Rest
Scala On RestScala On Rest
Scala On Rest
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 

Plus de Ruslan Shevchenko

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Ruslan Shevchenko
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )Ruslan Shevchenko
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolutionRuslan Shevchenko
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSPRuslan Shevchenko
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Ruslan Shevchenko
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applicationsRuslan Shevchenko
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platformRuslan Shevchenko
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.Ruslan Shevchenko
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scalaRuslan Shevchenko
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N yearsRuslan Shevchenko
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation streamRuslan Shevchenko
 
Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan Shevchenko
 
Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.Ruslan Shevchenko
 
Javascript in modern scala backend. [russian]
Javascript in modern scala backend.  [russian]  Javascript in modern scala backend.  [russian]
Javascript in modern scala backend. [russian] Ruslan Shevchenko
 

Plus de Ruslan Shevchenko (20)

Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]Embedding Generic Monadic Transformer into Scala. [Tfp2022]
Embedding Generic Monadic Transformer into Scala. [Tfp2022]
 
Svitla talks 2021_03_25
Svitla talks 2021_03_25Svitla talks 2021_03_25
Svitla talks 2021_03_25
 
Akka / Lts behavior
Akka / Lts behaviorAkka / Lts behavior
Akka / Lts behavior
 
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
Papers We Love / Kyiv :  PAXOS (and little about other consensuses )Papers We Love / Kyiv :  PAXOS (and little about other consensuses )
Papers We Love / Kyiv : PAXOS (and little about other consensuses )
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
 
{co/contr} variance from LSP
{co/contr} variance  from LSP{co/contr} variance  from LSP
{co/contr} variance from LSP
 
N flavors of streaming
N flavors of streamingN flavors of streaming
N flavors of streaming
 
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
Scala-Gopher: CSP-style programming techniques with idiomatic Scala.
 
Scala jargon cheatsheet
Scala jargon cheatsheetScala jargon cheatsheet
Scala jargon cheatsheet
 
Java & low latency applications
Java & low latency applicationsJava & low latency applications
Java & low latency applications
 
Csp scala wixmeetup2016
Csp scala wixmeetup2016Csp scala wixmeetup2016
Csp scala wixmeetup2016
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
 
Behind OOD: domain modelling in post-OO world.
Behind OOD:  domain modelling in post-OO world.Behind OOD:  domain modelling in post-OO world.
Behind OOD: domain modelling in post-OO world.
 
scala-gopher: async implementation of CSP for scala
scala-gopher:  async implementation of CSP  for  scalascala-gopher:  async implementation of CSP  for  scala
scala-gopher: async implementation of CSP for scala
 
Programming Languages: some news for the last N years
Programming Languages: some news for the last N yearsProgramming Languages: some news for the last N years
Programming Languages: some news for the last N years
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
 
Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014Ruslan.shevchenko: most functional-day-kiev 2014
Ruslan.shevchenko: most functional-day-kiev 2014
 
Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.
 
R scala 17_05_2014
R scala 17_05_2014R scala 17_05_2014
R scala 17_05_2014
 
Javascript in modern scala backend. [russian]
Javascript in modern scala backend.  [russian]  Javascript in modern scala backend.  [russian]
Javascript in modern scala backend. [russian]
 

Play/Scala as application platform (for http://wbcamp.in.ua 2013)