Блог создается при поддержке Failover Bar и Anarchic Pro

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

November 03, 2023 . 7 минут на чтение статьиЭта неделя ||| в мире Java ||| (3 ноября)

Если вам лень читать три тысячи тредов в рассылке OpenJDK и ленты с новостями сотен обновлений фреймворков, то этот дайджест - для вас.

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

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

  • Жилье в 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).

  • 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.

Обсуждения



Не забывайте подписаться на наши ресурсы, там есть ништяки: