#spring_boot

2026-03-11

[Перевод] Разница между параллельными и распределёнными вычислениями

Параллельные и распределённые вычисления часто ставят рядом, но это далеко не одно и то же. В новом переводе от команды Spring АйО разберем, как устроены обе модели, чем отличаются их архитектура, способы обмена данными, масштабируемость и отказоустойчивость. Статья подойдет тем, кто хочет понять, когда достаточно ресурсов одной машины, а когда без сети из нескольких узлов уже не обойтись.

habr.com/ru/companies/spring_a

#system_design #consistency #distributed_computing #distributed_systems #distributed #parallels #parallelism #parallel_computing #spring #spring_boot

2026-03-08

conditionals-spring-boot: расширяем возможности @Conditional

Написал небольшую библиотеку для Spring Boot, которая добавляет типизированные @Conditional -аннотации для работы с конфигурацией через Environment...

habr.com/ru/articles/1008018/

#java #spring #spring_boot #spring_framework #springboot #configuration #configuration_management

2026-03-03

[Перевод] Часы Лампорта

Сегодня мы живём в мире распределённых систем: Apache Kafka, Apache Spark, Apache Cassandra — это уже не экзотика, а повседневная инфраструктура продакшена. Сервисы пишут события, стримы обрабатываются в реальном времени, данные реплицируются по датацентрам. И почти в каждом таком сценарии возникает фундаментальный вопрос: Как понять, что произошло раньше, а что позже, если глобального времени не существует? Здесь в игру вступают логические часы Лампорта — простая, но концептуально мощная идея, лежащая в основе причинно-следственного порядка в распределённых системах. Подробнее - в новом переводе от команды Spring АйО .

habr.com/ru/companies/spring_a

#java #kotlin #system #system_design #architecture #architecture_design #spring #spring_boot

2026-03-01

LTS, обновления и поддержка (support): где в Java путают термины и кто за это платит

Когда начинается разговор про Java, почти всегда он внезапно уходит в сторону Spring. И это не случайность. Проблемы с релизами, поддержкой, миграциями, безопасностью — это не «проблемы Spring». Это следствие того, как изменилась сама Java-экосистема. Чтобы понять, что происходит со Spring, нужно сначала разобраться, что произошло с Java.

habr.com/ru/companies/axiomjdk

#java #spring #spring_boot #support #lts #поддержка #jdk #релизный_цикл #информационная_безопасность #обновления

2026-02-20

[Перевод] Ceylon и NULL: как сделать null нормальным

В одном и том же null часто прячут разные смыслы: “нет значения”, “неизвестно”, “неинициализировано”. Потом это всплывает в NPE и в кривой логике исполнения. В Ceylon эту проблему решают через типовую систему, через Union типы. Подробнее, в переводе от Spring АйО .

habr.com/ru/companies/spring_a

#java #kotlin #ceylon #jvm #spring #spring_boot #spring_framework

2026-02-19

[Перевод] Руководство по ArchUnit — как модульно тестировать архитектуру

Соблюдение определённой структуры пакетов или архитектуры крайне важно. Особенно в Java, где для корректной работы некоторые элементы должны быть public или действительно доступны за пределами своего пакета. В новом переводе от команды Spring АйО рассмотрим библиотеку с открытым исходным кодом ArchUnit, которая помогает в тех случаях, когда одного компилятора недостаточно.

habr.com/ru/companies/spring_a

#java #kotlin #archunit #тестирование #testing #test #spring #spring_boot #spring_framework

2026-02-18

[Перевод] Разрыв в неизменяемости: почему Java Records нужны оптики (Lenses)

Records, pattern matching и sealed-типы сделали Java куда более «функциональной» — читать вложенные данные стало легко и красиво. Но как только вам нужно изменить что-то глубоко внутри неизменяемой структуры, начинается боль: каскад пересоздания records, копирование полей, десятки строк ради одного изменения. В новом переводе от команды Spring АйО рассмотрим, почему у современной Java всё ещё есть пробел в истории неизменяемости — и как оптики закрывают его. Если pattern matching — это про элегантное чтение , то оптики дают то, чего так не хватает, — композиционную запись : определили путь один раз и дальше меняете вложенные поля одной строкой, без ручной реконструкции и без циклов.

habr.com/ru/companies/spring_a

#java #kotlin #jvm #optics #java_core #spring #spring_framework #spring_boot

2026-02-12

[Перевод] Программирование, ориентированное на данные, для Java: за пределами record-классов

Record-классы удобны, пока класс = «состояние, всё состояние и ничего кроме». Любое отклонение (API канонического конутруктора не равно внутреннему представлению, нужно наследование) ломает «автогенерацию» и паттерн-деструктурирование (destructuring). В новом переводе от команды Spring АйО статьи Brian`а Goetz`а, архитектора Java Language, предлагается следующий шаг в направлении data-oriented programming in Java: классы-носители и интерфейсы-носители (они же Carrier classes & interfaces). Концептуально, carrier классы родились из record-ов путем ослабления части их ограничений. Комментарий от Михаила Поливаха : Друзья, помните, пожалуйста, что данная статья по сути является суммированием обсуждения Carrier классов из JDK Project Amber Mailing List. Я это к тому, что пока непонятно, в какой версии языка carrier классы появятся, и появятся ли они в том виде, в котором представлены в статье. Статью стоит рассматривать как пищу для размышления.

habr.com/ru/companies/spring_a

#java #jvm #kotlin #jvm_options #jvm_hacks #spring #spring_boot #spring_framework

2026-02-11

[Перевод] HotSpot AOT-кэш: стартуем быстрее, греемся меньше

В новом переводе от команды Spring АйО рассмотрим, как можно ускорить Java-приложения без переписываний: в свежих JDK появились Ahead-of-Time оптимизации кэша, которые выносят «дорогие» этапы загрузки/линковки классов (и даже частично профилирование методов) из рантайма в заранее подготовленный артефакт. Рассмотрим как устроен AOT-кэш в JDK 24–26, какие есть workflow (3 шага vs 2 шага/в один прогон), где прячутся подводные камни вроде удвоения требований по памяти при - XX:AOTCacheOutput , и какие практики обучения помогут реально сократить время старта и быстрее выйти на пик производительности.

habr.com/ru/companies/spring_a

#java #kotlin #jvm #aot #cache #cachecontrol #spring #spring_boot #spring_framework #springboot

2026-02-04

Разработка приложения на Spring Boot, Java, База данных, профиль пользователя. Часть 2

Всех приветствую! В прошлый раз я не указал важный аспект: на данном этапе проект - это монолит. Однако архитектура закладывается с учетом того, что в будущем систему можно будет разнести на разные серверы. Хочу поблагодарить пользователей за конструктивную критику в комментариях. В частности, @aleksandy верно подметил использование LocalDateTime вместо Instant. Повторюсь: на этапе прототипирования это осознанный выбор для удобства отладки и прямого контроля данных в БД "глазами", без конвертации часовых поясов в уме. Переход на Instant - это стандарт для продакшена, и он заложен в план развития. Также коснулись темы equals() и hashCode(). В текущей реализации я использую getClass(). Знаю, что это не учитывает работу Hibernate Proxy (когда вместо реального объекта мы получаем его обертку-пустышку для ленивой загрузки). На текущей "плоской" структуре данных это не критично, но как только мы перейдем к сложным связям, будет рефакторинг этих методов через instanceof, чтобы избежать ошибок сравнения.

habr.com/ru/articles/992904/

#java #java_spring #spring #spring_boot #spring_framework #backend

2026-02-04

[Перевод] Почему ваш Docker-контейнер взломают завтра (и как этого избежать)

«Контейнер скомпрометирован». С этих слов начался трёхчасовой ночной кошмар с утечкой данных и полным отчётом об инциденте. Всё из-за банального запуска контейнера от root с лишними правами. Тут не нужно быть хакером или гуру DevSecOps. Проблема в том, что безопасность попросту игнорируют. В новом переводе от команды Spring АйО — 11 конкретных шагов, которые помогут вам избежать катастрофы: от запуска от непривилегированного пользователя до минимальных образов, сканирования уязвимостей, изоляции сетей и настройки профилей безопасности. Если вы разворачиваете контейнеры в продакшене — это руководство должно стать вашей чеклист-основой. Ошибка может стоить очень дорого.

habr.com/ru/companies/spring_a

#java #kotlin #docker #devops #spring #spring_boot #spring_framework

2026-02-02

Разработка приложения на Spring Boot, Java, База данных, профиль пользователя. Часть 1

Всем привет! Когда речь заходит о разработке высоконагруженных систем, многие предлагают: «python, сделать проще и быстрее». Но есть проблема: Скорость разработки != скорость и качество работы сервиса. Когда мы делаем любой продукт, важны: Масштабируемость, стабильность работы под большой нагрузкой, предсказуемость поведения системы — особенно когда речь идет о тысячах одновременных пользователей, лентах новостей в реальном времени, уведомлениях и сложных связях между разными сущностями. Именно поэтому и выбрана Java и Spring Boot как основа. Банки, сервисы видео, они работают именно на Java и Spring. Одна из особенностей: строгая типизация, качественные инструменты для многопоточности, мощная экосистема и предсказуемое потребление памяти делают Java идеальным выбором для систем, где падение = полная потеря пользователей. Попробую сделать цикл статей по разработке соцсети, которая будет объединять в себе ВК, пикабу, и иже с ними. Не ради «создания продукта который затмит всех и вся», а ради самого программирования. Итак, начну, среда разработки Intellij Idea. О, точно, весь проект будет доступен из gitLab. Нам необходимо создать файлы с конфигурацией. можно сказать что их обычно 3. Да, я про application.yml. один из них общий, который так и называется: application.yml, и еще два: application-dev.yml и application-prod.yml

habr.com/ru/articles/991974/

#java #spring #spring_boot #spring_framework #backend

2026-02-02

Kotlin + Spring Boot: полный гайд по монолиту на 2026 год

Всем привет, меня зовут Сергей Прощаев, и в этой статье я расскажу про то, с чего на самом деле стоит начинать большинство backend-проектов в 2026 году. Spoiler alert: это не микросервисы. Я покажу, как собрать простое, но полноценное монолитное приложение на Spring Boot и Kotlin — тот самый надежный фундамент, который позволит вам запустить MVP за недели, а не месяцы. А в конце расскажу, где можно системно прокачать навыки Kotlin-разработчика, чтобы строить такие системы уже профессионально.

habr.com/ru/companies/otus/art

#Kotlin #Spring_Boot #java #монолит #REST_API #архитектура #бэкендразработка

2026-02-01

Создаем Telegram-бота для отслеживания погоды за 5 минут с помощью Nyagram (а не очередного PizzaBot)

В большинстве туториалов по Java-ботам нам предлагают написать EchoBot или магазин пиццы на огромных switch-case конструкциях. Но в 2026 году, когда у нас есть Java 21 и Spring Boot 3 , писать бойлерплейт — это преступление против продуктивности. Сегодня мы напишем WeatherBot — полезного бота, который показывает реальную погоду через API OpenWeatherMap, имеет кнопку обновления "на лету" и, используя FSM (Машину состояний) с валидацией данных, позволяет настроить ежедневную рассылку прогноза.

habr.com/ru/articles/991414/

#telegram #java #telegrambot #github #java21 #spring_boot #spring_mvc #боты #tutorial #программирование

2026-01-30

Три модели многопоточности: Event Loop, Platform Threads и Virtual Threads

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

habr.com/ru/articles/991162/

#java #spring #spring_boot #spring_framework #springboot #многопоточность #multithreading

2026-01-30

[Перевод] Redis — это больше, чем просто кэш

Пора перестать воспринимать Redis как временное хранилище key-value. Сегодня это многофункциональный движок, объединяющий в себе брокер сообщений с поддержкой Pub/Sub, гео-БД с Spatial-индексами, и надежный инструмент синхронизации через распределенные блокировки (Redlock). Современный Redis, потенциально, может заменить стек из 3–4 узкоспециализированных сервисов. В новом переводе от команды Spring АйО рассмотрим, как использовать Redis на полную катушку и превратить его в фундамент вашей архитектуры.

habr.com/ru/companies/spring_a

#redis #java #kotlin #database #базы_данных #db #spring #spring_boot #spring_framework

2026-01-29

[Перевод] Мы сломали Nginx одним limit_req

Что делать, когда инфраструктура, сдерживавшая злоумышленников, внезапно начинает мешать легитимным клиентам? В Dodo Payments такой момент наступил в 23:00 в четверг — и стал точкой невозврата. В новом переводе от команды Spring АйО подробно разберем переход с классического ingress-контроллера на полноценный service mesh. Миграция заняла 11 недель и навсегда изменила подход к платформенной инженерии.

habr.com/ru/companies/spring_a

#java #kotlin #ci #deployment #nginx #spring #spring_boot #spring_framework

2026-01-28

[Перевод] Паттерны проектирования в Data Engineering, которые необходимо освоить в 2026 году

Настоящая устойчивость систем — в архитектуре. В новом переводе от команды Spring АйО — 8 фундаментальных паттернов проектирования, на которых держатся все современные data engineering-стеки. Освоив их, вы перестанете тушить пожары и начнёте проектировать платформы, которые выдерживают продакшен.

habr.com/ru/companies/spring_a

#java #kotlin #system_design #patterns #spring #spring_boot #spring_framework #springboot #spring_data

2026-01-28

[Перевод] 3 критические ошибки в Spring Boot, которые просачиваются в прод (и как их исправить)

Пишешь на Spring Boot уже пару лет и уверен, что знаешь все подводные камни? Рассмотрим классические ошибки, которые продолжают проникать в прод даже у бывалых разработчиков. Вместе с Mohamed Akthar в новом переводе от команды Java Insider разбираем три распространённые проблемы, которые могут привести к бессонным ночам отладки.

habr.com/ru/articles/990018/

#java #spring_boot #spring_framework #spring #springboot

2026-01-22

[Перевод] Почему Kotlin ломает JPA

Используешь Kotlin с Jakarta Persistence и думаешь, что всё работает? Возможно, до первой неожиданной ошибки. data class, val, final-классы и даже значения по умолчанию — всё это может тайно мешать корректной работе JPA. Вместе с Торбеном Янссеном в новом переводе от команды Spring АйО разберем скрытые ловушки и показывают, как настроить проект правильно, чтобы не наступить на мину.

habr.com/ru/companies/spring_a

#java #kotlin #jpa #jvm #spring #spring_boot #spring_framework #springboot

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst