- Вышла совершенно новая библиотека Enriched Beans — генератор исходников, совместимый с JSR 330: Dependency Injection for Java. Конкретно, генерит он фабрики, совместимые с фреймворками вроде Spring и Micronaut. Работает примерно как AutoFactory, может использоваться вместе с Lombok. В смысле, если в Guice вам нужно писать конструктор руками, то тут можно подцепить то, что сгенерил Lombok. Получаются простые POJO, каждое генерируемое поведение можно менять/подменять/оборачивать как хочешь, нормально работает автодополнение в IDE, код более-менее ООП-шный. Если перечисленные аббревиатуры ничего не говорят — проходите мимо :) Из минусов — 1 контрибьютор, 18 коммитов, насколько хорошо это работает — никому не ведомо.
- Вышла OmniFaces 3.6 — библиотека утилит для Java Server Faces (JSF). Эти утилиты решают простые повседневные проблемы, заменяют все ваши
JSFUtils
иFacesUtils
с одним и тем же скопипащенным кодом, кочующим из проекта в проект. В свежей версии добавилась очередная пачка методов-утилит,WebAppManifestResourceHandler
(генеритmanifest.json
на основе полей CDI-бина),<o:scriptParam>
(используется в компонентахUIOutcomeTarget
вроде<h:link>
дляMultiViews
). - Вышла IntelliJ IDEA 2020.1.1. Несколько фиксов, добавилась официальная поддержка Apache Tomcat 10. Ченжлог по ссылке.
Java Platform
- Вышло исследование LampStudy, которое утверждает, что Java — вторая по востребованности платформа разработки. На первом месте, как вы и ожидали, JavaScript. Фронтенд сам себя десять раз в год не перепишет.
- Обратите внимание на JEP 374: Disable and Deprecate Biased Locking. JEP довольно новый (начало этого года), и сейчас активно собирается фидбэк от коммитеров и ревьюеров. Дедлайн — пятница, 8 мая, 23:59 UTC. Если все проблемы решат к дедлайну, то согласно процессу JEP 2.0, этот JEP отправится в JDK 15.
- Другой JEP, который предлагается добавить в JDK 15 — JEP 373: Reimplement the Legacy DatagramSocket API. Текущие реализации
java.net.DatagramSocket
иjava.net.MulticastSocket
— дремучее легаси 20-летней давности, отлаживать и поддерживать которое невозможно. Предлагается переписать их с нуля с учётом появления Project Loom. Можно считать это продолжением истории из JEP 353: Reimplement the Legacy Socket API. - Добро пожаловать во второе превью JEP 375: Pattern Matching for instanceof для JDK 15. Во-первых, нужно продолжать тестить. Во-вторых, было что-то нездоровое с деконструкцией рекордов: вначале их добавили, а потом снова убрали (подробности в тикете). Пофиксили баг с мусором в байткоде. Можно даже сказать, двойные превью — новая норма, смотрите доклад Доктора Депрекатора.
Spring
- Вышел Spring Boot 2.3.0.RC1. В новом релиз-кандидате: автоконфигурация Wavefront-сендера, упрощенная конфигурация конвертации даты и времени для веб-приложений, автоматическое создание конфигурации
developmentOnly
для Gradle, поддержка недавно появившегося проекта Paketo. - Вышел релиз-кандидат Spring for Apache Kafka 2.5.0. Умеет работать с
kafka-clients
2.5.0 (совпадение номеров версий — совершенно случайно!), добавили кафковой специфики про переотправку в случае кооперативной ребалансировки,fetch-offset-request
для брокеров версии 2.5 и выше, улучшили интеграцию с Micrometer, сделали простой сериализатор и десериализаторString
, вJsonDeserializer
можно определять создаваемый тип и так далее. Полный список фичей есть здесь. Если руки зачесались обновиться, вспомните, что это всё ещё релиз-кандидат :) - Появилась пачка обновлений Spring Integration 5.3 RC1, 5.2.6 & 5.1.10. Описание изменений потребовало бы перечислять длинный список классов, и что с ними сделали, поэтому лучше сразу пройти в ченжлог.
Сервисы
- Google добавили в Cloud Spanner набор интересных фичей. Cloud Spanner — это глобальная распределенная база данных для Google Cloud Platform. Из интересных фичей — управляемый бэкап, который как-то компенсирует логические ошибки в приложениях. Бэкапы жестко оптимизируются на скорость развертывания, поэтому новый инстанс может развернуться из бэкапа за считаные минуты, даже если там бешеные терабайты данных. Теоретически.
Статьи, подкасты, стримы
- Наш друг и известный докладчик Себастиан Дашнер выпустил очередное 7-минутное видео о том, как отлаживать тесты в контейнере, когда у вас Quarkus.
- Другой наш друг и докладчик, Джош Лонг, выпустил очередной Bootiful Podcast, в котором беседует с Адрианом Коулом — сооснователем Feign, JClouds и Spring Cloud Sleuth. Кроме того, Адриан — один из основных контрибьюторов в OpenZipkin.
- Сколько памяти было впустую потеряно при добавлении нового булевского значения в
java.lang.String
в JDK 13? Нисколько. Шок-контент по ссылке. - Интересная статья «A New Era of Spring Cloud» от Петра Миньковски (Piotr Mińkowski) о том, как жить в непростые времена, когда почти все компоненты Spring Cloud Netflix заморожены на поддержку еще со времен трейна Greenwich, а вместо них выкатили что-то совершенно новое. Забавно, что Spring Cloud Netflix всё ещё самый популярный проект Spring (около 4 тысяч звездочек на GitHub), и можно понять, почему!
- В блоге Amis Technology появилась статья с графиками производительности, в которых соревнуются блокирующие и неблокирующие технологии экосистемы Spring: R2DBC против JDBC и WebFlux против Web MVC.
- Алмас Баимагамбетов пишет на JavaFX анимированное диалоговое окно.
- Адам Биен продолжает жечь на стримах, на этот раз он полез в браузер и конкретно — querySelector и querySelectorAll. При чем тут Java — понятно постоянным зрителям этих стримов, всё складывается в картинку. Я просто открываю его на отдельном мониторе и слушаю параллельно с другими делами.
- Наш домашний подкаст «Битовая Каска» провёл живой стрим выпуска с легендарным предводителем JUG Ru Group, Алексеем Фёдоровым. Правильно оформленная запись подкаста появится в сети позже, когда мы обработаем звук.
- Я на канале JavaWatch пытался завести технологии из набора Project Leyden. В целом, не обнаружил какого-то серьезного ускорения на Windows, что ожидаемо, тем более что PowerShell в Windows — очень сомнительный метод измерения с чудовищным разбросом. По юзабилити — в JDK 11 был баг, не позволявший собирать на Visual Studio 2019, пришлось использовать JDK 14. Сборка java.base вывалила какую-то тонну ошибок, но собрало. so-шник через jaotc генерируется, exe-шник — нет. jlink — это много возни. Сравнить с GraalVM не получилось — native-image для Windows падал с какой-то внутренней ошибкой. Ждем и надеемся на лучшее!
Дайджесты публикуются при поддержке JUG Ru Group и конференции JPoint. Зарегистрироваться на летнюю онлайн-конференцию можно на официальном сайте.
Автор: Олег Чирухин