Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
Больше📈 Аналитический обзор Telegram-канала Java Portal | Программирование
Канал Java Portal | Программирование (@java_iibrary) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 115 подписчиков, занимая 10 397 место в категории Технологии и приложения и 54 492 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 115 подписчиков.
Согласно последним данным от 08 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -138, а за последние 24 часа — -5, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 11.21%. В первые 24 часа после публикации контент обычно набирает 6.34% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 360 просмотров. В течение первых суток публикация набирает 769 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как boot, string, void, архитектура, resttemplate.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
Благодаря высокой частоте обновлений (последние данные получены 09 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
@ConditionalOnProperty`?
- Включение или отключение бинов и конфигураций на основе значений в `application.properties` без изменения кода
- Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику
🔸Включить бин, если свойство существует:
Используется аннотация @ConditionalOnProperty(name="my.prop").
Бин будет создан, если свойство my.prop существует и его значение не "false".
🔸Включить бин, если свойство равно определённому значению:
Добавляется параметр havingValue="yes".
Бин будет создан только в том случае, если значение свойства строго равно "yes".
🔸Включить бин, если свойство отсутствует:
Используется параметр matchIfMissing=true.
Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.
🔸Переключение реализаций в зависимости от значения свойства:
Определяются несколько бинов с разными значениями havingValue.
Будет создан только тот бин, значение которого соответствует текущему значению свойства.
👉 Java Portaljava -jar myapp-fat.jar
Зачем использовать Fat JAR?
🔹Портируемость — удобно распространять и развёртывать
🔹Простота — не нужно возиться с classpath и отлавливать ClassNotFoundException
🔹Отлично подходит для микросервисов и Docker — один артефакт, одна команда запуска
Как собрать Fat JAR
👉 С помощью Maven (maven-assembly-plugin)
Добавьте в pom.xml:
<!-- пример конфигурации (на 2 фото) -->Соберите:
mvn clean package
Готовый JAR будет лежать в:
target/myapp-jar-with-dependencies.jar👉 С помощью Maven (maven-shade-plugin) Если нужен контроль над пересборкой пакетов и теневыми зависимостями — используйте Shade:
<!-- пример конфигурации на 3 фото -->Сборка аналогично — итоговый файл будет в:
target/myapp-shaded.jar👉 С помощью Gradle В
build.gradle добавьте:
// пример конфигурации на 4 фотоЗапуск сборки:
./gradlew fatJar
Пример: Минимальное Java-приложение
// 5 фото
С учётом вышеописанных конфигураций Maven или Gradle, все зависимости будут включены в .jar — достаточно java -jar.
Некоторые команды не используют fat JAR для крупных приложений, чтобы:
> Ускорить сборку
> Снизить использование диска
> Упростить обновление отдельных зависимостей без пересборки всего артефакта
Fat JAR упаковывает всё необходимое для простого и портируемого деплоя Java-приложений
Собирается через Maven (плагины assembly или shade) или Gradle
Альтернативы: thin JAR, WAR/EAR, Spring Boot plugin, контейнеры
Выбирайте fat JAR, если важны простота и переносимость, особенно в микросервисной архитектуре и для деплоя в облаке.
👉 Java PortalТеперь, когда кто-то из друзей спрашивает, какой лаунчер посоветуешь без вирусов — просто кидаю им свой :PСсылку на скачивание и исходники (если интересно, как такой написать): 🔹Скачать: https://github.com/sammwyy/MiniLaunch/releases (Жми на ссылку с именем
minilaunch.jar)
🔹Исходный код лаунчера на Java:
https://github.com/sammwyy/MiniLaunch
После скачивания просто дважды кликни по .jar, и всё готово
👉 Java Portaladd, remove, contains выполняются за константное время O(1), при условии качественной хеш-функции.
Даже если дважды добавить строку "BMW" — в сете она появится только один раз.Часто используемые операции: —
add(E e) — добавляет элемент, если его ещё нет
— remove(Object o) — удаляет элемент, если он есть
— contains(Object o) — проверяет наличие элемента
— size() — возвращает количество элементов
— clear() — очищает сет
Как работает внутри
HashSet использует внутренний HashMap, где элементы сета хранятся как ключи, а значением выступает фиктивный объект. Это позволяет обеспечить уникальность и быстрый доступ.
При выводе содержимого HashSet — элементы отображаются в произвольном порядке.
👉 Java Portalsleep() — относится к классу Thread
🔸wait() — относится к классу Object
Назначение
🔸sleep() используется для приостановки потока на фиксированное время
🔸wait() используется для взаимодействия между потоками (межпоточная сигнализация)
Блокировка
🔸sleep() не освобождает монитор (lock остаётся удержанным)
🔸wait() освобождает монитор (lock)
Когда использовать
🔸sleep() — когда нужно просто отложить выполнение потока
🔸wait() — когда один поток должен ожидать сигнал от другого потока
Нужен ли synchronized-блок?
🔸sleep() — нет
🔸wait() — да, должен вызываться внутри synchronized-блока или метода
Может быть прерван?
🔸sleep() — да, выбрасывает InterruptedException
🔸wait() — да, выбрасывает InterruptedException
Когда возобновляется
🔸sleep() — после указанного времени
🔸wait() — после вызова notify()/notifyAll() или при прерывании
Статический или экземплярный метод?
🔸sleep() — статический метод, вызывается как Thread.sleep()
🔸wait() — метод экземпляра, вызывается на объекте: obj.wait()
👉 Java Portalenum для выбора поведения на лету (что считается классическим подходом), можно использовать интерфейсы для инкапсуляции различных конфигураций.
🔸Инкапсулируется поведение, а не просто значения.
🔸Позволяет менять поведение динамически в рантайме, подставляя разные реализации.
2) Интерфейсы для method chaining с условным выполнением
Интерфейсы могут быть использованы для построения цепочек вызовов методов с возможностью условного выполнения. Это позволяет динамически пропускать определённые вызовы.
Используется при создании fluent API, где некоторые методы должны выполняться только при выполнении условий.
Это:
🔸Делает код более читаемым и выразительным.
🔸Избегает ненужных вызовов, если условие не выполнено.
Традиционный аналог:
if (conditionMet) {
obj.doSomething();
obj.doAnotherThing();
}
3) Маркировочные (tagging/marker) интерфейсы с проверкой по типу
Пустые интерфейсы можно использовать для "тегирования" классов и принятия решений во время выполнения или компиляции.
Это позволяет выполнять определённые действия, если класс реализует конкретный marker-интерфейс.
🔸Чистое разделение ролей без добавления логики
🔸Хорошо сочетается с reflection и generics
4) Наследование интерфейсов для реализации поведения по умолчанию
Интерфейсы с default-методами можно использовать для композиции переиспользуемой логики.
Применяется, когда нужно разделить общее поведение между разными классами, не прибегая к наследованию от общего базового класса.
👉 Java PortalSupplier<Stream<T>>
Когда возникает необходимость повторно использовать потоковую обработку, можно воспользоваться Supplier. В обычных случаях поток (Stream) нельзя использовать повторно после его обработки.
👉 Java Portal
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
