Многие из них в конце концов «спускаются» до технологий лежащих в основе указанных фреймворков — JDBC, Servlet API, NIO/NIO.2. Однако прискорбно, что зачастую не остается время на детальное изучение самого языка и возможностей платформы.
Речь идет не о тонкостях или экзотике, а о том, что составляет существенную часть работы фреймворка: Servlet-контейнер использует множественные ClassLoader-ы, JPA2-провайдер использует манипулирование байткодом, абсолютное большинство библиотек используют Reflection API, всеобщее использование Generics только «усугубилось» с появлением функциональных интерфейсов (java.lang.function.*) и лямбд.
На недопонимание изначальной платформы (ClassLoader, Reflection API) накладываются «новвоведения» Java 5 (Generics), а теперь еще и Java 8 (методы в интерфейсах, ссылки на методы, лямбды, Stream API, JSR 308: Pluggable Type Systems). Надо обратить внимание на то, что Generics + Java 8 — это не просто языковые фичи, это частично переход к функциональному стилю программирования.
Я собрал определенное количество полезных (на мой взгляд) ссылок по следующим темам
- Методы в интерфейсах, ссылки на методы, множественное наследование
- Лямбды (Project Lambda)
- Stream API
- Функциональные алгоритмы
- Аннотации
- Генерики
- Reflection API
- Загрузка классов
Надеюсь кто-то сочтет их полезными.
Детальная информация
- Методы в интерфейсах, ссылки на методы, множественное наследование
- Статические методы в интерфейсах
- Методы по умолчанию (default methods) в интерфейсах
- Как жить с множественным наследованием: возможности, разрешение конфликтов
- Ссылки на методы
- Лямбды (Project Lambda)
- Предыстория, синтаксис лямбд
- Детали: lexical scope, effectivelly final, closures, type inference, target typing, сериализация лямбд
- Stream API
- Внешняя и внутренняя итерация: map, filter, forEach
- Более сложные операции: flatMap, reduce, collect
- Свойства потоков и свойства операций: immediate/terminal, lazy/eager, stateless/stateful, short-circuiting, serial/parallel, ordered/unordered, associative
- Параллельные Stream-ы и неявная интеграция с Fork/Join
- Функциональные алгоритмы
- Параллельная редукция работает на моноидах (ассоциативностью, нейтральный элемент). Что это значит?
- Optional, CompletableFuture,… и другие монады. Что это значит?
- Карринг, функции высшего порядка. Что это значит?
- Комбинаторные алгоритмы на Java 8
- Аннотации
- Определяем свои аннотации
- Мета-аннотации: @ Target, @ Retention, @ Inherited, @ Repeatable, ...
- Аннотации для компилятора: @ Override, @ SafeVarargs,@ SuppressWarnings, @ FunctionalInterface, ...
- Вычитываем аннотации при помощи Reflection API
- JSR 308: Type Annotations and Pluggable Type Systems
- Расширяем проверку типов с помощью Checker Framework: @ NotNull, @ GuardedBy, ...
- Генерики
- Bounded type parameters
- Self-bounding generics
- Wildcards
- Как реализованы в Java, ограничения (type erasure, bridge methods, non-reifiable types)
- Reflection API
- java.lang.reflect
- Как framework-и используют Reflection API (JUnit, Mockito, Servlet API 3)
- Загрузка классов
- Формат class-файла и процедура загрузки классов (load, link (verify, prepare, resolve), init)
- ClassLoader: определяем свой загрузчик, строим иерархию загрузчиков
- Динамическая кодогенерация, компилируем “на лету”: Compiler API, javaassist
- Динамическая кодогенерация, собираем из байткода: BCEL, cglib
- Динамическая кодогенерация, трансформация существующего байткода в процессе загрузки классов
Вебинары
5 августа стартует серия из 8-ми вебинаров по темам, указанным выше. Вебинары длятся 2.5-3 часа, в течении которых удается глубоко погрузится в проблематику и детали. Занятия проходят 2 раза в неделю в течении 4-х недель во вторник и пятницу в 18.00-21.00 по московскому времени.
Стоимость
При оплате до 12 июля: 225$.
При оплате до 19 июля: 250$.
При оплате до 26 июля: 275$.
При оплате после 26 июля: 300$.
Контакты
email: GolovachCourses
skype: GolovachCourses
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий