KRepo: Spring Data для Ktor — без Spring и без боли
KRepo: Никаких имплементаций или инъекций. Под капотом — динамический прокси, кэширование метаданных и независимость от фреймворков: плагины под Exposed, JDBC или MongoDB реализуются отдельно.

Статически типизированный язык программирования
KRepo: Никаких имплементаций или инъекций. Под капотом — динамический прокси, кэширование метаданных и независимость от фреймворков: плагины под Exposed, JDBC или MongoDB реализуются отдельно.
Всем привет. Ранее я уже публиковал статьи (раз и два), где рассказывал о проблемах IDEA Maven плагина, основная из которых — это импорт проектов. И о своем решении Easy Maven, как получить информацию о проекте с помощью нативного Maven плагина. Теперь я бы хотел поговорить о запуске и отладке проектов в IDEA. С ними на самом деле похожая проблема. Чтобы это все работало, нужно импортировать в IDEA все настройки компилятора из билд файлов, чтобы среда разработки могла сама компилировать и запускать проект. Но это не так то просто — постоянно появляются новые параметры и возможности компиляторов, также для каждого из JVM языка (Java, Kotlin, Groovy, Scala и так далее) есть свой компилятор со своими особенностями, annotation processors — которые надо дополнительно распознавать и загружать как jar‑файлы с их транзитивными зависимостями и импортировать в IDEA. Постоянно нужно за всем этим следить и нам опять приходить играть в догонялки. Только мы всегда находимся на шаг позади в роли отстающих и нужно тратить много ресурсов, чтобы заставить запускаться проект корректно из IDEA. Поэтому я решил и тут пойти другим путем — а зачем нам вообще все это делать и переносить настройки в IDEA, если мы можно просто выполнить Maven таск для соответствующего плагина — запуск теста или приложения? Поэтому я хотел бы остановиться на этом поподробнее и рассказать о своем решении.

25 сентября в Москве прошёл Java Rock Stars Meetup, в котором было всё: доклады, холивары о будущем Spring в России и много нетворкинга.
Пока готовился обзор прошедшего митапа, мы уже успели организовать новый и заключительный в этом году Java Rock Stars Meetup, который пройдёт 2 декабря в Москве в привычном месте — лофте Casa Picassa.
Регистрируйтесь на митап по ссылке.
А пока присоединяйтесь к нашему ТГ-каналу и чату Java Rock Stars Meetup, чтобы быть в курсе новостей митапа.

Всем привет!
Сейчас я работаю Senior Java Developer в банке, и за последние годы мне довелось пройти немало собеседований — разных по уровню, стилю и степени жесткости. Сегодня я хочу рассказать об одном из них и поделиться опытом, который может быть полезен тем, кто тоже готовится к новым вызовам.

Это довольно короткая статья, целью которой является пояснение того, что вообще такое "модуляризация" Spring Boot, почему она появилась и откуда, собственно, ноги растут.
Для многих Spring Boot это просто автоконфигурация. Само собой Spring Boot гораздо шире и включает в себя в том числе ещё и
Spring Boot Actuator
Spring Boot DevTools
Spring Boot Tools и т.д.

Всем привет!
Я работаю Senior Java Developer в одном из банков, и за последние годы мне довелось пройти не один десяток собеседований, выслушать массу неожиданных вопросов и потратить немало времени на подготовку. И вот что я понял: Kafka - одна из самых любимых и в то же время самых коварных тем на технических интервью. Независимо от уровня кандидата, вопросы по Kafka появляются почти всегда - от базовой архитектуры до тонкостей гарантий доставки и работы consumer groups.
Сегодня я хочу помочь подготовиться к вопросам по Kafka, вопросы будут разной сложности, будет интересно. Поехали!

На днях вышла новая версия GigaIDE Community Edition. Долгожданное обновление, которое помимо обновления базовой платформы до IntelliJ 2025.1 и мультиагентной системы на базе GigaCode, имеет собственный маркетплейс плагинов. Особенно стоит отметить, что команда GigaIDE пошла по пути максимальной открытости и добавила возможность переключаться между различными маркетплейсами прямо в интерфейсе GigaIDE.

Всем привет!
Я Senior Java Developer в банке, и за эти годы мне довелось пройти немало собеседований. Где-то было спокойно, где-то — как в допросной, с каверзными вопросами, странными задачами и вечным «а почему так, а не иначе?». В процессе я собрал целую коллекцию тем, которые всплывают снова и снова, особенно когда дело касается баз данных.
Сегодня хочу поделиться этим опытом и разобрать вопросы, которые чаще всего задают именно по SQL-базам.

Иногда в разработке случается баг, который не просто не даёт спать, а заставляет пересмотреть свои жизненные ценности.
У меня это произошло со скромным всплывающим окном внутри WebView.
Задача была максимально скучной: на экране с WebView пользователь нажимает кнопку “Exit”, а веб-страница показывает попап подтверждения. На старом коде — всё идеально. На браузере — идеально. На новом инфраструктурном слое WebView — попап появляется на миг и тут же закрывается сам, как будто кто-то тайно играет в “крестики” за пользователя.
Никаких ошибок. Никаких исключений.
Просто “блип”… и пустота.
То самое чувство, когда ты нажимаешь кнопку, а мир делает вид, что “ничего не было”.
И это — пролог к истории о том, как два дня моей жизни сгорели на алтаре WebView.

Команда Spring АйО подготовила перевод статьи о том, как Spring Framework 7 приносит нативную поддержку API-версионирования — темы, которая годами оставалась на разработчиках и собирала тонны костылей. Теперь Spring Framework предлагает единый, продуманный механизм как для серверной, так и для клиентской стороны. Что это меняет для архитектуры и разработки на Spring — разберёмся в статье.

Всем привет!
Сейчас я работаю Senior Java Developer в одном из банков, и за последние годы мне довелось пройти множество собеседований, столкнуться с десятками непростых вопросов и вложить кучу времени в подготовку. И со временем я заметил одну закономерность: Spring — одна из самых объёмных и любимых тем на Java‑собеседованиях, причём спрашивают её у кандидатов любого уровня.
Поэтому в этой статье я хочу помочь вам уверенно подготовиться к вопросам по Spring, также покажу примеры задач, которые дают на собеседованиях. Поехали!

Connekt — это HTTP-клиент с открытым исходным кодом, который удобно встраивается в IDE на базе IntelliJ IDEA. Поставляется вместе с плагином Amplicode. Он помогает тестировать crud-приложения с помощью скриптов и готовить тестовые данные для дальнейшего ручного тестирования. Connekt призван расширить возможности, которые есть в привычных нам Postman и HTTP-клиенте от Jet Brains. Postman имеет похожие возможности, но тесты там пишут на JavaScript, что для кого-то может быть неудобно. Кроме того, в Postman нет тесной связи с IDE. HTTP-клиент от Jet Brains не позволяет делать сложные тесты с использованием результатов предыдущих запросов, в нём отсутствует удобный Kotlin DSL. Connekt поддерживает сложные сценарии OAuth2-авторизации, переключая вас прямо в браузер, использование SSL-сертификатов, скачивание и загрузку файлов.

Domain Specific Language (DSL) — это язык, ориентированный на конкретную предметную область, который позволяет выражать решения в терминах этой области. В отличие от языков общего назначения вроде Java или Kotlin, DSL фокусируется на узкой задаче, делая код более читаемым и выразительным.
Kotlin благодаря своему синтаксису и возможностям предоставляет отличные инструменты для создания внутренних DSL. В этой статье мы рассмотрим, как создавать собственные предметно-ориентированные языки в Kotlin, какие языковые конструкции для этого используются и как это применяется в реальных проектах.
Чтобы статья была практико-ориентированной, мы сосредоточимся на одной области — создании DSL для конфигурации приложений и разберем несколько компактных примеров.

Всем привет!
Работая Senior Java Developer в одном из банков, я успел пройти уйму собеседований, столкнуться с десятками каверзных вопросов и понять, сколько усилий требует подготовка. И каждый раз убеждаюсь в одном: тема JVM, память и GC — одна из самых недооценённых и одновременно самых частых на Java-собесах. Многие знают об этом “что-то где-то слышал”, но как только разговор заходит про Heap, Metaspace, JIT, Safepoint или разные типы GC — начинаются проблемы.
Поэтому эта статья — вторая часть моей шпаргалки по подготовке к Java-собеседованиям. Здесь я собрал всё самое важное о работе JVM и управлении памятью простым, человеческим языком, без боли и академической зауми. Разберём архитектуру JVM, устройство памяти, JIT, GC, типы ссылок и самые частые вопросы, которые любят спрашивать на интервью.
В профиле уже есть первая часть для подготовки — Многопоточность без боли.

Всем привет!
Я работаю Senior Java Developer в одном из банков, и за последние годы мне пришлось пройти не одно собеседование, услышать десятки каверзных вопросов и потратить уйму времени на подготовку. И вот что я понял: многопоточность — это одна из самых сложных и любимых тем на Java-собеседованиях, независимо от уровня кандидата.
Поэтому в этой статье я хочу помочь вам уверенно подготовиться к секции по concurrency: разберём ключевые термины, посмотрим, как это работает на практике, и дам несколько советов, которые реально помогают на собесах. Поехали!

В какой‑то момент простого дашборда уже не хватает. Хочется, чтобы метрики не просто «где‑то красиво лежали», а сами приходили и били в лицо, когда что‑то пошло не так.
Разберёмся с Grafana Unified Alerting, expressions, темплейтами уведомлений и типичными ошибками, которые легко словить, если вы впервые лезете в алерты.

В микросервисной архитектуре мы постоянно сталкиваемся с задачей: сохранить изменения в базе и гарантированно отправить событие в Kafka. На первый взгляд звучит просто — сделал транзакцию, отправил сообщение, закоммитил. Но в реальности между базой данных и брокером сообщений никакой общей транзакции нет.
В этой статье я покажу, как я вынес всю логику Transaction Outbox в отдельный Spring Boot Starter, который можно подключить одной зависимостью. Он создаёт таблицу Outbox, конфигурирует шедулер, отвечает за отправку в Kafka и очистку, позволяя микросервисам сосредоточиться только на бизнес-логике.

В этой статье мы разберём, как написать собственный сервер на Kotlin, подключить к нему базу данных, создать пару эндпоинтов и всего за 5 минут задеплоить сервер вместе с базой. В итоге у нас получится полноценная связка сервер + БД, готовая к работе. В дальнейшем на её основе вы сможете создавать более сложные серверные решения.

В новом переводе от команды Spring АйО Пунит Патвари недавно принял предложение о работе в Atlassian на должность ведущего инженера-программиста (Principal Software Engineer). За три месяца он прошёл более 60 собеседований в 11 компаниях, как он мне рассказал, и отказался ещё от трёх процессов после того, как согласился на предложение от Atlassian — включая собеседование в Meta*.
* Meta признана экстремистcкой организацией в России

Как приручить WebView: пререндерим экраны заранее (AndroidX WebKit prerenderUrlAsync), меряем не ощущения, а TTVR — время до визуальной готовности — лёгким offscreen-детектором, шлём метрики в Grafana. Внутри — когда и что пререндерить, таймауты/отмена, cookie-политика и готовые сниппеты. На проде — до 2.5× быстрее и меньше «белых экранов».