С ростом количества запросов к сервисам, набирает популярность асинхронный стиль написания приложений. В связи с этим, возникла идея подробно посмотреть на различные варианты реализации Future в языках Java и Scala и сравнить их между собой.
Начнем мы с Java и посмотрим на эволюцию Future в этом языке:
- В Java 5 появился класс Future, но он предоставлял только блокирующий API.
- Сторонние библиотеки, такие как Guava, предоставляли свои абстракции Future, которые однако тоже обладали недостатками.
- Текущее состояние мира Java — класс CompletableFuture, который действительно позволяет писать код в асинхронном стиле. Есть ли у него какие-то недостатки?
В ходе доклада, мы сравним CompletableFuture с Future в Scala и посмотрим, кто одержит победу.
После сравнения, мы поговорим об обработке ошибок в асинхронных вычислениях, в том числе рассмотрим альтернативный исключениям подход к обработке ошибок — монады и монад-трансформеры, который предлагает Scala, являясь функциональным языком.
Если останется время, мы так же поговорим о классе Task в scalaz и monix.