ru
Feedback
Java Portal | Программирование

Java Portal | Программирование

Открыть в Telegram

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Больше

📈 Аналитический обзор Telegram-канала Java Portal | Программирование

Канал Java Portal | Программирование (@java_iibrary) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 11 775 подписчиков, занимая 10 276 место в категории Технологии и приложения и 54 524 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 11 775 подписчиков.

Согласно последним данным от 27 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -153, а за последние 24 часа — -1, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 10.13%. В первые 24 часа после публикации контент обычно набирает 5.77% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 193 просмотров. В течение первых суток публикация набирает 680 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как boot, string, void, архитектура, resttemplate.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Благодаря высокой частоте обновлений (последние данные получены 28 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

11 775
Подписчики
-124 часа
-377 дней
-15330 день
Архив постов
java.evolved это подборка, где каждый старый паттерн из Java показан рядом с его современным заменителем, прямо бок о бок. 👍👍👍 👉 Java Portal

Spring Boot: используй @SpringBootApplication(exclude = …), чтобы отключить конкретные классы автоконфигурации. ✅ Одна из воз
Spring Boot: используй @SpringBootApplication(exclude = …), чтобы отключить конкретные классы автоконфигурации. ✅ Одна из возможных причин: кастомная конфигурация конфликтует с дефолтной. 👉 Java Portal

Какой SQL-запрос будет выполнен при вызове метода findByEmail()? 1. SELECT * FROM users WHERE email LIKE ? 2. SELECT id, name
Какой SQL-запрос будет выполнен при вызове метода findByEmail()? 1. SELECT * FROM users WHERE email LIKE ? 2. SELECT id, name, email FROM users WHERE email LIKE ? 3. SELECT * FROM users WHERE email = ? LIMIT 1 4. SELECT * FROM users WHERE email = ? 5. SELECT * FROM users WHERE email = email 👉 Java Portal

Java tip : старайся не шарить данные между потоками. ✅Используй иммутабельные объекты ✅Либо пусть потоки общаются через сообщ
Java tip : старайся не шарить данные между потоками. ✅Используй иммутабельные объекты ✅Либо пусть потоки общаются через сообщения, не трогая общий state напрямую и не мутируя shared-состояние
// С иммутабельными объектами:

record Book(String title, int price) {} // Иммутабельный

public class BookJob implements Runnable {
    private final Book book;
    .... // конструктор

    @Override
    public void run() {
        System.out.println(book.title() + " " + book.price());
    }
}

// Обмен сообщениями:

...
new Thread(() -> {
    try {
        queue.put("mess1");
    } catch (InterruptedException e) {}
}).start();

...
new Thread(() -> {
    try {
        String mess = queue.take();
    } catch (InterruptedException e) {}
}).start();
👉 Java Portal

Вопрос для собеседования по Spring Boot: Какой будет результат запуска, если активный профиль не указан? ❓ Spring по умолчани
Вопрос для собеседования по Spring Boot: Какой будет результат запуска, если активный профиль не указан? ❓ Spring по умолчанию выберет бин DevNotificationService ❓ Spring выберет первый бин в алфавитном порядке ❓ Приложение упадет с NoSuchBeanDefinitionException ❓ Бины не будут созданы, но приложение запустится ❓ Будут созданы оба бина - NoUniqueBeanDefinitionException 👉 Java Portal

Spring Boot: можно использовать @Retryable, чтобы переживать нестабильность внешних сервисов. @Service public class ExtServic
Spring Boot: можно использовать @Retryable, чтобы переживать нестабильность внешних сервисов.
@Service
public class ExtService {

    @Retryable(
        value = { HttpServerErrorException.class, ResourceAccessException.class },
        maxAttempts = 3,
        backoff = @Backoff(delay = 2000, multiplier = 2)
    )
    public ExtServiceResponse process(ExtServiceRequest request) {
        // Call external payment gateway
        return restTemplate.postForObject("https://ext-gateway/api/service", request,
            ExtServiceResponse.class);
    }

    @Recover
    public ExtServiceResponse recover(Exception e, ExtServiceRequest request) {
        // Fallback logic after retries are exhausted
        log.error("Failed after retries: {}", e.getMessage());
        return new ExtServiceResponse("FAILED");
    }
}
Что это делает: ▪️Делает 3 ретрая, если вылетают указанные исключения. ▪️Стартует с задержки 2 секунды и удваивает ее на каждой попытке (экспоненциальный backoff). ▪️Если все попытки провалились, вызывает recover(). 👉 Java Portal

Как прогревать кэши в Spring Boot? И вообще, как делать что-то на старте приложения? Обычно такие операции делают в @PostConstruct или ловят событие ApplicationReadyEvent. Но у этих вариантов есть заметный минус. Если “прогрев” лежит в @PostConstruct, как его отключать в тестах? Можно завести флаг, сделать наследника и подменять бин в тестовой конфигурации, но это не всегда помогает и часто выглядит как костыль. Покажу более элегантный способ “прогрева кэшей”. В какой-то момент точно пригодится. Смотри: SpringApplication.run(...) возвращает полностью готовый контекст. Из него можно получить нужный компонент и вызвать метод “прогрева”. Код выглядит так:
@SpringBootApplication
public class MainApplication {
  public static void main(String[] args) {
    ApplicationContext ctx = SpringApplication.run(MainApplication.class, args);
    AccountService accService = ctx.getBean(AccountService.class);
    accService.loadDictionary();
  }
}
В чём плюс? В интеграционных тестах с @SpringBootTest метод main не запускается. Значит, код внутри не выполняется. Никаких костылей вокруг @PostConstruct, всё чисто и аккуратно. Когда всё-таки нужно, чтобы “прогрев” выполнялся и в тестах, добавь параметр “использовать main метод”:
@SpringBootTest(useMainMethod = SpringBootTest.UseMainMethod.ALWAYS)
И всё. Если код должен выполняться после старта, но мешает тестам, клади его в main. Очень полезный приём. 👉 Java Portal

Java-совет: чтобы не ловить оверхед на boxing/unboxing, используй стримы примитивов (IntStream/LongStream/DoubleStream) вмест
Java-совет: чтобы не ловить оверхед на boxing/unboxing, используй стримы примитивов (IntStream/LongStream/DoubleStream) вместо Stream<Integer>/Stream<Long>/Stream<Double>. ❌Создаём объекты Integer для каждого значения:
Stream<Integer> boxed = Stream.of(1, 2, 3, 4, 5);
int sumBoxed = boxed.reduce(0, Integer::sum);
✅Работаем напрямую с int:
int sumPrimitive = IntStream.of(1, 2, 3, 4, 5).sum();
✅Другие примитивные стримы: LongStream, DoubleStream 👉 Java Portal

...Script 👉 Java Portal
...Script 👉 Java Portal

Большинство разработчиков в Spring знают, как доставать query-параметры и path variables. Но часто забывают, что HTTP-хедеры
Большинство разработчиков в Spring знают, как доставать query-параметры и path variables. Но часто забывают, что HTTP-хедеры можно вытаскивать так же просто. В Spring для этого есть аккуратный @RequestHeader. Можно в одну строку получить User-Agent, Authorization или любой кастомный хедер. И не нужно лезть в HttpServletRequest. Пример: ▪️Добавляешь в метод контроллера @RequestHeader("User-Agent") String userAgent ▪️Spring сам подхватывает значение из заголовка ▪️Ты получаешь его сразу параметром метода Нужно сделать опциональным? Просто добавь required = false. Нужен дефолт? ▪️Используй defaultValue = "unknown". ▪️Очень полезно для логирования, аналитики, A/B тестов или фичефлагов, завязанных на заголовки. ▪️Выручает при работе с API-клиентами, которые шлют кастомные заголовки. ▪️Чище, короче и легче тестируется. ▪️Чем меньше зависимостей от servlet API, тем лучше. 👉 Java Portal

Spring Boot: отдавай предпочтение статическим utility-классам вместо Spring-бинов только если они не хранят состояние, у них
Spring Boot: отдавай предпочтение статическим utility-классам вместо Spring-бинов только если они не хранят состояние, у них нет зависимостей и их не нужно мокать или оборачивать в AOP.
public class CacheUtils {
    private static Map<String, String> cache = new HashMap<>();

    ...
}

// Кэш как выше разделяется между всеми потоками и может случайно изменяться

@Component
@Scope("request")
public class CacheService {
    private Map<String, String> cache = new HashMap<>();

    ...
}

// Если оформить это как бин, можно задать ему конкретный scope.

// Spring лучше управляет объектами с состоянием.
👉 Java Portal

Реальный event-driven проект на Core Java 21, Apache Kafka (KRaft mode) и PostgreSQL (в Docker). Проект показывает, как современные распределенные системы обрабатывают заказы асинхронно через Kafka, без блокировок и ожидания между сервисами. https://github.com/FlexiDriod/kafka-order-processing-system 👉 Java Portal

Spring Boot: можно реализовать оптимистическую блокировку через аннотацию @Version. ✅Идеально подходит, когда: - чтения проис
Spring Boot: можно реализовать оптимистическую блокировку через аннотацию @Version. ✅Идеально подходит, когда: - чтения происходят часто - записи сравнительно редкие - конфликты случаются нечасто ❌Не лучший вариант, когда: - конфликты происходят часто - нужна строгая сериализация
public class Account {

    @Id
    private Long id;

    private BigDecimal balance;

    @Version
    private Long version;
}
Когда читаем, Entity загружается с текущей версией. Допустим, version = 2. Когда делаем update, учитывается запись с version = 2. Если за это время другая транзакция уже успела её обновить, version уже не 2, апдейт не затронет ни одной строки, и Hibernate кинет OptimisticLockException. То есть конфликт ловится без блокировки строки. 👉 Java Portal

Совет: в REST-сервисах ты часто получаешь только ID сущностей. И не всегда нужно тащить их из БД. Чтобы проставить связь (по
Совет: в REST-сервисах ты часто получаешь только ID сущностей. И не всегда нужно тащить их из БД. Чтобы проставить связь (по сути, foreign key в базе), можно “создать” ссылку на сущность через getReferenceById(id) без SELECT и использовать её, чтобы задать relation.
@Service
public SomeService {

    @Autowired
    private ProductRepository productRepository;

    @Autowired
    private CategoryRepository featureRepository;

    public void setCategory(long productId, long categoryId) {
        Product product = productRepository.findById(productId).orElseThrow();  // executes SELECT
        Category category = categoryRepository.getReferenceById(categoryId);    // does not execute a SELECT
        product.setCategory(category);
        productRepository.save(product);
    }

}
👉 Java Portal

🔴 Завтра тестовое собеседование с Java-разработчиком 11 февраля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собес
🔴 Завтра тестовое собеседование с Java-разработчиком 11 февраля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Сергею Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.

Тонкие Docker-образы для Java: в этой статье вы узнаете, как собирать тонкие Docker-образы для ваших Java-приложений с использованием Alpine Linux и инструмента jlink. Мы будем опираться на свежие базовые образы Java 21 от Eclipse Temurin и BellSoft Liberica. Также мы сравним этих провайдеров с Alpaquita Linux, который тоже поставляется BellSoft. В сравнение также войдет оценка безопасности на основе количества уязвимостей. В качестве примера мы возьмем простое Spring Boot-приложение, которое поднимает несколько REST-эндпоинтов. Если вам интересна Java в контексте контейнеризации, на моем блоге вы можете найти несколько похожих статей. Например, можно почитать, как ускорить старт Java на Kubernetes с помощью CRaC в том посте. Еще есть статья, где сравниваются разные провайдеры JDK, которые используются для запуска Java-приложений в Paketo Buildpacks. 👉 Java Portal

Java-совет: используй ThreadLocal.withInitial(...), чтобы каждому потоку задавать своё безопасное значение по умолчанию. Знач
Java-совет: используй ThreadLocal.withInitial(...), чтобы каждому потоку задавать своё безопасное значение по умолчанию. Значение создаётся лениво (только при первом обращении). 👉 Java Portal

бэкенд-разработчики после написания 4 строк CSS. 👉 Java Portal
бэкенд-разработчики после написания 4 строк CSS. 👉 Java Portal

CodingBat Java: это сайт с интерактивными задачами по Java 👉 Java Portal
CodingBat Java: это сайт с интерактивными задачами по Java 👉 Java Portal

Совет на 2026 год — освойте ВАЙБ-КОДИНГ. ИИ уже пишет код, чинит баги, генерит тесты и документацию быстрее и качественнее лю
Совет на 2026 год — освойте ВАЙБ-КОДИНГ. ИИ уже пишет код, чинит баги, генерит тесты и документацию быстрее и качественнее любой команды айтишников И те, кто научится вайбкодить сейчас, будут зарабатывать в разы больше тех, кто всё ещё делает всё вручную Разобраться в этом с нуля поможет канал Вайб-кодинг. Там простым языком разбирают, какие инструменты действительно стоит использовать, как собирать проекты от идеи до релиза и что сейчас актуально в вайбкодинге Подписывайтесь, нас уже 15 тысяч: @vibecoding_tg