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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

  • Трейсы в 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

  • Статьи:

    • Новинки в Reactor Core 3.6.0. Виртуальные треды, улучшенная пропагация контекста, поддержка Multi-Release JAR (MRJ, JEP 238).

  • Релизы:

    • Spring Tools 4.20.1

    • Spring Cloud Stream Applications 2022.0.0

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

    • Spring Framework 6.1 RC2

    • Spring Boot 3.2.0-RC2

    • Spring Vault 3.1.0-RC1

    • Spring Cloud 2023.0.0-RC1 (aka Leyton)

    • Spring Statemachine 4.0.0-M1

    • Spring Modulith 1.1 RC1 + 1.0.2

Веб и 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).

  • Java, Microsoft and Software Development with AI - очередной подкаст Adam Bien на airhacks.fm. Время от времени его сайт лежит, это норма.

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

  • Ограничения производительности 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.

Обсуждения

  • Twitter: Virtual thread supporting vs. Virtual thread-based Microservice framework. В Java 21 добавили виртуальные треды и заявили поддержку, а Helidon 4 на них основывается. В чем разница и что это значит? Тред с картинками.

  • Reddit: Проверка идеи String Template Processors (по JEP430) для SLF4J

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

Источник: https://habr.com/ru/articles/771656/


Интересные статьи

Интересные статьи

Подготовили для вас подборку бесплатных курсов и тренажеров обучения по программированию на Java. Также на нашем сайте есть раздел со всеми платными курсами по Java и отзывами о них — https://katalog-...
Вышла общедоступная версия Java 17. В этот релиз попало более 2700 закрытых задач и 14 JEP'ов. Изменения API можно посмотреть по этой ссылке.
В этой статье мы говорим о переменных и связанных с ними темами!Научимся создавать переменные и константы.Узнаем что такое инициализация переменных.Поговорим о литералах....
Окончание жизни Spring Boot 2.1.x намечено на 1-е ноября 2020. Какие-то обновления до этой даты все еще будут, а после — пропадут. Нужно обновляться на 2.2. Сама процедура обновления не кажет...
Многие современные языки поддерживают сопоставление с образцом (pattern matching) на уровне языка. Java в данный момент не поддерживает pattern matching, но есть надежды что в будущем все может и...