Java 8 in Action

Книга Java 8 in Action

Недавно вышла книга «Java 8 in Action – Lambdas, Streams, and functional-style programming» авторов Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft.

Они хотели написать книгу, которая была бы полезна и через пять или десять лет. Так в предисловии утверждает Raoul-Gabriel Urma — соавтор книги «Java 8 in Action – Lambdas, Streams, and functional-style programming». Авторы изначально задали планку, которая лежит намного выше, чем просто описание того, «что в Java 8 нового и прикольного». Конечно же, в книге есть описание нововведений Java, но описаны не просто  новые возможности, но и детально рассказаны способы их применения. Однако бОльшую часть книги занимает основополагающая информация касательно лямбда-выражений, потоков и методов функционального программирования. Эти принципы не ограничиваются одной лишь Java 8. Несомненно, есть уже несколько книг на эту тему, но «Java 8 in Action» отличается особенным, дидактическим стилем изложения и доступностью материала, что делает эту книгу одной из лучших в этой нише.

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

После этого небольшого вводного примера авторы снова возвращаются к каждой из новинок, чтобы рассмотреть ее более детально. Одним из основных аспектов при освещении функционального программирования стали потоки (streams), которые при правильном применении предлагают простую возможность для параллельного выполнения операций. А это означает более эффективное использование многоядерных процессоров без дополнительных заморочек с потоками, блокированием и всеми сопутствующими проблемами.

В разделе «Эффективное программирование Java» представлены другие изменения в Java, например, методы по умолчанию (default methods) в интерфейсах, новый опциональный класс как (лучшая) альтернатива проверке null-значений, CompletableFuture для асинхронного программирования, а также новый Date and Time API. Эти темы тоже затрагиваются не только, как новые фичи языка — описываются также их применение и концепции использования.

В заключение «Java 8 in Action» тематизирует функциональное мышление и приводит сравнение с функциональным языком Scala. Кроме того, дается обобщение затронутых тем, а также их логическое продолжение: какое развитие могут эти фичи получить в следующих версиях Java.

Авторы пишут настолько доступным языком, что даже разработчики, соприкасающиеся с английским языком крайне редко, поймут содержание без особых напрягов. Большое количество примеров кода и схем дополняют и без того насыщенный текст. Кроме того, авторы добавили пару вопросов на манер викторины, чтобы «заставить» читателя поискать дополнительную информацию самому.

В целом, книга получилась этаким учебником по основам ёмких концепций. Поэтому можно утверждать, что авторам удалось создать труд, который будет актуален и после того, как Java 8 станет историей.