Эта неделя в мире Java (3 ноября)

cdhoksuejor1ufxlcub518ynlzy.jpeg

Эта неделя на Хабре

  • Трейсы в Spring Boot 3 с использованием Zipkin и Kafka в качестве транспорта. Конкретная техническая инфа, как это делать на Spring Boot 3, с кучей листингов кода, вплоть до содержимого pom.xml. Написано по опыту использования в Альфа Страховании: им нужно оформлять полисы по REST API.

  • Жук, нумерология, хеш или ничо? Оптимизация работы с путями. Автор делится опытом оптимизации задачи по редактированию и поддержке в актуальном состоянии огромного количества данных типа «куда направить товар». Классическая задача программирования на практике логистики компании CDEK. SpringBoot и PostgreSQL.

  • Байт-код — это просто! Как сделать DI по-настоящему быстрым. Два года назад в Яндекс Маркете начали делать свой легковесный DI-фреймворк Scout с выразительным Kotlin DSL. Он не генерирует код, а делает всю работу в рантайме. Переход с Dagger 2 сильно замедилил их приложение. Автор рассказывает опыт, как применение байткода всех спасло и сделало перформанс не хуже, чем в Dagger 2. Конкретные примеры кода.

  • @Scheduled + @Async в Spring Boot. Зачем эти аннотации ставят вместе, в каких потоках происходит работа программы и как делать правильно.

  • Java Unsafe API для низкоуровневого манипулирования памятью. Хороший гайд по Unsafe API, написанный понятным языком.

  • Свежий подкаст Cloud.ru Tech про Java в 2023 году — выложен на YouTube.

Российская специфика:

  • Жилье в 500 м от сетевых продуктовых магазинов в Москве. Поиск удобных мест для ежедневной жизни и похода в продуктовый магазин, с OpenStreetMap, графическими картами и реализацией на Java.

  • Создание сервиса авторизации через систему ЕСИА. Статья нужна тем, кто делает российские сервисы с использованием ЕСИА (единая система идентификации и аутентификации). Подтверждённая учётная запись в ЕСИА — своего рода электронный паспорт, с помощью которого можно получать доступ к разным сайтам, порталам и системам, не используя дополнительные средства регистрации и авторизации, например, логин и пароль. Написано по опыту работы в БФТ-Холдинге.

  • На что способен КриптоПро JCP? Туториал по валидации отсоединенной электронной подписи. КриптоПро SVS — обертка над КриптоПро CSP. Веб-сервис REST и SOAP для проверки подписи, проверка валидности и квалифицированности сертификата. Yandex Cloud перестал поддерживать виртуальные машины Windows, и автору пришлось крутиться. Статья по опыту работы в SimbirSoft.

Митапы

Провели очередной Javawatch в Питере, в Failover Bar. В честь недели Хэллоуина обсуждали страшные истории: атаки по GeoIP, dependency confusion в репозиториях пакетов, как Марак сошел с ума и рисовал Залго в консоли, устройство и эксплуатацию Log4Shell, и тому подобное.

IDE и редакторы

  • Spring Tools 4.20.1. Автодополнение Spring Properties для Spring Boot теперь работает в 10(!!!) раз быстрее при первом использовании (так же быстро, как при втором и последующих вызовах дополнения). И другая полировка производительности Spring Boot. Собрали превью-билды для Eclipse 2023–12, который скоро выйдет. Качать здесь.

  • Свежий релиз Eclipse Theia 1.43. Добавили удаленную разработку по SSH (как в VSCode и IDEA). Улучшили поддержку TestControllers (это такое API для тестирования родом из VSCode) — Theia видит наличие в проекте тестов, и позволяет запускать в отдельном UI. Подняли уровень совместимости с плагинами от VSCode до 1.82, включая ленивую загрузку файлов локализации.

  • Свежий EAP IntelliJ IDEA: IntelliJ IDEA 2023.3 EAP 7. По идее, это последний EAP перед выпуском финальной версии (и соответственно, периодом, когда бесплатной Идеи временно не будет и ее придется покупать). Продолжает полироваться плагин для Kubernetes, улучшили автодополнеие статических методов в Java. Улучшили инспекцию по сравнению длины строки с константным числом в Java.

  • Amazon добавил свежие модели Code Llama и Mistral 7b в свой Amazon SageMaker JumpStart. Теперь в один клик можно делать приватные эндпоинты для генерации кода.

Spring

  • Статьи:

  • Релизы:

  • Альфы, беты, кандидаты:

Веб и Java EE

  • Helidon 4.0.0. Helidon Níma server, поддержка MicroProfile 6.0, побег с асинхронщины на блокирующие API.

  • Eclipse Serializer 1.0 — крутой сериализатор для работы с объектами сложной структуры

  • JHipster Lite 0.46.0 — много фиксов в скриптах и документации. Подробный ченжлог на Гитхабе.

  • Свежий Glassfish 7.0.10 — сервер приложений для Jakarta EE 10

  • Jakarta Data 1.0.0-M1 — BasicRepository с базовыми функциями над сущностями, функции insert и update для CrudRepository, и т.п.

GraalVM

  • GraalVM for JDK 21 Community 21.0.1. Фиксы для октябрьского обзора безопасности от Oracle. Новый класс CEntryPointErrors для возврата ошибок при непонятных границах стека, краш при анкоммите неиспользуемой памяти, и краши при использовании ProcessBuilder на Mac. Подробнее здесь.

Тестирование

  • WireMock присоединяется к программе Testcontainers Official Modules Program и объявляет выпуск официального модуля Testcontainers для WireMock. На данный момент этот модуль предлагает реализацию для Java, Go и Python (дальше — больше).

  • WireMock — Stubbing with JSON Mappings — как писать заглушки для HTTP-запросов с помощью WireMock с использованием конфигов в формате JSON.

  • JUnit 5 Watcher Extension — новое расширение JUnit 5, которое собирает подробную статистику о выполнении тестов. Эти метрики крайне полезны для улучшения производительности всей тестовой сюиты.

  • Include Only Relevant Details In Tests как писать тесты так, чтобы их было легко читать. Выбрасывать ненужное!

  • Connecting to Testcontainers Services using Testcontainers Desktop — как подключиться к службе, запущенной с помощью Testcontainers, с использованием приложения Testcontainers Desktop.

  • Simplify Testing Golang Apps with testcontainers-go — использование Testcontainers при написании тестов для приложений на Go. Не совсем Java, конечно, но мы привыкли к Testcontainers в Java, а это не всегда так.

Подкасты

  • Свежий Bootiful Podcast (подкаст главного евангелиста Spring, Джоша Лонга). Гость — основатель GraalVM, Томас Вертингер.

  • И еще один Bootiful Podcast c Крейгом Воллсом, мистером Spring in Action.

  • Создание новых операций со стримами в видеоблоге Николая Парлога. JEP 461 предлагает Stream::gather и Gatherer — новую промежуточную мета-операцию, которую можно использовать для реализации всех видов конкретных операций, от старых (таких как map и sorted), до новых (типа flatMapIf и increasingSequence). В этом видео он кодит все эти операции.

  • Plants, process and parties — интервью в честь релиза Kubernetes 1.28 aka Planternetes. Гость — Grace Nguyen, который был лидом этого релиза. Хост интервью — Craig Box (VP of Open Source в Kubescape).

Туториалы и статьи

  • Ограничения производительности Loom от Адама Варски, разработчика Ox — библиотеки для работы со структурной многопоточностью с го-подобными каналами, которая основана на Project Loom, виртуальных тредах, новой структурной многопоточности (JEP 428), scoped values (JEP 429) и Scala 3. По ходу исследования выяснилось, что Kotlin довольно хорош, и догнать его непросто.

  • Внедряем Виталика!. Статья про то, как внедрять внешнюю информацию в общение с GPT с помощью LangChain4j, на примере работы с постами Виталика Бутерина.

  • Content Negotiation in Practice. Content Negotiation нужен для повышения доступности web API. Цель — согласовать формат для запроса и ответа между сервером и юзер-агентом. Процесс стандартизирован в RFC-9110, который предлагает три шаблона: проактивное (серверное) и реактивное (клиентское) согласование ответа, а также согласование запроса. В статье дается полный, подробный, хорошо продуманный туториал для Spring.

  • Introducing ingress2gateway — свежая статья в блоге Куба про упрощение апгрейдов в Gateway API.

Обсуждения

Подписывайтесь на два моих Telegram-канала:
⇛ Javawatch. Анонсы по Java: новости, митапы.
⇛ Откровения от Олега. Личный канал + чат практически без цензуры, где можно встретить ребят типа Баруха и всё это обсудить.

© Habrahabr.ru