Java 8. Новые возможности
Java SE 8 представляет самые глубокие изменения в языке Java и библиотеках с момента возникновения. Хорошей новостью является то, что эти изменения позволят Вам писать программы более легко. Java 8 предлагает новый интерфейс прикладного программирования - API (Streams API), который поддерживает множество параллельных операций обработки данных и помогает вам думать о них в представлениях похожих на запросы к базе данных. Изменение программирования в Java на функциональный стиль поможет Вам писать код, который является более кратким и выразительным, и (во многих случаях) готовым к использованию в параллельной среде. В этом курсе, вы узнаете, как, казалось бы, незначительные изменения, которые вводят лямбда-выражения делают это возможным.
После изучения курса вы сможете:
- Применять лямбда-выражения (lambda expressions).
- Использовать методы интерфейсов по умолчанию (default interface methods).
- Включать в код ссылки на методы (method references) и повторяемые аннотации (repeatable annotations).
- Встраивать новые конкурентные функции лямбда-выражений.
- Работать с новыми возможностями API для работы с датами: Java Date и Time API.
- Использовать среду Nashorn JavaScript.
Содержание курса
Модуль 1: Введение в лямбда-выражения.
- Цель использования анонимного внутреннего класса.
- Недостатки анонимных внутренних классов.
- Компоненты лямбда-выражения.
- Функциональный интерфейс.
- Создание программ, использующих лямбда-выражения.
Модуль 2: Рефакторинг кода для использования лямбда-выражений.
- Причины добавления лямбда-выражений в язык Java.
- Рефакторинг кода для уменьшения избыточности.
- Рефакторинг кода при использовании внутренних классов.
- Рефакторинг кода при использовании лямбда-выражений.
- Список преимуществ лямбда-выражений.
Модуль 3: Фильтрация коллекций с помощью лямбда-выражений.
- Итерации по коллекции с помощью forEach.
- Итерации по коллекции с помощью лямбда-выражений.
- Описание интерфейса Stream.
- Фильтрация коллекции с использованием лямбда-выражения.
- Вызов существующего метода с использованием ссылки на метод.
- Сцепление нескольких методов вместе.
- Сравнение функционального и императивного программирования.
- Определение конвейеров в терминах лямбда-выражений и коллекций.
Модуль 4: Использование встроенных интерфейсов в лямбда-выражениях.
- Список встроенных интерфейсов, включенных в java.util.function.
- Использование интерфейса Predicate.
- Обработка объекта с помощью интерфейса Consumer.
- Обработка одного объекта и возврат другого с помощью интерфейса Function.
- Создание нового объекта с помощью интерфейса Supplier.
- Использование примитивных версий базовых интерфейсов.
- Использование бинарных версий базовых интерфейсов.
Модуль 5: Операции с коллекциями в лямбда-выражениях.
- Извлечение данных из объекта с использованием отображения (map).
- Обнаружение данных с использованием методов поиска.
- Описание типов потоковых операций.
- Определение класса Optional.
- Выполнение расчетов с использованием методов.
- Описание отложенной обработки.
- Сортировка в потоке.
- Сохранение результатов в коллекцию с помощью метода collect.
Модуль 6: Параллельные потоки.
- Обзор ключевых характеристик потоков.
- Сравнение старого стиля циклических операции с потоками.
- Описание параллельного выполнения потокового процесса.
- Список основных условий использования параллельных потоков.
- Определение редукции (reduction).
- Ассоциативная функция при редукции.
- Вычисление значения при редукции.
- Описание процесса декомпзиции и объединения при завершении.
Модуль 7: Примеры применения лямбда-выражений.
- Изменение списка с использованием removeIf.
- Обновление списка с использованием ReplaceAll.
- Обновление map (отображение) с помощью computeIfAbsent, computeIfPresent и merge.
- Отправка ключей и значений из map в stream.
- Чтение файла в поток.
- Чтение текстового файла в ArrayList.
- Список, проход и поиск по структуре каталогов при помощи потока.
- Сведение потока с помощью flatMap.
Модуль 8: Расширения методов.
- Построение качественных библиотек.
- Использование статических методов в интерфейсах.
- Использование методов по умолчанию.
- Правила наследования для методов по умолчанию.
Модуль 9: Использование DateTime API.
- Список целей Date/Time API (JSR-310).
- Создание и управление событиями на основе даты.
- Создание и управление событиями на основе времени .
- Комбинирование даты и времени в одном объекте.
Модуль 10: JavaScript на Java с использованием Nashorn.
- Создание и выполнение сценариев shell.
- Написание приложений JavaScript.
- Написание JavaFX приложений с помощью JavaScript.
Слушатели
Разработчики java приложений, использующие Java SE 8.