
Рон Пресслер собрал и выложил новый «официальный» прототип Project Loom (файберы для Java). В качестве основы используется JDK 14. Скачать можно здесь, прочитать анонc можно здесь. Люди потихоньку начинают втягиваться в тему, и на GitHub уже лежит несколько проектов, использующих Loom: Loom Date Server, Fibry (реализация акторов с поддержкой файберов), RxJavaFiberInterop (мост между RxJava 3 и Loom), и пара примеров использования Loom (раз, два). На всякий случай напоминаю, что Рон есть на Reddit, временами он пишет туда анонсы и оставляет хорошие развернутые комментарии.
InfernoPlus опубликовали видео про то, как сделали фанатскую игру в жанре Battle Royale про Super Mario, которая неожиданно хайпанула. На бэке там были Java + Tomcat. Конец истории: авторам позвонили из Nintendo и пообещали засудить, из-за чего игрушку пришлось убить.
Олег Шелаев написал отличную статью «Getting started with GraalVM». Олег коротко, ясно и просто ответил на вопросы: Что такое GraalVM? Зачем он нужен? На что стоит посмотреть, чтобы оставаться в курсе событий? Недавняя дискуссия на Reddit, где автор придумал сказочный «native bytecode» — хорошая иллюстрация того, что хоть GraalVM и пошел в массы, для многих всё это — тёмный лес. С этим надо что-то делать.
Чтобы вовремя получать новости по GraalVM, нужно:
- зафолловить официальный англоязычный Twitter
- подключиться к неофициальному русскоязычному сообществу в Telegram
- зайти в публичный Slack
- Зарелизилась Debezium 1.0.0, которая называет себя лучшей Java-библиотекой для CDC (Change Data Capture). У них даже есть собственный сайт с FAQ. CDC — это про то, чтобы записывать события изменения данных. Конечно, можно притащить Hibernate Envers, но это добавит оверхеда в рантайме. Вместо этого можно читать события изменений прямо из redo log базы данных — парсить его и как-то реагировать, чем и занимается Debezium. Причем делает она это в асинхронном режме, т.е. не затормаживая ваше OLTP приложение. Поддерживаются не только Oracle, MySQL, PostgreSQL (интуитивно понятно, что лог нужен для обеспечения D в ACID), но и для MongoDB. Подробней можно прочитать в статье Vlad Mihalcea.
- Некто eXsio выложил на GitHub QueryDSL EntityQL — небольшую библиотечку на 28 коммитов, которая позволяет делать Native SQL запросы с помощью JPA Entities в виде fluent API. Секрет в том, что она использует рефлексию, чтобы собрать всю DDL информацию и построить метамодель QueryDSL. Метамодели собираются в оперативной памяти, кодогенерации на файловой системе не требуется.
- Vincenzo Palazzo продолжает украшать Swing, только что выпущена версия v1.1.1-beta библиотеки material-ui-swing. По ссылке есть скриншоты и гифки.
- 28 ноября, оказывается, зарелизился Apache Camel 3. В дайджесты это не попало, потому что тогда еще не было дайджестов. Лучше поздно, чем никогда. Теперь Camel — это семейство из нескольких проектов, в том числе Camel 3 (известная нам во всех интеграционных бочках затычка), Camel K (Serverless, Kubernetes, Knative), Camel Quarkus. Официально поддерживается Java 11. Ядро
camel-coreраспилили из единой мега-помойки на 33 JAR-файла, API лежат вcamel-api, а вcamel-supportлежитRouteBuilderи всевозможные базовые классы, полезные для разработки плагинов. Всё стало работать быстрее и жрать меньше памяти. Добавили DSL для типобезопасного описания ендпоинтов (вместо адских URI в строках). Внутри движка добавили реактивщины, и как только Java 11 станет минимально поддерживаемой версией (на этих словах кто-то закашлялся и упал в обморок), внешний интерфейс тоже станет работать на Java 9 Flow API. Добавили интеграцию с Microprofile и сделали демки полностью standalone приложений, которые начинаются с запуска Camel. Короче, жить стало лучше, жить стало веселее. - Вышла Kafka 2.4, из интересного — брокер теперь может перебрасывать на ближайш��ю реплику (в облачной среде это большие деньги). Запилили новое Java Authorizer API, который позволяет обойти головняки, которые раньше были с
kafka.security.auth.Authorizer. - Моментально с выходом Кафки, вышла и соответствующая Spring for Kafka 2.4 RC1. Всё то же самое, что для 2.3, только скомпилированное для новой версии клиентов, и с поддержкой нового протокола балансировки.
- Объявлены даты EOL для Spring Cloud Hoxton и Greenwich, а следующий мажорный релиз будет называться Ilford. Кроме того, выпущен Hoxton Service Release 1 (SR1). Там одни багфиксы, надо обновляться.
- Еще больше про Spring можно прочитать в еженедельнике Джоша Лонга. Есть выпуск за 18 декабря и за 24 декабря. Кстати, в 2020 году Джош празднует юбилей, 10 лет работы в команде Spring, и соответственно — десять лет дайджесту.
- Дмитрий Жемеров опубликовал роадмап IntelliJ Platform на 2020 год. Есть перевод на русский язык в хабраблоге компании JetBrains.
- Вышла IntelliJ IDEA 2019.3.1. Поправили несколько неприятных багов. Например, пользователям нескольких мониторов больше не нужно перетаскивать окна на второй монитор после за��уска Идеи. Пофиксили чудовищный баг, когда локальный Tomcat запускался раньше, чем Maven отработает сборку.
- Вышел Eclipse 2019-12. Из Java 13 добавили switch expressions и text blocks. На YouTube есть ролик с описанием новых фичей, которые зачитываются диктором с жестким «новостным» акцентом. Очевидно, вместе с этим обновилась Eclipse Web Tools Platform и тому подобное — перечислять бесконечный спискок IDE на основе Eclipse не имеет смысла.
- Сразу на нескольких IDE-платформах (Eclipse, Visual Studio Code, Theia) вышли Spring Tools 4.5.0. Конечно, в первую очередь это связано с новой версией Eclipse, но они починили какие-то небольшие баги и сделали косметические улучшения.
- Jens Reimann продолжает постить небольшие новости про статус Eclipse IoT. В новом посте он рассказал про внедрение Helm Charts, начали они с Ditto.
- Gregor Riegler опубликовал видео о том, как на практике делается Lift Up Conditional Refactoring. Связанное обсуждение на Reddit.
- Опубликовано интервью с Krzysztof Ciesielski — автором Alpakka Kafka (откуда оно взялось и что это такое — описано в статье).
- Google Cloud Spanner наконец-то зарелизили официальный диалект для Hibernate. В статье имеется рабочий пример на GitHub, где в качестве платформы используется Quarkus.
- Google Cloud анонсировали фреймворк AutoML Natural Language. С помощью него можно извлекать из текстов инсайты, заниматься их дешевой классификацией и организацией обратной связи от клиентов — то есть, примерно то, что в отчете 2020 state of enterprise machine learning посчитали основными применениями машинного обучения в 2020 году.
- Square (те, которые мерчант-агрегатор) выпустили новое SDK для Java.
Habr
- Дмитрий Жемеров опубликовал роадмап IntelliJ Platform на 2020 год.
- Статья ashofthedream про у��асы реактивного программирования с кучей примеров кодом.
- «Исследуем бинарные форматы на примере байткода .class файла» esavin. Лютый жесткач. Несмотря на то, что речь идёт о проекте времен Java 6, подход всё равно интересный: автор размечает бинарную структуру аннотациями вида
@FieldOrder(index = 1)и потом смотрит структуру в отладчике. - Вторая часть статьи про написание Telegram-бота от dp_ua. Первая была опубликована 4 декабря, ссылка.
- «Как Kafka стала болью» — статья из блога компании Тинькофф Банк про то, как они поменяли IBM MQ на Kafka и начали жить с exactly once delivery.
- Топ 10 ошибок в проектах Java за 2019 год опубликован Валерием Комаровым в блоге компании PVS-Studio. Обратите внимание, что в комментарии пришел lany :-)
- Отчет про встречу jug.msk.ru с Алексеем Рагозиным, про новые и старые возможности Java Flight Recorder в OpenJDK 11.
- AGregory публикует конспекты книги Чеда Фаулера «Программист-фанатик». Первая, вторая, третья части.
- В блоге компании OTUS перевели на русский статью Grzegorz Piwowarek про
allOfиanyOfв CompletableFuture — что с ними не так и как их можно сделать более удобными. - FunCorp анонсировали конкурс для бэкенд-разработчиков «FunCode Java/Kotlin challenge» с суммарным призовым фондом в 550 000 рублей.
Картинка Для Привлечения Внимания предоставлена фотографом Bryson Hammer и сделана в канадском городе Кокран, на территории Bow Valley High School. Bryson специализируется на фотографиях холодных северных окраин, гор и живущей там живности.
