Java-дайджест за 6 марта
- Вышел очередной выпуск подкаста «Битовая Каска» с Антоном Архиповым (@antonarhipov). Антона, наверное, представлять не нужно, но всё-таки: Java-чемпион, менеджер по продукту в команде Kotlin, раньше работал в ZeroTurnaround. Подкаст помогает вести Кирилл Толкачёв, в остальном ведет стандартный состав.
- Кстати, к нам приехал Kotlin 1.3.70. В комплекте — новые функции и классы в коллекциях стандартной библиотеки (например,
kotlin.collections.ArrayDeque
), улучшения в Kotlin-плагине в IntelliJ IDEA, компилятор Kotlin/JVM генерит type annotations в байткоде 8 джавы и выше, ускорилась сборка Kotlin Native и так далее. - Драйвера Oracle JDBC отныне лежат на Maven Central. Не только для свежей базы, а для всех: 19.3.0.0, 18.3.0.0, 12.2.0.1, 11.2.0.4. Все остальные артефакты, относящиеся к базе данных, теперь сгруппированы в com.oracle.database.* в Maven. Подробности здесь. Мы пережили все эти годы мучений с подсовыванием джарок в разные странные места, давайте же выпьем за славную победу!
- Вышла библиотека eo-yaml 3.0.0. В ней интересно, что она родилась после прочтения книги «Elegant Objects» Егора Бугаенко. Не так грозен Егор, как его последователи: теперь у нас есть простой парсер YAML, который умеет работать с простыми случаями, пригодными для чтения YAML-конфигов. Более сложные штуки вроде стимов и алиасов ещё не реализованы.
- Кстати, тот же самый товарищ пилит RESTful API для Docker, внутри там (судя по pom.xml) находится Glassfish. Только что вышла версия 0.0.11. Ясно, что использовать это не стоит, но можно посмотреть за ходом мысли. Ведь она по-настоящему объектно-ориентированная, если вы понимаете, о чём я.
- Если уж на то пошло, держите еще одну мелкую библиотеку: update4j, только что вышла версия 1.4.5. Эта штука полезна для написания инфраструктуры, которая будет автоматически обновлять ваше приложение. Это именно библиотека, а не фреймворк — предполагается, что ты влезешь туда своими грязными руками и придумаешь собственный lifecycle приложения, а update4j будет только помогать. Есть документация. Присутствует 251 коммит, 338 звездочки и 29 форков на GitHub.
- Модераторы удалили пост «какая IDE вам больше нравится» из r/java на Reddit. Пост про Project Loom, в котором автор требовал показать применения на проде, тоже удалили. Вот поэтому на Реддите ничего и нету. Всё нужно писать на Хабр — здесь бы это сразу улетело на главную :-)
- Confluent анонсировали Confluent Cloud на Microsoft Azure Marketplace. А до этого, напоминаю, они появились в Google Cloud Platform (GCP) Marketplace. Добро пожаловать в мир managed Kafka!
- Вышел GitLab 12.8.2. Этот релиз посвящен исключительно безопасности и касается бага, который с помощью directory traversal позволял прочитать произвольный файл. Забавно, что атаку на directory traversal чинили на этой неделе и в Spring Cloud, но между собой они не имеют ничего общего.
- Обновился JEP 373: «Reimplement the Legacy DatagramSocket API». (Сделаю перевод на Хабр для коллекции ASAP).
- Вышел Apache NetBeans 11.3. Кто-то им, видать, еще пользуется, потому что они запилили поддержку JSF 2.3 в автодополнении и даже реализовали поддержку рекордов согласно JEP 359.
- Непреклонные пользователи экосистемы Eclipse оценят выход очередной версии Eclipse Communication Framework 3.14.7. Кроме багфиксов пополнился список проектов на GitHub, посвященных Remote Services Development.
- Пользователи JBoss Tools в новом релизе 4.14.0.AM1 увидят чудо чудное — Quarkus Tools! Можно генерить новые проекты (на основе code.quarkus.io), в application.properties работает автодополнение и подсветка кое-каких ошибок, ну и конечно, приложение Quarkus можно штатно запускать в Run/Debug mode.
- Джош Лонг (Josh Long) сделал Bootiful Podcast c организатором Spring I/O и известным Spring-консультантом по имени Сержи Алмар (Sergi Almar).
- А ещё Джош выпустил очередной эпизод «This Week in Spring». Текста мало, ссылок на статьи много.
- Зарелизился Spring Cloud Hoxton Service Release 3 (SR3) с исправленным CVE-2020–5405. Прошлые версии могли обрабатывать произвольные конфиги через spring-cloud-config-server, что дает хакеру возможность устроить атаку обходом директорий. Чего можно добиться такой атакой — непонятно, но возможно и чтения произвольного файла, так что фикс лучше бы накатить.
- Зарелизился Spring Security 5.3. В него вошли суммарно более 200 закрытых тикетов.
- Зарелизились Spring Session Dragonfruit-RC1, Corn-SR2 and Bean-SR10. Можно заглянуть в Dragonfruit и увидеть, что они просто обновили всё до самой свежей версии и впилили тему GitHub для документации.
- В официальном блоге Oracle подробно обсосали тему перехода с Java EE на Jakarta EE. Там есть несколько ироничная табличка, в которой авторы переводят c русского на русский термины Java EE в термины/спецификации Jakarta EE. Например, JASPIC — это Jakarta Authentication, если вам вдруг почему-то было это интересно. Там же есть новые артефакты для Maven и таймлайн разработки спецификаций Jakarta EE. А ещё забавно, как он аккуратно обошёл вопрос существования EJB 2:-)
- Там же, в Java Magazine, стоит отметить статью «Java Flight Recorder and JFR Event Streaming in Java 14». А вот статья «Java 14 Arrives with a Host of New Features» оказалась очередным переливанием из пустого в порожнее с перечислением все тех же JEP-ов для Java 14.
- В блоге WiX Engineering приведен отличный пример, как довольно непривычная в джава-мире оптимизация ручного разворачивания циклов может в два раза ускорить эффективность и так уже эффективного алгоритма. Ну и как всегда в таких статьях, пара слов о GraalVM.
- Жирный лонгрид на сайте Uber про то, как тюнить память JVM для больших данных, держа в голове какой-нибудь HDFS. Много экспериментов, настроек, графиков. В целом, статья выглядит примерно как любая статья такого рода — брейндамп о том, чего они там крутили и что на что повлияло.
- В блоге Helidon на Medium опубликовали статью о том, что Helidon полностью поддерживает JPA 2.2, и это намного больше, чем тот упрощенный Java Persistence API, который вы обычно используете в Java SE, запуская
Persistence.createEntityManagerFactory()
и как-то управляя транзакциями. Тут всё как во взрослом Java EE application server, но только куда быстрее, легче и удобней. - Там же, в блоге Helidon на Medium появилась статья про Helidon DB Client — универсальный реактивный API для работы с базами данных в неблокирующем стиле. Он реализован как уровень абстракции поверх JDBC и MongoDB Reactive Streams Java Driver, поэтому с ним заработают любые базы данных, имеющие в JDBC-драйвер, ну или MongoDB (если вам не страшно). Отвечая на невысказанный вопрос: да, оно работает с блокирующим JDBC, оборачивая его в executor service, а наружу всё это выглядит неблокирующе. Присутствует observability, backpressure и все другие слова, которые вы так любите.
- Адам Бьен (Adam Bien) на стриме измеряет количество памяти, которую сожрало приложение Helidon/MicroProfile по сравнению с чистым свежеустановленным Jetty. В другом стриме он смотрел на ответы HTTP JAX-RS, отличающиеся от HTTP 200 и микрофреймворки (quarkus and helidon, pippo, spincast). В еще одном стриме он сравнивал количество запросов в секунду в формате Quarkus vs WildFly.
- Свежая статья от Лукаса Эдера (Lucas Eder) «Using Java 13+ Text Blocks for Plain SQL with jOOQ». Жук жив! Лукас рассказывает, как можно использовать Жук, если его DSL нам не нужен. Думайте о нём, как о продвинутом JDBC, которому очень помогает возможность свежих Java клеить строки блоками.
- Очередной выпуск Java Weekly под номером 323 от Baeldung с чертовой свалкой ссылок на разные статьи без объяснения содержания.
Дайджест публикуется при поддержке JUG Ru Group и конференции JPoint. Следующий JPoint пройдет 15–16 мая в Москве, в большом и свободном Крокус Экспо. На сайте уже можно ознакомиться с частью программы и приобрести билеты.