- PVSM.RU - https://www.pvsm.ru -

Java-дайджест за 4 мая

Java-дайджест за 4 мая - 1

  • Вышла совершенно новая библиотека Enriched Beans [1] — генератор исходников, совместимый с JSR 330: Dependency Injection for Java [2]. Конкретно, генерит он фабрики, совместимые с фреймворками вроде Spring и Micronaut. Работает примерно как AutoFactory [3], может использоваться вместе с Lombok [4]. В смысле, если в Guice вам нужно писать конструктор руками, то тут можно подцепить то, что сгенерил Lombok. Получаются простые POJO, каждое генерируемое поведение можно менять/подменять/оборачивать как хочешь, нормально работает автодополнение в IDE, код более-менее ООП-шный. Если перечисленные аббревиатуры ничего не говорят — проходите мимо :) Из минусов — 1 контрибьютор, 18 коммитов, насколько хорошо это работает — никому не ведомо.
  • Вышла OmniFaces 3.6 [5] — библиотека утилит для Java Server Faces (JSF). Эти утилиты решают простые повседневные проблемы, заменяют все ваши JSFUtils и FacesUtils с одним и тем же скопипащенным кодом, кочующим из проекта в проект. В свежей версии добавилась очередная пачка методов-утилит, WebAppManifestResourceHandler (генерит manifest.json на основе полей CDI-бина), <o:scriptParam> (используется в компонентах UIOutcomeTarget вроде <h:link> для MultiViews).
  • Вышла IntelliJ IDEA 2020.1.1 [6]. Несколько фиксов, добавилась [7] официальная поддержка Apache Tomcat 10. Ченжлог по ссылке [8].

Java Platform

  • Вышло исследование LampStudy [9], которое утверждает, что Java — вторая по востребованности платформа разработки. На первом месте, как вы и ожидали, JavaScript. Фронтенд сам себя десять раз в год не перепишет.
  • Обратите внимание на JEP 374: Disable and Deprecate Biased Locking [10]. JEP довольно новый (начало этого года), и сейчас активно собирается фидбэк от коммитеров и ревьюеров. Дедлайн — пятница, 8 мая, 23:59 UTC. Если все проблемы решат к дедлайну, то согласно процессу JEP 2.0, этот JEP отправится в JDK 15.
  • Другой JEP, который предлагается добавить в JDK 15 — JEP 373: Reimplement the Legacy DatagramSocket API [11]. Текущие реализации java.net.DatagramSocket и java.net.MulticastSocket — дремучее легаси 20-летней давности, отлаживать и поддерживать которое невозможно. Предлагается переписать их с нуля с учётом появления Project Loom. Можно считать это продолжением истории из JEP 353: Reimplement the Legacy Socket API [12].
  • Добро пожаловать во второе превью JEP 375: Pattern Matching for instanceof [13] для JDK 15. Во-первых, нужно продолжать тестить. Во-вторых, было что-то нездоровое с деконструкцией рекордов: вначале их добавили, а потом снова убрали (подробности в тикете [14]). Пофиксили баг с мусором в байткоде [15]. Можно даже сказать, двойные превью — новая норма, смотрите доклад Доктора Депрекатора [16].

Spring

  • Вышел Spring Boot 2.3.0.RC1 [17]. В новом релиз-кандидате: автоконфигурация Wavefront-сендера, упрощенная конфигурация конвертации даты и времени для веб-приложений, автоматическое создание конфигурации developmentOnly для Gradle, поддержка недавно появившегося проекта Paketo [18].
  • Вышел релиз-кандидат Spring for Apache Kafka 2.5.0 [19]. Умеет работать с kafka-clients 2.5.0 (совпадение номеров версий — совершенно случайно!), добавили кафковой специфики про переотправку в случае кооперативной ребалансировки, fetch-offset-request для брокеров версии 2.5 и выше, улучшили интеграцию с Micrometer, сделали простой сериализатор и десериализатор String, в JsonDeserializer можно определять создаваемый тип и так далее. Полный список фичей есть здесь [20]. Если руки зачесались обновиться, вспомните, что это всё ещё релиз-кандидат :)
  • Появилась пачка обновлений Spring Integration 5.3 RC1, 5.2.6 & 5.1.10 [21]. Описание изменений потребовало бы перечислять длинный список классов, и что с ними сделали, поэтому лучше сразу пройти в ченжлог [22].

Сервисы

  • Google добавили [23] в Cloud Spanner набор интересных фичей. Cloud Spanner — это глобальная распределенная база данных для Google Cloud Platform. Из интересных фичей — управляемый бэкап [24], который как-то компенсирует логические ошибки в приложениях. Бэкапы жестко оптимизируются на скорость развертывания, поэтому новый инстанс может развернуться из бэкапа за считаные минуты, даже если там бешеные терабайты данных. Теоретически.

Статьи, подкасты, стримы

  • Наш друг и известный докладчик Себастиан Дашнер выпустил очередное 7-минутное видео [25] о том, как отлаживать тесты в контейнере, когда у вас Quarkus.
  • Другой наш друг и докладчик, Джош Лонг, выпустил очередной Bootiful Podcast [26], в котором беседует с Адрианом Коулом — сооснователем Feign, JClouds и Spring Cloud Sleuth. Кроме того, Адриан — один из основных контрибьюторов в OpenZipkin.
  • Сколько памяти было впустую потеряно при добавлении нового булевского значения в java.lang.String в JDK 13? Нисколько. Шок-контент по ссылке [27].
  • Интересная статья «A New Era of Spring Cloud» [28] от Петра Миньковски (Piotr Mińkowski) о том, как жить в непростые времена, когда почти все компоненты Spring Cloud Netflix заморожены на поддержку еще со времен трейна Greenwich, а вместо них выкатили что-то совершенно новое. Забавно, что Spring Cloud Netflix всё ещё самый популярный проект Spring (около 4 тысяч звездочек на GitHub), и можно понять, почему!
  • В блоге Amis Technology появилась статья [29] с графиками производительности, в которых соревнуются блокирующие и неблокирующие технологии экосистемы Spring: R2DBC против JDBC и WebFlux против Web MVC.
  • Алмас Баимагамбетов пишет на JavaFX [30] анимированное диалоговое окно.
  • Адам Биен продолжает жечь на стримах, на этот раз он полез в браузер [31] и конкретно — querySelector и querySelectorAll. При чем тут Java — понятно постоянным зрителям этих стримов, всё складывается в картинку. Я просто открываю его на отдельном мониторе и слушаю параллельно с другими делами.
  • Наш домашний подкаст «Битовая Каска» провёл живой стрим [32] выпуска с легендарным предводителем JUG Ru Group, Алексеем Фёдоровым. Правильно оформленная запись подкаста появится в сети позже, когда мы обработаем звук.
  • Я на канале JavaWatch [33] пытался завести технологии из набора Project Leyden. В целом, не обнаружил какого-то серьезного ускорения на Windows, что ожидаемо, тем более что PowerShell в Windows — очень сомнительный метод измерения с чудовищным разбросом. По юзабилити — в JDK 11 был баг, не позволявший собирать на Visual Studio 2019, пришлось использовать JDK 14. Сборка java.base вывалила какую-то тонну ошибок, но собрало. so-шник через jaotc генерируется, exe-шник — нет. jlink — это много возни. Сравнить с GraalVM не получилось — native-image для Windows падал с какой-то внутренней ошибкой. Ждем и надеемся на лучшее!


Java-дайджест за 4 мая - 2Дайджесты публикуются при поддержке JUG Ru Group и конференции JPoint. Зарегистрироваться на летнюю онлайн-конференцию можно на официальном сайте [34].

Автор: Олег Чирухин

Источник [35]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/352746

Ссылки в тексте:

[1] Enriched Beans: https://github.com/stCarolas/enriched-beans

[2] JSR 330: Dependency Injection for Java: https://jcp.org/en/jsr/detail?id=330

[3] AutoFactory: https://github.com/google/auto/tree/master/factory

[4] Lombok: https://projectlombok.org/

[5] OmniFaces 3.6: https://omnifaces.org/

[6] IntelliJ IDEA 2020.1.1: https://blog.jetbrains.com/idea/2020/04/intellij-idea-2020-1-1/

[7] добавилась: https://youtrack.jetbrains.com/issue/IDEA-233724

[8] по ссылке: https://confluence.jetbrains.com/display/IDEADEV/IntelliJ+IDEA+2020.1.1+%28201.7223.91+build%29+Release+Notes

[9] исследование LampStudy: https://lampstudy.net/most-in-demand-programming-languages-in-2020/

[10] JEP 374: Disable and Deprecate Biased Locking: https://openjdk.java.net/jeps/374

[11] JEP 373: Reimplement the Legacy DatagramSocket API: https://openjdk.java.net/jeps/373

[12] JEP 353: Reimplement the Legacy Socket API: https://openjdk.java.net/jeps/353

[13] JEP 375: Pattern Matching for instanceof: https://openjdk.java.net/jeps/375

[14] в тикете: https://bugs.openjdk.java.net/browse/JDK-8235186

[15] с мусором в байткоде: https://bugs.openjdk.java.net/browse/JDK-8237528

[16] доклад Доктора Депрекатора: https://www.youtube.com/watch?v=qKeMB7OoGJk&feature=youtu.be&t=754

[17] Spring Boot 2.3.0.RC1: https://spring.io/blog/2020/05/01/spring-boot-2-3-0-rc1-available-now

[18] Paketo: https://paketo.io/

[19] Spring for Apache Kafka 2.5.0: https://spring.io/blog/2020/04/30/spring-for-apache-kafka-2-5-0-release-candidate

[20] есть здесь: https://docs.spring.io/spring-kafka/docs/2.5.0.RC1/reference/html/#whats-new-part

[21] Spring Integration 5.3 RC1, 5.2.6 & 5.1.10: https://spring.io/blog/2020/04/30/spring-integration-5-3-rc1-5-2-6-5-1-10-available

[22] в ченжлог: https://docs.spring.io/spring-integration/docs/5.3.0.RC1/reference/html/whats-new.html#whats-new

[23] добавили: https://cloud.google.com/blog/products/databases/native-cloud-database-spanner-adds-features

[24] управляемый бэкап: https://cloud.google.com/spanner/docs/backup

[25] очередное 7-минутное видео: https://blog.sebastian-daschner.com/entries/debugging-system-tests-containers-quarkus

[26] выпустил очередной Bootiful Podcast: https://spring.io/blog/2020/05/01/adrian-cole-founder-or-co-founder-of-feign-jclouds-and-spring-cloud-sleuth-and-major-contributor-to-openzipkin

[27] по ссылке: https://www.javaspecialists.eu/archive/Issue278.html

[28] «A New Era of Spring Cloud»: https://piotrminkowski.com/2020/05/01/a-new-era-of-spring-cloud/

[29] появилась статья: https://technology.amis.nl/2020/04/10/spring-blocking-vs-non-blocking-r2dbc-vs-jdbc-and-webflux-vs-web-mvc/

[30] пишет на JavaFX: https://www.youtube.com/watch?v=vrEnmDZW7Ag

[31] полез в браузер: https://www.youtube.com/watch?v=s9Jt8C5ThpY

[32] провёл живой стрим: https://www.youtube.com/watch?v=CsRHAqYGGG8

[33] канале JavaWatch: https://www.youtube.com/watch?v=7Pm-prh4x_M

[34] можно на официальном сайте: https://jpoint.ru/registration/?utm_source=habr&utm_medium=500332

[35] Источник: https://habr.com/ru/post/500332/?utm_source=habrahabr&utm_medium=rss&utm_campaign=500332