Самая актуальная информация по Java
По всем вопросам- @haarrp
@itchannels_telegram - 🔥лучшие каналы
@pythonl - 🐍
@ai_machinelearning_big_data- ml
@ArtificialIntelligencedl - AI
@datascienceiot - ds
@pythonlbooks 📚
РКН: clck.ru/3FmwKr
#VRHSZ
Join @javatg for exclusive datascienceiot and vrhsz content and discussions in 12
Пока нет отзывов. Будьте первым, кто поделится своим опытом!
Последние посты
Java
11 мая 2026 г., 09:04
📷 Photo
⚠️ Маленькая настройка в Spring Boot, которая может спасти от скрытых багов.
Лучше не менять значение по умолчанию:
spring.main.allow-bean-definition-overriding=false
Что это делает?
Если в приложении два бина с одинаковым именем, Spring не запустится.
И это на самом деле хорошо.
Почему:
✔ помогает сразу увидеть конфликт конфигурации
✔ не даёт одному бину тихо перезаписать другой
✔ предотвращает скрытые баги в DI
Если же включить:
spring.main.allow-bean-definition-overriding=true
• тогда второй бин молча перезапишет первый.
В результате приложение запустится, но будет использовать не тот бин, который вы ожидали.
И такие баги потом очень сложно найти.
Иногда лучше получить ошибку при старте, чем искать проблему в продакшене.
#SpringBoot #Java #Backend
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg
2,420
14
0
Java
11 мая 2026 г., 09:04
📷 Photo
⚡️ Перестаём писать методы с 7+ параметрами
Если сигнатура выглядит как:
createUser(firstName, lastName, email, phone, address, city, country)
Это уже сигнал, что модель данных развалилась.
Проблема не только в читаемости.
Такие методы сложнее поддерживать, расширять и тестировать. Любое изменение ломает сигнатуру и тянет за собой каскад правок.
Нормальный вариант - собрать связанные данные в объект:
UserInfo userInfo
Получаем:
- чище API
- проще добавлять поля
- меньше ошибок при передаче параметров
- код начинает отражать доменную модель, а не список строк
Это базовый приём, но именно на нём чаще всего экономят, а потом платят сложностью.
2,520
Java
11 мая 2026 г., 09:04
📷 Photo
☕ Java совет: рекурсивный обход файловой системы
В Java есть удобный способ рекурсивно обойти все файлы в директории - метод Files.walk().
Он возвращает Stream, что позволяет легко фильтровать и обрабатывать файлы через Stream API.
Пример - найти все .java файлы в папке src:
import java.io. IOException;
import java.nio.file.*;
import java.util.stream. Stream;
public class Main {
public static void main(String[] args) {
Path startPath = Paths.get("src");
try (Stream paths = Files.walk(startPath)) {
paths
.filter(Files::isRegularFile)
.filter(path -> path.toString().endsWith(".java"))
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Что происходит:
• Files.walk(startPath) - рекурсивно проходит по всем папкам
• filter(Files::isRegularFile) - оставляет только файлы
• endsWith(".java") - фильтр по расширению
• forEach - обработка найденных файлов
Это намного чище, чем писать собственную рекурсивную функцию обхода директорий.
#Java #JavaDev #Programming
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg
Java
11 мая 2026 г., 09:04
📷 Photo
👣 https://stepik.org/a/269250/pay?promo=2bef0bc799b836f1
Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.
Arc> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.
Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой.
Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.
А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.
Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.
Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/pay?promo=2bef0bc799b836f1
2,570
Java
11 мая 2026 г., 09:04
📷 Photo
Последний рывок перед майскими — AI-митап #каквсбере в Нижнем Новгороде!⚡️
23 апреля в кампусе Школы 21 вместе с топовыми спикерами Сбера обсудим сразу три действительно горячие темы:
✔️ Какие алгоритмы генерации и шифрования сейчас в тренде?
✔️ Как «разогнать» искусственный интеллект?
✔️ Каким образом лучше подружить команду с ИИ?
Готовы узнать всё о трансформации мира современной разработки? Тогда займите своё место на митапе — подробная программа и регистрация https://developers.sber.ru/kak-v-sbere/events/novgorod_april_2026?utm_source=telegram&utm_medium=fix&utm_campaign=ai_meetup_nn_april_2026_post&utm_content=&utm_term=javatg&erid=2VtzqumWpoH!
2,090
Java
11 мая 2026 г., 09:04
📷 Photo
✔️ Большинство усложняет работу с чтением файлов в Java
Хотя для маленьких файлов всё уже есть из коробки
Files.readAllLines()
одна строка - и у тебя весь файл как список строк
• никаких буферов
• никакого лишнего кода
List lines = Files.readAllLines(Path.of("file.txt"));
for (String line : lines) {
System.out.println(line);
}
Чисто. Просто. Читаемо.
Да, это не для больших файлов, но для 80% задач - идеальный вариант
2,690
25
Java
11 мая 2026 г., 09:04
⚠️ Spring Boot: не включайте publish-request-params в production
В Spring Boot есть настройка:
spring.mvc.publish-request-params=true
Она включает логирование параметров HTTP-запросов.
Это удобно в dev-среде, потому что можно видеть:
• request headers
• query parameters
• form data
Обычно это используют вместе с фильтром:
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true);
filter.setIncludeHeaders(true);
filter.setIncludePayload(true);
filter.setMaxPayloadLength(1000);
filter.setAfterMessagePrefix("COMPLETE REQUEST: ");
return filter;
}
Но есть важная проблема.
В production такие логи могут случайно сохранить чувствительные данные пользователей.
Например:
POST /login
{
"username": "john",
"password": "mypassword"
}
Если включено логирование payload, такие данные могут попасть в:
• application logs
• log-агрегаторы
• мониторинг системы
А это уже серьёзная уязвимость безопасности.
Поэтому правило простое:
- включайте publish-request-params только в dev
- никогда не логируйте request body в production
- маскируйте чувствительные поля (`password`, token, `authorization`)
Маленькая настройка -
но может привести к утечке данных.
#SpringBoot #Java #Backend #Security
2,400
11
Java
11 мая 2026 г., 09:04
📷 Photo
☕ Java совет: List.reversed()
В Java появился удобный метод List.reversed(), который возвращает обратное представление списка (view).
Важно понимать:
он не изменяет оригинальный список и не создаёт новую копию - это просто reversed-view поверх исходного списка.
Пример:
var list = List.of("A", "B", "C");
var reversed = list.reversed();
System.out.println(reversed); // [C, B, A]
System.out.println(list); // [A, B, C]
Что происходит:
- reversed() показывает элементы в обратном порядке
- исходный список остаётся без изменений
- создаётся view, а не копия → это быстрее и экономит память
Такая техника часто используется в Java Collections для эффективных представлений данных без лишнего аллоцирования памяти.
Маленькая, но очень полезная фича современной Java.
2,560
Java
11 мая 2026 г., 09:04
📷 Photo
💡 Полезный Java-трюк: ThreadLocal.withInitial()
Если нужно, чтобы каждый поток имел собственное значение переменной, используйте ThreadLocal.
Метод withInitial() позволяет задать значение по умолчанию, которое будет создаваться лениво — только при первом обращении потока.
Пример:
ThreadLocal counter =
ThreadLocal.withInitial(() -> 0);
counter.get(); // 0
counter.set(70);
counter.get(); // 70
Что происходит:
• каждый поток получает свою независимую копию переменной
• значение создаётся только когда поток впервые вызывает get()
• нет гонок данных и не нужна синхронизация
Это особенно полезно для:
• хранения контекста запроса
• connection/session объектов
• временных данных в параллельных задачах
• оптимизации без synchronized
Главное помнить: ThreadLocal хранит данные на уровне потока, а не объекта.
2,230
Java
11 мая 2026 г., 09:04
📷 Photo
🚀 https://stepik.org/a/276971/pay?promo=c8255310e62bd95f
Пока ты пишешь промпты - рынок уже ушёл дальше.
Сейчас выигрывают не те, кто умеет красиво формулировать запросы, а те, кто строит агентные системы:
- принимают решения сами
- ходят в API
- работают с Postgres и Redis
- управляют браузером через Playwright
- доводят задачи до результата без человека
И вот правда, о которой мало говорят:
90% таких систем умирают между ноутбуком и продом.
Работает локально. Ломается в реальности.
Нет архитектуры. Нет устойчивости. Нет деплоя.
AI Agents Engineering - курс со Stepik, который закрывает этот разрыв.
- LangGraph, AutoGen, Computer Use
- архитектура агентов, а не «скрипты на коленке»
- LLMOps, логирование, стабильность
- деплой в Docker и работа в проде
8 модулей, 120+ шагов, всё через практику.
На выходе не «сертификат ради галочки», а:
- рабочий production-агент
- понимание, как строить такие системы с нуля
- навыки, за которые уже платят
Сейчас самое окно входа.
Через полгода это станет базой, а не преимуществом.
Скидка 55% действует ещё 48 часов: https://stepik.org/a/276971/pay?promo=c8255310e62bd95f
Java
24 апр. 2026 г., 18:40
📷 Photo
🚀 Java: используйте ReentrantReadWriteLock, когда чтений намного больше, чем записей
Если у вас есть общий ресурс (например, кэш, конфигурация или состояние сервиса), который часто читают разные потоки, но редко изменяют — обычный synchronized может сильно тормозить систему.
В таких случаях лучше использовать ReentrantReadWriteLock из java.util.concurrent.
Идея простая:
- Read Lock — позволяет нескольким потокам читать данные одновременно
- Write Lock — разрешает запись только одному потоку и блокирует всех остальных
Таким образом можно сильно увеличить параллелизм: десятки потоков могут читать данные одновременно, а запись происходит эксклюзивно.
Когда это полезно:
- данные читаются очень часто
- записи происходят редко
- важно максимально увеличить throughput системы
Примеры использования:
кэш в сервисе, конфигурации, метаданные, in-memory storage, state менеджеры.
import java.util.concurrent.locks. ReentrantReadWriteLock;
public class SharedValue {
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private int value = 0;
public int readValue() {
lock.readLock().lock();
try {
return value;
} finally {
lock.readLock().unlock();
}
}
public void writeValue(int newValue) {
lock.writeLock().lock();
try {
value = newValue;
} finally {
lock.writeLock().unlock();
}
}
}
Главный плюс:
несколько потоков могут читать одновременно, не блокируя друг друга.
Но как только начинается запись - все чтения и записи блокируются, пока операция не завершится.
Java
24 апр. 2026 г., 18:40
📷 Photo
🔥 Linux 7.0 - Торвальд и команда вычистили десятилетия грязного легаси и ОС стала реально быстрее!
Линус Торвальдс наконец пошёл на https://9to5linux.com/linux-kernel-7-0-officially-released-this-is-whats-new#google_vignette и начал массовую зачистку старого кода. То, что копилось годами, просто выкинули. Итог - система стала заметно проще, чище и быстрее.
Что изменилось по факту:
XFS сильно прокачали - файловая система стала надёжнее, меньше рисков потери данных и лучше ведёт себя под нагрузкой
Работа с памятью ускорилась примерно на 20%, плюс подтянули сетевой стек - соединения стабильнее при высоких нагрузках
Контейнеры теперь стартуют быстрее за счёт улучшений в open_tree - меньше оверхеда при разворачивании
В Kconfig наконец дали больше свободы кастомизации - можно заменить Tux на свой логотип
Поддержка железа тоже прокачана - AMD и Intel работают эффективнее без ручных оптимизаций
Главное здесь не список фич, а тренд. Ядро постепенно избавляется от исторического балласта и становится более предсказуемым и удобным для современных нагрузок.
https://github.com/torvalds/linux/releases/tag/v7.0
🐍 https://t.me/addlist 🚀 https://max.ru/pythonl
https://t.me/pythonl
Java
24 апр. 2026 г., 18:40
📷 Photo
Есть кейс или продукт, о котором хочется рассказать backend-сообществу?
Тогда хорошие новости: 29 августа в Москве пройдет конференция JVM Day — большая встреча инженеров, на которую ищут спикеров.
Вы сможете:
— выступить с докладом — рассказать о кейсе или нестандартном решении. Формат классический: 40-минутный доклад на сцене и вопросы из зала;
— представить продукт в демозоне. У вашей команды будет пространство с экранами и стойками на весь день: можно показывать технологию вживую, общаться с инженерами, собирать обратную связь и находить первых пользователей.
Поддерживают любой формат: можно выступить одному или с коллегой, устроить дискуссию или воркшоп.
Хороший шанс заявить о себе и проверить, как сообщество реагирует на ваш продукт.
Встречаемся в штаб-квартире Т-Банка.
https://meetup.tbank.ru/conference/jvm-day/?utm_source=telegram&utm_medium=ntv.fix&utm_campaign=mtp-conf-java_partners_0426&utm_term=javatg&erid=2RanykZQX4e
2,030
Java
24 апр. 2026 г., 18:40
📷 Photo
🚀 Spring Boot tip: как быстро защитить REST endpoint
С Spring Boot + Spring Security можно буквально за пару строк закрыть нужные маршруты.
Допустим, у нас есть контроллер:
@RestController
public class MyController {
@GetMapping("/admin")
public String admin() {
return "Admin panel";
}
}
Теперь хотим, чтобы /admin был доступен только аутентифицированным пользователям.
Добавляем конфигурацию безопасности:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic();
}
}
Разберём, что происходит:
• authorizeRequests() - начинаем описывать правила доступа
• antMatchers("/admin").authenticated() - для /admin требуется аутентификация
• anyRequest().permitAll() - остальные маршруты публичные
• httpBasic() - включаем HTTP Basic Auth
В итоге:
• /admin защищён
• всё остальное - открыто
• минимум кода, максимум контроля
Spring Security выглядит сложно, пока не начинаешь разбирать по шагам.
А дальше можно добавлять роли, JWT, OAuth2 и более гибкие политики доступа.
Java
24 апр. 2026 г., 18:40
📷 Photo
🖥 Resilience4j - библиотека для Java, которая помогает сделать микросервисы устойчивыми к сбоям и перегрузкам.
В распределённых системах ошибки — это норма:
* внешние сервисы падают
* запросы зависают
* API начинают тормозить
* нагрузка резко растёт
Если не контролировать такие ситуации, один нестабильный сервис может «уронить» всю систему.
Resilience4j решает эту проблему с помощью набора паттернов отказоустойчивости.
Основные компоненты:
Circuit Breaker
Отслеживает частоту ошибок и временно блокирует обращения к нестабильному сервису, чтобы дать ему восстановиться.
Rate Limiter
Ограничивает количество запросов и защищает систему от перегрузки.
Retry
Автоматически повторяет запросы при временных сбоях, с настройкой числа попыток и интервалов.
Bulkhead
Ограничивает количество параллельных вызовов или потоков, чтобы сбой в одной части не заблокировал ресурсы всей системы.
TimeLimiter
Устанавливает таймауты выполнения, чтобы не ждать слишком долго ответы от внешних сервисов.
Почему это важно:
В микросервисной архитектуре надёжность — это не отсутствие ошибок,
а способность системы правильно на них реагировать.
Resilience4j — лёгкая, модульная библиотека с лицензией Apache-2.0, которая помогает строить стабильные и предсказуемые распределённые системы.
https://github.com/resilience4j/resilience4j
Java
24 апр. 2026 г., 18:40
📷 Photo
2,670
9
0
Java
24 апр. 2026 г., 18:40
📷 Photo
🚀 GigaChat 3.1 Ultra и GigaChat 3.1 Lightning в опенсорс под MIT лицензией!
Обе модели
• Обучены с нуля — без инициализации зарубежными весами
• MoE + MTP + MLA
• Совместимы с HuggingFace, llama.cpp / vLLM / SGLang
Код и веса уже на платформе https://giga.chat/?utm_source=telegram&utm_medium=fix&utm_campaign=mk_gigachat_seeding_gigachatultra_post_2026_march&utm_term=javatg&erid=2VtzqxkzqrD.
Это не просто релиз весов, а результат большой инженерной работы над качеством, alignment и стабильностью модели. В https://t.me/gigadev_channel команда поделилась результатами и своими наработками.
В релизе: высокие результаты на аренах, улучшенный function calling, решённая проблема циклов, DPO в нативном FP8, найденный и зарепорченный баг в SGLang при dp > 1.
2,300
Java
24 апр. 2026 г., 18:40
📷 Photo
💡 Java tip: группировка данных в одну строку
Если нужно быстро сгруппировать элементы потока по какому-то признаку — используйте Collectors.groupingBy().
Пример: группируем пользователей по возрасту
Map> byAge =
users.stream()
.collect(Collectors.groupingBy(User::getAge));
Что происходит:
Stream проходит по списку users
groupingBy берёт значение из User::getAge
В результате получаем Map<Возраст, List>
Когда это полезно:
• группировка заказов по статусу
• пользователей по ролям
• транзакций по дате
• логов по уровню (INFO / ERROR)
Бонус: можно комбинировать с другими Collectors
Map countByAge =
users.stream()
.collect(Collectors.groupingBy(
User::getAge,
Collectors.counting()
));
Минимум кода - максимум читаемости. Подписывайся, больше фишек каждый день!
3,010
Java
1 апр. 2026 г., 06:52
📷 Photo
💡 Java tip: начиная с Java 14 можно использовать switch expressions - код становится короче и чище.
Раньше switch выглядел так:
много case, break и дополнительная переменная.
Теперь можно писать компактнее и понятнее.
String season = switch (month) {
case 12, 1, 2 -> "Winter";
case 3, 4, 5 -> "Spring";
default -> "Invalid";
};
Что это даёт:
- меньше шаблонного кода
- нет break
- результат можно сразу присвоить переменной
- логика читается намного проще
Такие мелкие фичи сильно упрощают большие кодовые базы и уменьшают количество ошибок.
#java #modernjava
2,050
20
Java
1 апр. 2026 г., 06:52
📷 Photo
Java 26 стал умнее, особенно в pattern matching 👇
Работа с pattern matching теперь стала стабильнее и предсказуемее
Что улучшили:
- более точный вывод типов
→ компилятор лучше понимает сложные условия
- меньше странных ошибок
→ меньше неожиданных предупреждений и падений
- единое поведение
→ одинаковая логика в if и switch
📌 Что это значит на практике
Раньше:
если условия усложнялись - компилятор мог “путаться”
Теперь:
- flow analysis стал умнее
- переменные из pattern matching корректно распознаются
- код становится чище и безопаснее
Java постепенно догоняет современные языки в удобстве и предсказуемости работы с типами
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg
1,870
Java
1 апр. 2026 г., 06:52
📷 Photo
Приглашаем бэкенд-разработчиков на Week Offer Backend*
Такой формат позволяет пройти секции и финалы за неделю и сразу получить офер. Зарегистрироваться можно до 8 апреля, а сам ивент пройдёт с 11 по 17 апреля, онлайн.
Кого мы ищем:
🟢 Бэкенд-разработчиков c опытом работы от 4 лет на C++, Python, Java/Kotlin, Go**.
🟢 Стажёров-разработчиков c навыком кодинга на C++, Python, Java, Kotlin, Go** и базой по алгоритмам и структурам данных.
🔶 Все подробности, регистрация и материалы для подготовки доступны на сайте: https://clck.ru/3Sffjs/?erid=2VtzqvGzvsX
Приходите создавать полезные продукты для миллионов пользователей!
2,070
9
Java
1 апр. 2026 г., 06:52
📷 Photo
🚀 Spring Boot трюк, который спасает продакшен
Если ваш сервис обращается к внешним API — рано или поздно они начнут падать, тормозить или отдавать ошибки.
Вместо ручной логики повторов используйте https://t.me/Retryable.
Что это даёт:
- Автоматические повторные запросы при ошибках
- Настраиваемое количество попыток
- Exponential backoff (увеличение задержки между попытками)
- Fallback-логика через @Recover, если всё окончательно сломалось
Когда это нужно:
- Платёжные шлюзы
- Внешние API
- Микросервисы
- Любые нестабильные сети
Главная идея:
Не падай из-за временных ошибок - попробуй ещё раз.
Такая мелочь может значительно повысить стабильность системы без сложного кода.
2,250
Java
1 апр. 2026 г., 06:52
📷 Photo
🚀 Java 26 стала умнее — особенно в pattern matching
Теперь работа с pattern matching выражениями стала заметно стабильнее и предсказуемее
Что улучшили:
🟢 Более надёжный type inference
компилятор лучше понимает типы в сложных условиях
🟢 Меньше edge-case ошибок
меньше неожиданных падений и предупреждений
🟢 Консистентное поведение
одинаковая логика в if и switch
Что это даёт на практике:
раньше при усложнении условий
компилятор мог “теряться”
теперь:
- анализ потока стал умнее
- переменные из pattern matching корректно распознаются
- код становится чище и безопаснее
Java становится всё ближе к современным языкам
с удобным и предсказуемым контролем типов
#Java #JavaDev
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg
3,910
Java
1 апр. 2026 г., 06:52
📷 Photo
⚡️ Что происходит внутри инфраструктурных сервисов Yandex Cloud?
Разработчики Yandex Cloud и Yandex Infrastructure расскажут об этом https://events.yandex.ru/events/aboutcloud/indexmsc26?utm_source=telegram&utm_medium=seeds&utm_campaign=javatg&utm_content=aboutcloud2026&erid=CQH36pWzJqDgH9TenkK61UCRSok2VSRvwCe9n1CoVoGqSj для разработчиков, архитекторов и инженеров, которая пройдет 16 апреля.
В программе вас ждут реальные технические варианты реализации и опыт нетривиальных решений разработчиков платформы:
— Инфраструктура как код для управления оповещениями: и никаких проблем
— Развёртывание в ритме танго: как мы заменили оркестрацию процесса установки «хореографией»
— Как мы оптимизируем вывод больших языковых моделей: кэширование, время отклика и ресурсы графических ускорителей
— Как мы строили собственную сеть доставки контента и через что нам пришлось пройти?
— Как мы работаем с уязвимостями на примере современных аппаратных атак
Также команда расскажет о разработке программных решений, которые устанавливаются в инфраструктуре заказчика, и о том, как в процессе установки оркестрацию заменили «хореографией».
Участники смогут обсудить волнующие вопросы, варианты реализации и ошибки с разработчиками сервисов Yandex Cloud и другими участниками.
Встреча пройдет офлайн в Москве и онлайн. Помимо экспертных докладов, офлайн участников ждут секретная техническая сессия и развлекательная программа, а онлайн-участников ждёт инженерное соревнование в прямом эфире.
https://events.yandex.ru/events/aboutcloud/indexmsc26?utm_source=telegram&utm_medium=seeds&utm_campaign=javatg&utm_content=aboutcloud2026&erid=CQH36pWzJqDgH9TenkK61UCRSok2VSRvwCe9n1CoVoGqSj, чтобы послушать реальные истории от разработчиков, обменяться опытом и узнать, что скрыто под «капотом» инфраструктурных сервисов, а также какие планы у команды на будущее.
Java
1 апр. 2026 г., 06:52
📷 Photo
3,200
16
0
Java
1 апр. 2026 г., 06:52
📷 Photo
🚀 Spring Boot: когда использовать static-классы, а когда Bean
Частая ошибка в Spring - использовать static-утилиты там, где нужен управляемый компонент.
Правило простое
Используйте static-классы только если:
- они не хранят состояние
- у них нет зависимостей
- не требуется mock в тестах
- не нужен AOP (логирование, транзакции и т.д.)
Во всех остальных случаях — лучше Spring Bean.
Почему это важно
Пример с static-кэшем:
public class CacheUtils {
private static Map cache = new HashMap<>();
}
Такой кэш:
• общий для всех потоков
• может случайно изменяться
• сложно контролировать и тестировать
нет управления жизненным циклом
Правильный подход — Bean со scope:
https://t.me/Componenthttps://t.me/Scope("request")
public class CacheService {
private Map cache = new HashMap<>();
}
Теперь:
Spring управляет жизненным циклом
можно задать scope (request, session, singleton)
легко тестировать и мокать
можно добавить AOP
Главная мысль
Static — только для чистых функций.
Состояние и логика — пусть управляет Spring.
Spring лучше всего работает, когда управляет stateful-объектами.
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg
Java
1 апр. 2026 г., 06:52
📷 Photo
💡 Скоро выходит Java 26
В JDK 26 обновляют HttpClient.
Что нового:
• опциональная поддержка HTTP/3 (QUIC)
• умные таймауты
• загрузка файлов через file-channel
• усиленный контроль TLS
• заголовки и cookies в соответствии с RFC
Это делает встроенный Java HttpClient быстрее, безопаснее и удобнее для современных сетевых протоколов.
Читать подробнее: https://social.ora.cl/6019B6HWIN
2,730
24
Java
1 апр. 2026 г., 06:52
📷 Photo
☕ Java 26 уже доступна
Вышел Java 26 (JDK 26 / OpenJDK 26) — новая версия платформы Java с улучшениями производительности, инструментов и платформенных возможностей.
Что важно:
• ⚡ улучшения JVM и производительности
• 🔧 обновления инструментов разработки
• 📦 новые API и доработки стандартной библиотеки
• 🧠 дальнейшее развитие Project Loom, Panama и Valhalla
• 🛠️ улучшения для cloud-native и современных backend-приложений
Полезные ссылки:
• Скачать JDK 26
https://social.ora.cl/6018B6ynbo
• Release Notes
https://social.ora.cl/6019B6ynbU
• API Javadoc
https://social.ora.cl/6010B6ynbq
• Список новых возможностей
https://social.ora.cl/6011B6ynbS
• Inside Java — обзор релиза
https://social.ora.cl/6012B6ynbs
#Java #Java26 #JDK #OpenJDK #Backend
⚡️ https://t.me/addlist 🚀 https://max.ru/javatg