Google увеличил функционал Agent Development Kit для Java, внедрив поддержку LangChain4j. Теперь Java-инженеры способны подключать модели OpenAI, Anthropic, Mistral и прочие, разрабатывая многоагентные решения с более гибким контролем и усовершенствованной логикой.
Подробности: тык
👉 Java Portal
Подробности: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
InfoQ
Google's Agent Development Kit for Java Adds Integration with LangChain4j
The latest release of the Agent Development Kit for Java, version 0.2.0, marks a significant expansion of its capabilities through the integration with the LangChain4j LLM framework, which opens it up to all the large language models supported by the framework.
❤5👍2
Вопрос для собеседования Java/Backend:
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
👉 Java Portal
Как современные приложения оставляют вас залогиненным без хранения сессии на сервере?🫖
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Держите репозиторий на GitHub где собрана отличная подборка бесплатных материалов по программированию.
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.😎
👉 Java Portal
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3
Вопрос из Java-собеседования (сценарный):
Ты используешь
Тимлид просит тебя отрефакторить это, так как field injection часто считается плохой практикой.
Подумай о минусах field injection:
→ Visibility: скрывает обязательные зависимости класса.
→ Testability: усложняет unit-тестирование, часто требует рефлексии.
→ Runtime Issues: может привести к NullPointerException, если зависимость отсутствует.
→ Design: поощряет классы с чрезмерной ответственностью (нарушение SRP).
Какой рекомендуемый вариант?
→ Constructor Injection.
Зависимости явно передаются при создании объекта, делая их обязательными.
Почему Constructor Injection лучше?
→ Explicit: явно показывает, что нужно классу для работы.
→ Guaranteed: приложение не поднимется, если зависимости нет.
→ Immutable: final-поля безопаснее и дружелюбнее к многопоточности.
→ Testable: легко замокать и прокинуть зависимости в тестах.
Это приводит к более надежному и поддерживаемому коду.
👉 Java Portal
Ты используешь
@Autowired
для field injection в Spring-проекте. Это просто и работает.@Component
public class UserService {
@Autowired
private UserRepository userRepository;
}
Тимлид просит тебя отрефакторить это, так как field injection часто считается плохой практикой.
Подумай о минусах field injection:
→ Visibility: скрывает обязательные зависимости класса.
→ Testability: усложняет unit-тестирование, часто требует рефлексии.
→ Runtime Issues: может привести к NullPointerException, если зависимость отсутствует.
→ Design: поощряет классы с чрезмерной ответственностью (нарушение SRP).
Какой рекомендуемый вариант?
→ Constructor Injection.
Зависимости явно передаются при создании объекта, делая их обязательными.
@Component
public class UserService {
private final UserRepository userRepo; // final!
public UserService(UserRepository userRepo) {
this.userRepo = userRepo;
}
}
Почему Constructor Injection лучше?
→ Explicit: явно показывает, что нужно классу для работы.
→ Guaranteed: приложение не поднимется, если зависимости нет.
→ Immutable: final-поля безопаснее и дружелюбнее к многопоточности.
→ Testable: легко замокать и прокинуть зависимости в тестах.
Это приводит к более надежному и поддерживаемому коду.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3💊1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17❤9
Топ-53 задач на Java для подготовки к собеседованиям
В статье собраны самые популярные задания по Java, полезные курсы по DevOps, Linux и паттернам проектирования, а также список вопросов для подготовки к техническим интервью.
👉 Java Portal
В статье собраны самые популярные задания по Java, полезные курсы по DevOps, Linux и паттернам проектирования, а также список вопросов для подготовки к техническим интервью.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3
Подготовка к собеседованию по Java Microservices
Без понимания ключевых концепций микросервисов сложно успешно пройти собеседование на backend-разработчика. Даже если вы не реализовывали их на практике, базовое знание даст серьёзное преимущество. Сохрани себе этот список как краткий гид или план подготовки.
👉 Java Portal
Без понимания ключевых концепций микросервисов сложно успешно пройти собеседование на backend-разработчика. Даже если вы не реализовывали их на практике, базовое знание даст серьёзное преимущество. Сохрани себе этот список как краткий гид или план подготовки.
Монолит vs Микросервисы → масштабирование отдельных функций независимо
Проектирование микросервиса → изоляция управления профилем пользователя
Паттерн API Gateway → единая точка входа для клиентов
Взаимодействие сервисов (REST vs Messaging) → асинхронная очередь обработки заказов
Паттерн Circuit Breaker → предотвращение каскадных сбоев сервисов
Spring Cloud Load Balancer → распределение трафика между инстансами
Spring Cloud Config → управление внешними конфигурационными параметрами
Service discovery (Eureka/Consul) → автоматический поиск сервисов друг другом
Feign Client vs WebClient → блокирующие и неблокирующие вызовы
Event-driven архитектура и Kafka → обработка потоков данных в реальном времени
Отдельная база для сервиса vs общая база → разделение уровня хранения данных
Паттерн Saga → согласованность распределённых транзакций
Аутентификация на основе JWT и OAuth2 → безопасные stateless API
Безопасность в API Gateway → централизованная аутентификация и авторизация запросов
Observability (логи, трассировка, метрики) → отладка проблем в продакшене
Prometheus и Grafana → мониторинг состояния системы и дашборды
Стратегии деплоя в Kubernetes → авто-масштабирование и самовосстановление приложений
Blue-Green и Canary-деплой → нулевой даунтайм и минимальные риски при релизах
Когда использовать WebFlux → высоконагруженные и низколатентные API
CQRS и Event Sourcing → разделение моделей чтения и записи при сложных сценариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Когда: 23–26 октября
Формат: онлайн + финал на площадке
Участвуй, если ты:
Выбери свой кейс:
✴️ Цифровой дресс-код: фон, который выделяет вас. Создай локальный ML-модуль сегментации видео и генератор персонализированных фонов.✴️ CodeMetrics: метрики, которые помогают расти. Разработай систему автооценки эффективности команд через анализ Git-метрик.
Почему стоит участвовать:
Регистрация открыта!
erid: 2Vtzqwmd32u
Please open Telegram to view this post
VIEW IN TELEGRAM
Как тестировать Spring Boot приложения в Java?
Статья объясняет, как использовать
👉 Java Portal
Статья объясняет, как использовать
@SpringBootTest
, разницу между юнит- и интеграционными тестами, а также даёт советы по ускорению тестов. Полезно для разработчиков любого уровня, работающих со Spring Boot и микросервисами.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Многие начинают с Java и используют
Кажется, что это «упрощает код», например при вызове методов, но на самом деле
В Java
- Статическое поле существует в памяти только один раз и шарится между всеми объектами этого класса.
- Статический метод можно вызвать без создания экземпляра.
- Жизненный цикл статических сущностей начинается при загрузке класса в память и заканчивается только при завершении JVM.
Для чего используется?🤔
- Для объявления констант (
- Для утилитарных методов (например,
Где начинаются проблемы?
- Когда используешь
- Когда превращаешь его в «глобальную зависимость», и код становится тяжело тестировать, плюс возникает сильная связность.
👉 Java Portal
static
повсюду. Кажется, что это «упрощает код», например при вызове методов, но на самом деле
static
— это довольно точное понятие, которое стоит хорошо понимать. В Java
static
означает, что что-то принадлежит классу, а не экземпляру. То есть: - Статическое поле существует в памяти только один раз и шарится между всеми объектами этого класса.
- Статический метод можно вызвать без создания экземпляра.
- Жизненный цикл статических сущностей начинается при загрузке класса в память и заканчивается только при завершении JVM.
Для чего используется?
- Для объявления констант (
public static final
), которые никогда не меняются. - Для утилитарных методов (например,
Collections.sort()
), которые не зависят от внутреннего состояния объекта. Где начинаются проблемы?
- Когда используешь
static
для переменных, которые на самом деле должны быть частью состояния объекта. - Когда превращаешь его в «глобальную зависимость», и код становится тяжело тестировать, плюс возникает сильная связность.
static
— это не шорткат. Это способ сказать: «это уникально и шарится по всему приложению».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Бэкенд на пределе возможностей: миллионы пользователей, высокие нагрузки, отказоустойчивость.
В канале Backend VK Hub эксперты рассказывают, как устроены системы под капотом, делятся экспертизой и обсуждают инженерные решения.
Подписывайтесь, чтобы узнать, как строятся сервисы, которые должны работать всегда и у всех.
В канале Backend VK Hub эксперты рассказывают, как устроены системы под капотом, делятся экспертизой и обсуждают инженерные решения.
Подписывайтесь, чтобы узнать, как строятся сервисы, которые должны работать всегда и у всех.
🔥10❤5👍5😁1🤯1
Java Streams Cheat Sheet
Пример кода со всеми базовыми приёмами работы со Stream API:
👉 Java Portal
Пример кода со всеми базовыми приёмами работы со Stream API:
преобразование коллекций
flatMap, mapMulti, peek
сортировка, min/max, distinct
проверки (allMatch, anyMatch)
объединение (reduce, joining)
группировка и разбиение (groupingBy, partitioningBy)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7