В большинстве туториалов по Java-ботам нам предлагают написать EchoBot или магазин пиццы на огромных switch-case конструкциях. Но в 2026 году, когда у нас есть Java 21 и Spring Boot 3Читать полностью »
В большинстве туториалов по Java-ботам нам предлагают написать EchoBot или магазин пиццы на огромных switch-case конструкциях. Но в 2026 году, когда у нас есть Java 21 и Spring Boot 3Читать полностью »
В Java-приложениях, работающих с MongoDB, преобразование данных между нативным документо-ориентированным представлением MongoDB и обычными Java-объектами (POJO — Plain Old Java Objects) является частой задачей. Хотя драйверы MongoDB предоставляют низкоуровневые API, разработчики часто предпочитают высокоуровневый объектный маппинг для улучшения читаемости, поддерживаемости кода и типобезопасности. Давайте разберемся, как Jackson помогает в эффективном и последовательном обмене данными между Java-приложениями и MongoDB.
Мок-объекты — это расширение практики разработки через тестирование (Test-Driven Development, TDD), которое способствует качественному объектно-ориентированному проектированию, направляя выявление целостной системы типов в кодовой базе. Однако они оказались не настолько полезными в качестве техники изоляции тестов от сторонних библиотек, как принято считать. В этой статье на развернутом примере описан процесс использования мок-объектов, а также приведены лучшие и худшие практики, выявленные в ходе использования этого подхода. Также представлен jMock — Java-фреймворк, в котором воплощен наш коллективный опыт.
Статья: «Как мы перевели сервисы Java с виртуальных машин в Kubernetes»
Введение
Наша команда занимается разработкой и поддержкой общих сервисов внутри компании. Под «общими» мы подразумеваем сервисы, которыми пользуются как коллеги из смежных проектов, так и внешние пользователи — например, страховые агенты. Все сервисы построены по принципам микросервисной архитектуры: система состояла из 10+ Java 8/11 приложений на базе Spring Boot, и мы планировали дальнейшее расширение числа сервисов. Сейчас система состоит из 28 микросервисов.
Используемые сокращения: о. - объект, и. - интерфейс, р. - референт, нс. - неопределенная ссылка, сбм. - сборщик мусора, сборка мусора.
Помимо обычных (т. н. сильных, strong) ссылок, которые создаются операторомnew, можно создавать мягкие, слабые и фантомные ссылки (общее название неопределенные ссылки, нс.) с помощью соответствующих классов-наследников абстрактного класса Reference:
Читать полностью »
В данной статье рассматривается архитектура проекта, позволяющая модульным образом интегрировать инфраструктурные фреймворки, такие как Spring, Quarkus и Micronaut, без необходимости модификации ядра предметной области (domain) или внешних API.
Ссылка на исходный код: https://github.com/bifrurcated/hexagonal
Синхронизация в Java часто воспринимается как простая языковая конструкция — достаточно использовать ключевое слово synchronized, и код начинает «просто работать».
На практике же на уровне JVM происходит цепочка событий, которую можно проследить до Mark Word — восьмибайтового служебного поля заголовка каждого Java-объекта.
Современные JVM (HotSpot, OpenJ9, GraalVM) не используют фиксированную модель блокировок. Вместо этого они динамически выбирают стратегию синхронизации, исходя из реального поведения потоков и истории использования объекта.