Scala - современный, мультипарадигменный язык программирования, позволяющий описывать типичные шаблоны программирования компактнее, выразительнее и безопаснее. Scala прекрасно сочетает в себе черты объектно-ориентированных и функциональных языков.
Во втором издании книги рассматривается актуальная версии Scala 2.12, требующая для работы Java 8. Книга начинается с введения в основы конкурентного программирования в JVM и описания модели памяти в Java, а после демонстрирует основные строительные блоки для реализации конкурентных вычислений, такие как атомарные переменные, пулы потоков и конкурентные структуры данных. Затем рассматриваются разные высокоуровневые абстракции конкуренции, каждая из которых ориентирована на решение определенного класса задач, при этом затрагиваются самые последние достижения в поддержке асинхронного программирования. Также охватываются некоторые полезные шаблоны и способы использования описываемых приемов. В заключение дается краткий обзор применения разных библиотек поддержки конкуренции и демонстрируется возможность их совместного использования.
Основные темы, рассматриваемые в книге:
- принципы конкурентного программирования для современных многопроцессорных систем;
- создание высокопроизводительных систем на основе простых, низкоуровневых примитивов асинхронных вычислений;
- организация асинхронных вычислений с применением объектов Future и Promise;
- увеличение производительности последовательных программ за счет использования параллельных коллекций;
- разработка надежных, масштабируемых и простых в использование моделей данных с использованием транзакционной памяти;
- прозрачная поддержка распределенных вычислений, способных выполняться на нескольких компьютерах;
- интеграция разных фреймворков конкуренции в больших приложениях;
- проектирование и реализация масштабируемых и простых в сопровождении конкурентных приложений на Scala 2.12.