Java Portal | Программирование
12.3K subscribers
1.34K photos
108 videos
42 files
1.35K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Совет по Java : вы можете использовать LinkedHashMap, чтобы легко реализовать LRU-кэш (Least Recently Used, «наименее недавно используемый»).

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Какие коллекции следует использовать в многопоточной среде в Java?

[1-й вариант]

- через вызов метода Collections.synchronized()
- преобразует обычную коллекцию в синхронизированную
- создаёт обёртку, которая синхронизирует все операции с помощью ключевого слова synchronized

[2-й вариант]

- CopyOnWriteArrayList
- если работа с коллекцией в основном состоит из чтения, это лучший вариант с точки зрения производительности
- потокобезопасность достигается за счёт копирования внутреннего массива при каждом изменении, при этом исходный массив остаётся неизменяемым
- порядок выполнения (visibility/упорядоченность) обеспечивается использованием модификатора volatile для внутреннего массива

[3-й вариант]

- concurrent-коллекции
- неблокирующие хеш-таблицы: ConcurrentSkipListMap, ConcurrentHashMap и ConcurrentSkipListSet (в основе реализации лежит хеш-таблица)
- неблокирующие очереди: ConcurrentLinkedQueue и ConcurrentLinkedDeque
- широкий набор различных блокирующих очередей

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
Java 26 вышла. В Java 27 уже планируются обновления безопасности.
JEP 527 добавляет постквантовый гибридный обмен ключами для TLS 1.3 в javax.net.ssl, объединяя ML-KEM с классическим ECDHE.
Конфигурации JSSE по умолчанию получают это обновление автоматически.
Выбор пользовательских групп остаётся простым 👇
3
Я создал шаблонный репозиторий для Claude Code под приложение на Spring Boot — с инструкциями, скиллами и сабагентами 💡

Цель — упростить создание приложения, которое:

- подключается к базе данных
- деплоится в Kubernetes
- запускает тесты с использованием Testcontainers
- и покрывает другие типовые сценарии разработки

https://github.com/piomin/claude-ai-spring-boot

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔41
JavaClaw — версия OpenClaw для Java, созданная на базе Spring Boot, Spring AI и JobRunr: https://javaclaw.io

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: Лучше использовать глобальные фильтры/интерсепторы только для действительно сквозных (cross-cutting) задач и избегать бизнес-логики. Они выполняются для каждого входящего HTTP-запроса.

Некоторые хорошие кейсы использования сквозной функциональности (cross-cutting concerns), реализуемой через фильтры и интерсепторы:

Фильтры (раньше, чем Spring MVC):

- Обработка CORS
- Кодировка (CharacterEncodingFilter)

Интерсепторы (Spring MVC):

- Проверки аутентификации/авторизации
- Замер времени выполнения запроса / метрики
- Обработка локали
- Добавление общих заголовков

Плохой пример:

@Component
public class SubscriptionInterceptor implements HandlerInterceptor {

@Autowired
private UserService userService;

@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {

String userId = request.getHeader("X-USER-ID");

// Бизнес-логика + обращение к БД внутри интерсептора
User user = userService.findById(userId);

if (user.getSubscription().isExpired()) {
response.setStatus(403);
response.getWriter().write("Subscription expired");
return false;
}

return true;
}
}


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Тебе больше не нужен Lombok

Records заменяют Data, Value, Getter, Setter, ToString, EqualsAndHashCode. var заменяет val. try-with-resources заменяет Cleanup. Твоя IDE справляется с Builder.

Лучшая зависимость — та, которая тебе не нужна.

Java догнала. Пора обновить подход.

https://loiane.com/2026/03/you-dont-need-lombok-anymore/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5💊5🤔2
Spring Boot: избегай подключения полного spring-boot-starter-web, если тебе нужен только Spring MVC, потому что этот стартер подтягивает дополнительные компоненты, например встроенный сервер, которые тебе могут быть не нужны.

Instead of importing the full web starter:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

Just set the MVC dependency:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Топ-7 навыков, которые сейчас нужны Java-разработчику, чтобы устроиться на работу:

1. Core Java (8–22)
Streams, records, virtual threads, collections, OOP

2. Spring Boot
REST API, валидация, profiles, AOP, actuator, управление конфигурацией, devtools, кастомные стартеры, обработка ошибок

3. Микросервисы
Feign / WebClient, версионирование API, service discovery, config server, circuit breakers, retries, distributed tracing, API Gateway, SAGA, CQRS

4. Spring Security
JWT, OAuth2, ролевая авторизация

5. Hibernate / JPA
Маппинги, lazy/eager загрузка, JPQL, оптимизация производительности

6. DSA (алгоритмы и структуры данных)
Массивы, деревья, графы, динамическое программирование, хеширование

7. Конкурентность
Thread pools, locks, CompletableFuture, Loom

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥5
Spring Boot: не подключайте полный spring-boot-starter-web, если вам нужен только Spring MVC — этот стартер тянет лишние компоненты, например встроенный сервер, который может быть вам не нужен.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
💊91
Агентам Spring AI нужно уметь искать в интернете, но официального Java SDK для Browserbase нет.

Поэтому Dan Vega сделал свой.

Browserbase предоставляет агентам настоящий браузер для управления. Их новый Search API позволяет агентам находить, куда идти, ещё до запуска полноценной браузерной сессии. Search, fetch, browse. Повышайте уровень только когда это действительно нужно.

Добавьте одну зависимость, укажите свой API-ключ и подключите это как инструмент в Spring AI.

Пример проекта готов и скоро будет доступен.

100% опенсорс

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Java 26 стал умнее, особенно в части pattern matching.

Теперь работа с выражениями сопоставления с образцом стала значительно стабильнее и предсказуемее.

Что улучшилось:

- Более надёжный вывод типов
компилятор лучше понимает типы в сложных условиях

- Меньше ошибок на краевых случаях
меньше неожиданных падений и предупреждений

- Консистентное поведение
одинаковая логика в if и switch

Что это означает на практике:

Раньше, когда условия становились сложнее,
компилятор мог «теряться»

Теперь:

- анализ потока выполнения стал умнее
- переменные из pattern matching корректно распознаются
- код становится чище и безопаснее

Java всё больше приближается к современным языкам
с удобным и предсказуемым контролем типов

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Релиз IntelliJ IDEA 2026.1 уже здесь! Узнай о всех последних обновлениях — они подробно разобраны и продемонстрированы на странице What’s New.

Зацени 👇

https://www.jetbrains.com/idea/whatsnew/

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3💊2👍1
Вопросы для собеседования по микросервисам с ответами

1. Каковы ключевые характеристики микросервисов?

Ответ:

> Децентрализованное управление данными
> Сервисы развёртываются независимо друг от друга
> Проектирование на основе предметной области (DDD)
> Лёгкое взаимодействие (например, REST, gRPC)
> Изоляция сбоев
> Удобны для непрерывной доставки

2. Чем микросервисы отличаются от монолитной архитектуры?

Ответ:

> Монолит: единая кодовая база, жёстко связанные компоненты, сложно масштабировать.
> Микросервисы: множество сервисов, слабо связанные, развёртываются и масштабируются независимо.

3. Каковы основные преимущества использования микросервисов?

Ответ:

> Лучшая масштабируемость
> Более быстрое выведение продукта на рынок
> Независимые развёртывания
> Лучшая устойчивость к сбоям
> Возможность использовать разные языки и технологии

4. Какие есть сложности при работе с микросервисами?

Ответ:

> Сложность управления распределёнными системами
> Задержки в сети и накладные расходы на коммуникацию
> Согласованность данных
> Отладка и мониторинг
> Развёртывание и оркестрация

5. Как микросервисы обмениваются данными?

Ответ:

> Синхронно: через REST, gRPC
> Асинхронно: через очереди сообщений (RabbitMQ, Kafka)

6. Что такое service discovery в микросервисах?

Ответ:

> Это механизм, с помощью которого сервисы находят друг друга в сети.
> Применяются инструменты вроде Consul, Eureka, DNS Kubernetes.

7. Что такое API Gateway и зачем он нужен?

Ответ:

> API Gateway — это единая точка входа в систему. Он отвечает за маршрутизацию, безопасность, ограничение частоты запросов и агрегацию ответов от разных сервисов.
> Примеры: Kong, Zuul, NGINX, Spring Cloud Gateway.

8. Как в микросервисах управляют данными?

Ответ:

> Каждый сервис использует свою отдельную базу данных (подход “одна база на сервис”).
> Для согласованности применяются событийная архитектура или паттерн саги.

9. Что такое паттерн Saga?

Ответ:

> Saga — это последовательность локальных транзакций.
> Если одна из них завершается с ошибкой, запускаются компенсирующие действия для отката изменений.

10. Какие инструменты используют для разработки микросервисов?

Ответ:

> Языки: Java (Spring Boot), Node.js, Go, Python
> Сборка: Maven, Gradle
> Контейнеризация: Docker
> Оркестрация: Kubernetes


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
Интересное Java API в разработке: JEP 531, ленивые константы.
Идея проста: отложить инициализацию до первого использования, затем сохранять значение неизменяемым и избежать типичного самописного boilerplate-кода для ленивых полей. Небольшой пример 👇

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Spring Boot: можно включить /actuator/beans, чтобы отлаживать отсутствующие бины.

Обратившись к этому endpoint, вы увидите информацию, например:

- Название бина
- Тип бина
- Scope бина
- Зависимости бина

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🤭🤭🤭

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔17👍3