Академический Документы
Профессиональный Документы
Культура Документы
Первое издание
Стас Лозенко
Эта книга предназначена для продажи на http://leanpub.com/inside-scala
Это книга с Leanpub book. Leanpub позволяет авторам и издателям участвовать в так
называемом Lean Publishing - процессе, при котором электронная книга становится
доступна читателям ещё до её завершения. Это помогает собрать отзывы и пожелания для
скорейшего улучшения книги. Мы призываем авторов публиковать свои работы как можно
раньше и чаще, постепенно улучшая качество и объём материала. Тем более, что с нашими
удобными инструментами этот процесс превращается в удовольствие.
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
В наше время очень легко найти книгу, которая покрывает поверхностно ту или иную
технологию. Найти стоящую очень тяжело, при этом практически невозможно найти ту
книгу, в котором сам автор прошелся по предмету вдоль и поперек, да еще и имея при этом
коммерческий опыт.
Я попытаюсь найти ту золотую середину, в котором предметная область будет освещена
максимально широко и в то же время у вас не будет желания придушить меня с криком “да
сколько можно рассусоливать одно и то же”.
На протяжении всей книги местами я буду сравнивать язык Scala c Java и для этого есть очень
веское основание: будучи JVM языком Scala компилируется в Java, затем в байткод, что дает
нам фантастическое преимущество проанализировать как и главное во что Scala превращает
свои языковые конструкции. Очень важно заметить, что благодаря такому подходу мы
сможем качественно сравнить языки по эффективности, простоте и производительности.
Поэтому, время от времени вы будете видеть сноски по производительности с ссылкой на
JMH бенчмарк (я буду использовать JMH¹ как основу исследования быстродействия Scala и
Java. Она выглядит примерно так:
Код на Scala в этом случае в среднем в 1.64 раза медленее чем на Java c ссылкой на JMH
Также таким же отсуплением я пытаюсь выделить очень важные на мой взгляд вещи:
Эта книга не было бы книгой Стаса Лозенко, если бы в нем не было моего личного мнения.
Вы не обязаны принимать его за истину, просто знайте, что в книге могут быть подобные
сноски:
¹http://openjdk.java.net/projects/code-tools/jmh/
Предисловие 2
Имеет смысл использовать Java в этом случае, так как Scala в итоге превращает
конструкцию с сильно большой вложенностью. На мой взгляд, это беспредел.
Любая техническая книга изобилует примерами кода. Здесь их будет довольно много:
1 trait Element[+B] {
2 def remove(pred: B): Element[B]
3 }
Комьюнити
Scala не был бы таким популярным языком, если бы не огромная поддержка комьюнити.
Только взгляните насколько большое количество людей комитят в ветки по Scala, Akka и т.д.
в github. Внизу я бы хотел выделить пятерку, на мой взгляд, самых влиятельных людей.
Martin Odersky
³https://www.scala-lang.org/
⁴http://www.scala-native.org
⁵https://www.scala-js.org
⁶https://akka.io/
⁷https://spark.apache.org
⁸http://kafka.apache.org/
Scala и его компания 4
Именно Мартин считается главным идеологом языка до сих пор, поэтому его доклады на
конференциях являются всегда главными и часто открывают сами конференции.
Twitter Одерского: https://twitter.com/odersky
Jonas Bonér
Следующим после Martin Odersky числится Jonas Boner, который на пару с Мартином создал
компанию Typesafe, которая позже, в свое время, была переименована в Lightbend.
Lightbend⁹ считается одним из самых главных мейнтейнеров в такие проекты как Akka, Play,
Spray, Slick, SBT и так далее.
Twitter Jonas Boner: https://twitter.com/jboner
Личный сайт: https://jonasboner.com
Konrad Malawski
Eugene Yokota
Всеми известный, в узких кругах Scala сообщества, создатель SBT, Zinc. На момент написания
книги работает в Lightbend.
Twitter Yokota: https://twitter.com/eed3si9n
Heather Miller
Заведует Scala Center в EPFL, часть команды Odersky. Ее твиттер - это кладезь знаний.
Twitter Miller: https://twitter.com/heathercmiller
Естественно, это не все люди - их гораздо больше, начиная от команд EPFL и Lightbend,
заканчивая создателями книг, докладчиков конференций, архитекторов, евангелистов, кон-
сультантов а также огромному количеству контрибьюторов в репозитории связанные с Scala.
Компании
Книги
Online курсы
Игры
Дополнение А. Установка Scala
Java
Scala не может работать без Java, поэтому вам нужно установить Java JDK на свою платформу.
На момент написания книги мы пользуемся версией Scala 2.12.6, которая стабильно работает
только в связке Java 8. Если на данный момент вы используете Java версии выше, я рекомен-
дую вам снести ее и установить Java 8 на момент работы с книгой.
Заходим на официальную страницу по установке Java SDK¹¹ . Далее находим, кнопку JDK
Download и скачиваем инсталлятор. После запускаем программу и кликаем next, next, next
пока не все не установиться.
Когда закончите процедуру, выполните проверку версии Java
проверка версии Java
1 � java -version
2 java version "1.8.0_151"
3 Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
4 Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
Scala
Для работы c этой книгой, нам недостаточно установить Scala c помощью brew либо просто
запускать его с IDEA. Я рад, что сообщество Scala направлено на быстрое и интуитовное
пользование, но мы с вами находимся в моей лаборатории по исследованию языка, поэтому
нам нужен полноценный дистрибутив.
Мы будем разбирать весь SDK напрямую, поэтому нам придется воспользоваться мануаль-
ной установкой с официального сайта.
Подробные шаги:
¹⁰http://www.jenv.be/
¹¹http://www.oracle.com/technetwork/java/javase/downloads/index.html
Дополнение А. Установка Scala 7
Мы это делаем для того, чтобы у нас был быстрый доступ к Scala REPL scala и компилятору
scalac. Правильным результатом установки будет успешно запущенная проверка версии
Scala.