Обнови JDK — живи спокойно. И Libercat тоже

Если вы держите свои продакшн-инстансы на Axiom JDK и Libercat, ловите апдейт: вышли свежие релизы безопасности Java-стека. Делимся, что внутри и почему это важно.

Объектно-ориентированный язык программирования

Если вы держите свои продакшн-инстансы на Axiom JDK и Libercat, ловите апдейт: вышли свежие релизы безопасности Java-стека. Делимся, что внутри и почему это важно.

Эксперт Spring АйО и по совместительству Spring Data контрибьютор Михаил Поливаха прокомментировал статью, переведенную командой Spring АйО, про поддержку составных ключей со стороны Spring Data JDBC и R2DBC, начиная с версии 4.0.0-M4 — то, чего так не хватало при работе с моделями, где первичный ключ состоит из нескольких полей.
Теперь достаточно просто описать record с нужными полями, пометить его как @Id, и Spring Data сам корректно построит SQL-сущность. В статье наглядно показано, как использовать новую возможность, какие аннотации пригодятся и как обойти ограничение с автоинкрементом через BeforeConvertCallback.

Периодически читая Хабр, я еще не находил статей, описывающих внутренний мир штатных головных устройств (далее — ГУ) на базе Android, хотя я уверен, что не только мне было бы интересно, как там всё устроено и работает. Речь пойдет про одни из самых популярных авто на нашем рынке: Geely Coolray и частично Geely Tugella.
Эта статья обещает быть длинной с вырезками кода из JADX и не только, добро пожаловать под кат.

Привет, Хабр!
Начну с того, что немного уточню, о каких именно устройствах пойдёт речь. Ни для кого не секрет, что для организации мобильной связи используются базовые станции, на которых стоит много разного электрооборудования. А значит, за энергопотреблением надо следить, отчитываться и оплачивать его. Естественно, всё это логично делать удалённо, для чего на базовых станциях установлены специальные устройства сбора и передачи данных (далее УСПД).
Основная задача УСПД — это опрос подключённого к нему оборудования (электросчётчиков, резервных генераторов и других устройств, необходимых для работы базовых станций) с последующей передачей собранных данных на серверы МегаФона, где в дальнейшем они используются для формирования отчётности, анализа и управления работой базовых станций. По сути, это классическая IoT-система.
Речь пойдёт как раз о перенастройке УСПД.

Теперь и на русском языке! Аарон Плоетц представил свое практическое руководство по Java 21 — вполне себе современному изданию, наполненному реальными примерами, охватывающими всю экосистему: от базовых конструкций языка и новых возможностей версии 21, через работу с реляционными и NoSQL‑базами (PostgreSQL и Cassandra), до создания GUI‑веб‑приложений на Spring Boot и Vaadin, и даже простых игр с анимацией. Книга получила высокие оценки читателей на Амазон — 4.2 звезд из 5.

Spring Security — это мощный и важный фреймворк в Spring для обеспечения безопасности приложения при помощи аутентификации и авторизации. Основан на цепочке фильтров. Например, в Spring Security 6.5.1 по умолчанию стандартная цепочка фильтров (FilterChainProxy) содержит до 12–16 фильтров, выполняющих различные механизмы проверки. Стоит отметить, что точное количество фильтров зависит от конфигурации.

Представьте, что у вас есть бэкенд-приложение с REST API и вы хотите обращаться к нему не только с локальной машины, но и из интернета — через браузер, Postman, фронтенд или мобильное приложение. Для этого можно настраивать маршрутизацию, туннелирование, искать белый IP — или просто задеплоить приложение в облако. Под катом — пошаговая инструкция, в которой развернем Java-приложение на облачном сервере и пошагово пройдем весь процесс — от сборки до запуска и обращения к API извне.

Stream'ы в java явление давно не новое. Старая добрая Java 8 появилась на свет более 10 лет назад. С появлением Stream API жизнь стала проще и веселее. Но есть в Stream API два гадких утёнка: Stream#close и Stream#parallel.
С первым все достаточное просто — если не уверен в источнике откуда берется Stream — то он может быть вполне себе ресурсом и требовать try‑with‑resources (привет java.nio.file.Files#list). Cо вторым куда веселее...

Команда Spring АйО перевела статью от JetBrains, в которой анонсировано важное обновление: начиная с версии 2025.3, IntelliJ IDEA будет распространяться в виде единого дистрибутива, вместо отдельных версий Community и Ultimate.
Теперь каждый разработчик получит более мощный, гибкий и удобный инструмент «из коробки», независимо от подписки. Open source-компоненты по-прежнему доступны, а новая модель обещает улучшенный user experience, бесплатный доступ к большему числу функций и упрощённый процесс сборки из исходников.
Слой приложения persistence layer является в определённом смысле уникальным в смысле узкой направленности его функционала по сравнению с другими слоями приложения. Если рассматривать его только для работы с реляционными базами данных, то реализацию функционала слоя можно разбить на два основных варианта - с использованием ORM фреймворка и без использования ORM фреймворка. Каждый из этих вариантов можно реализовать достаточно универсальным образом.
В этой статье рассмотрен пример реализации слоя persistence layer без использования ORM фреймворка. Предлагаемое решение является простым и в тоже время достаточно универсальным для использования в языках программирования, поддерживающих объектную модель.

Если вы хоть раз разрабатывали проект на Spring, наверняка сталкивались с циклическими зависимостями. Эта проблема настолько распространена и одновременно болезненна, что о ней можно услышать как от спикеров, так и от участников крупнейших технических конференций.
На недавнем JPoint один из разработчиков рассказал мне, как вручную избавлялся от циклических зависимостей на огромном боевом проекте, изучая гигантскую диаграмму зависимостей.
К счастью, современные инструменты разработчика позволяют решать эту задачу намного быстрее и эффективнее.
В этой статье я рассмотрю причины возникновения циклических зависимостей, продемонстрирую наиболее типичные случаи и расскажу о нескольких способах их решения, используя профессиональные инструменты разработчика.

Всем привет! Меня зовут Алексей, и я работаю Java‑разработчиком с 2018 года. В статье расскажу, как столкнулся с проблемой обработки MultipartFile в многопоточном режиме. Почему эта проблема возникает и какие решения существуют.
Изначально стояла задача организовать фоновую обработку Excel-файлов: принимать файл, мгновенно возвращать клиенту HTTP-200 (без данных), а обработку содержимого выполнять асинхронно в отдельном потоке.
Вроде задачка тривиальная. Делаем контроллер:

Привет! Меня зовут Валерия, я java-разработчик компании SimbirSoft. В этой статье я хочу рассказать об одном из способов реализации ролевого контроля над действиями пользователей в системе. Механизм ролевого контроля позволяет сделать бизнес-процессы надежными с точки зрения информационной безопасности и привести их в соответствие с внутренними регламентами организации. Задачи подобного рода так или иначе возникают на любом проекте.
Есть несколько способов решения. Они зависят от проблематики, требований, доменной области, пожеланий заказчика и т.д. Есть несколько возможных вариантов реализации.

В данной статье я хочу поделится своим видением обоих профессий, сравнить их и дать свою субъективную оценку, а так же рассказать историю ИТ в общих чертах за последние 5 лет, как ИТ пузырь начал раздуваться и как он в конце концов лопнул.
Данная статья будет полезна для тех, кто решил вырваться из цепких лап экосистемы 1С или же наоборот сэкономить свое драгоценное время.

День рождения Kotlin уже на следующей неделе! Мы не могли обойти это замечательное событие стороной и решили провести прямую трансляцию, посвященную ему.
Мероприятие пройдет онлайн 22 июля, в 17:00 (МСК), на YouTube, VK и RUTUBE каналах Amplicode. Участие абсолютно бесплатное.
Главное – зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Как часто оценка по задаче совпадает с реальными трудозатратами?
Умение точно оценить объём работ спасает от переработок, напряжённой обстановки на проекте, поддерживает доверительные отношения в команде и показывает вас с хорошей стороны перед заказчиком.
Но интуитивные и ставшие традиционными способы оценки задач дают низкую точность. Пора взять на вооружение другой способ, дающий 90+% точность в оценке.

Азбука Морзе — один из самых старых, но не уходящих на заслуженный отдых телекоммуникационных стандартов. Почему бы не объединить ее с Java? Это статья о технологиях, отстоящих друг от друга более чем на полтора столетия. Мы познакомимся с кодом Морзе, с подкапотной частью Java Stream API, и на живом примере соберем все это в одно кроссплатформенное приложение на Java.

Сегодня, мои дорогие читатели, хочу поговорить об экономике или почему за программы приходится платить.

В этой статье я хочу показать, что из себя представляет System Design. На примере простого и очень популярного на собеседованиях сервиса «Сокращатель ссылок», мы рассмотрим стадии System Design и в конце у нас будет готова схема системы со всеми расчетами.

Писать код, который достаточно бегло просмотреть — не менее важно, чем писать код, который в принципе можно прочитать. Давайте немного поговорим о «форме» кода — такой, чтобы по структуре кода можно было быстро понять, для чего он, и сократить время работы с кодовой базой.