jugmsk JUG.MSK Meetup #24 (31.08.2017 — 31.08.2017)

Future in Java & Scala

img

С ростом количества запросов к сервисам, набирает популярность асинхронный стиль написания приложений. В связи с этим, возникла идея подробно посмотреть на различные варианты реализации Future в языках Java и Scala и сравнить их между собой.

Начнем мы с Java и посмотрим на эволюцию Future в этом языке:

  • В Java 5 появился класс Future, но он предоставлял только блокирующий API.

  • Сторонние библиотеки, такие как Guava, предоставляли свои абстракции Future, которые однако тоже обладали недостатками.

  • Текущее состояние мира Java — класс CompletableFuture, который действительно позволяет писать код в асинхронном стиле. Есть ли у него какие-то недостатки?

В ходе доклада, мы сравним CompletableFuture с Future в Scala и посмотрим, кто одержит победу.

После сравнения, мы поговорим об обработке ошибок в асинхронных вычислениях, в том числе рассмотрим альтернативный исключениям подход к обработке ошибок — монады и монад-трансформеры, который предлагает Scala, являясь функциональным языком.

Если останется время, мы так же поговорим о классе Task в scalaz и monix.