Java
Самая актуальная информация по Java По всем вопросам- @haarrp @itchannels_telegram - 🔥лучшие каналы @pythonl - 🐍 @ai_machinelearning_big_data- ml @ArtificialIntelligencedl - AI @datascienceiot - ds @pythonlbooks 📚 РКН: clck.ru/3FmwKr #VRHSZ
نمایش بیشتر📈 تحلیل کانال تلگرام Java
کانال Java (@javatg) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 16 675 مشترک است و جایگاه 7 742 را در دسته فناوری و برنامهها و رتبه 39 402 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 16 675 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 25 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -66 و در ۲۴ ساعت گذشته برابر -9 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 14.52% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 6.09% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 2 422 بازدید دریافت میکند. در اولین روز معمولاً 1 015 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 11 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, void, api, kotlin, static تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Самая актуальная информация по Java
По всем вопросам- @haarrp
@itchannels_telegram - 🔥лучшие каналы
@pythonl - 🐍
@ai_machinelearning_big_data- ml
@ArtificialIntelligencedl - AI
@datascienceiot - ds
@pythonlbooks 📚
РКН: clck.ru/3FmwKr
#VR...”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 26 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
در حال بارگذاری دادهها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 26 اکتبر | +3 | |||
| 25 اکتبر | +2 | |||
| 24 اکتبر | +3 | |||
| 23 اکتبر | +8 | |||
| 22 اکتبر | +10 | |||
| 21 اکتبر | +4 | |||
| 20 اکتبر | +7 | |||
| 19 اکتبر | +9 | |||
| 18 اکتبر | +9 | |||
| 17 اکتبر | +12 | |||
| 16 اکتبر | +1 | |||
| 15 اکتبر | +3 | |||
| 14 اکتبر | +4 | |||
| 13 اکتبر | +3 | |||
| 12 اکتبر | +4 | |||
| 11 اکتبر | 0 | |||
| 10 اکتبر | +2 | |||
| 09 اکتبر | +4 | |||
| 08 اکتبر | +5 | |||
| 07 اکتبر | +3 | |||
| 06 اکتبر | +8 | |||
| 05 اکتبر | +8 | |||
| 04 اکتبر | +10 | |||
| 03 اکتبر | +4 | |||
| 02 اکتبر | +3 | |||
| 01 اکتبر | 0 |
application.properties:
spring.devtools.livereload.enabled=true
Удобно, если запускаете несколько приложений на одной машине: ненужные LiveReload-серверы больше не пытаются занять общий порт.
Учтите: начиная со Spring Boot 4.1, LiveReload объявлен устаревшим без замены.| 2 | Критическая уязвимость в Java: атака по сети без пароля и участия пользователя
Oracle опубликовала предупреждение CVE-2026-91403 с оценкой CVSS 9.1. Проблема находится в JSSE — компоненте Java, который обеспечивает защищённые соединения TLS.
По описанию Oracle, успешная атака может позволить читать, изменять и удалять данные, доступные уязвимому приложению. Для эксплуатации не нужны учётные данные, а сложность атаки оценена как низкая.
В списке затронутых версий:
- Java SE 8u511 / 8u511-perf, 11.0.33, 17.0.21, 21.0.13, 25.0.5 и 27.0.1.
- Oracle GraalVM for JDK 17.0.21 и 21.0.13.
- Oracle GraalVM Enterprise Edition 21.3.20.
Условия зависят от приложения: Oracle указывает на сценарии, где данные атакующего попадают в API уязвимого компонента, например через веб-сервис. Само наличие Java ещё не означает, что любой сервис можно атаковать.
Администраторам стоит проверить используемые сборки Java, включая runtime внутри контейнеров, и установить исправления по инструкции поставщика.
Предупреждение опубликовано 21 октября. Более ранние версии тоже могут быть затронуты — отсутствие в списке не подтверждает их безопасность.
https://www.oracle.com/security-alerts/alert-cve-2026-91403.html | 1 739 |
| 3 | Java-приложение ускорили примерно на 10% одним флагом JVM
Автор alf.io - сервиса продажи билетов на Spring Boot и PostgreSQL- решил проверить, стоит ли переходить на JDK 27 ради Compact Object Headers. В итоге протестировал и заголовки объектов, и сборщики мусора, и AOT-кеш.
Компактные заголовки уменьшают служебную часть объекта с 12 до 8 байт. Для приложения с множеством небольших объектов это означает меньше занятого места и работы для GC.
В контейнере с 2 CPU и 512 МБ памяти результаты оказались такими:
- Компактные заголовки снизили затраты CPU на GC и задержку p95 примерно на 10%.
- AOT-кеш Leyden сократил время запуска с 7,1 до 5,4 секунды относительно JDK 25 с рабочим AppCDS.
- ParallelGC снизил потребление CPU примерно на треть, но увеличил паузы сборки мусора.
За выигрышем от компактных заголовков необязательно идти на JDK 27. В JDK 25 их можно включить явно:
java -XX:+UseCompactObjectHeaders -jar app.jar
При этом потребление памяти контейнером не уменьшилось: при фиксированном размере кучи экономия проявилась в меньшей нагрузке на GC и более быстрых ответах.
Это результаты одного приложения — полезный повод провести свой замер.
https://ticketguy.dev/blogs/2026-10-17-jdk27-memory/ | 1 576 |
| 4 | بدون متن... | 1 710 |
| 5 | 💡 Все файлы из папки и вложенных каталогов в Java? Используйте `Files.walk()`.
Метод возвращает Stream<Path>, который позволяет рекурсивно обойти дерево каталогов и отфильтровать нужные файлы.
Например, найдём все .java в src:
try (Stream<Path> paths = Files.walk(Path.of("src"))) {
paths.filter(Files::isRegularFile)
.filter(p -> p.getFileName()
.toString()
.endsWith(".java"))
.forEach(System.out::println);
}
✅ Files::isRegularFile исключает каталоги.
✅ В .filter() можно задать любое условие.
✅ try-with-resources закрывает поток и освобождает ресурсы открытых каталогов.
Нюанс: Path.endsWith(".java") не проверяет расширение. Вызывайте endsWith() у строки с именем файла.
При вызове Files.walk() также нужно обработать IOException или объявить его в throws. | 1 686 |
| 6 | 🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют
По данным Минфин 32% граждан покинули своё место работы поскольку в среднем уже в первый месяц смогли заработать 250 000 рублей, а через 2-3 месяца с легкостью вышли на семизначные числа.
Самое смешное, что лишь 8% россиян что-то слышали об этой профессии хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют
Там объясняют, как имея телефон и доступ в интернет заработать свои первые $3000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!
Ссылка для входа — https://t.me/+n8X2lGzXalNkYmRi | 1 264 |
| 7 | Хватит склеивать строки через плюс: как в Java собирать сообщения читаемо
Когда в строку нужно подставить несколько значений, конкатенация быстро превращается в кашу из кавычек и пробелов, где легко потерять пробел или перепутать порядок.
String name = "Ada";
int score = 98;
// трудно читать, когда полей становится больше
String msg = "Player " + name + " scored " + score + " points";
// шаблон отдельно, значения отдельно
String msg2 = String.format("Player %s scored %d points", name, score);
// то же самое короче, Java 15+
String msg3 = "Player %s scored %d points".formatted(name, score);
// для локализации
String i18n = MessageFormat.format("Player {0} scored {1} points", name, score);
В String.format шаблон целиком виден сразу, а поля легко добавить или переставить, не трогая остальную строку. MessageFormat пригодится, когда тексты лежат в ResourceBundle и для разных языков порядок слов меняется: индексы {0} и {1} позволяют переставлять аргументы прямо в переводе.
У MessageFormat есть подвохи. Числа он форматирует по локали, поэтому 1234 превратится в "1,234". А одинарная кавычка там служебный символ, так что "don't" нужно писать как "don''t".
И про производительность: начиная с Java 9 конкатенация через + компилируется в invokedynamic и работает быстро, а String.format заметно медленнее, потому что каждый раз разбирает шаблон. В горячих циклах и логах на каждый запрос лучше оставить плюс или StringBuilder, а format использовать там, где важна читаемость. | 1 825 |
| 8 | 🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд. | 1 358 |
| 9 | 🍃 Не раскладывайте весь Spring-проект по папкам controller, service и repository.
В новом This Week in Spring Джош Лонг советует группировать код по функциональности, используя подход Spring Modulith. Например, orders, payments, users, внутри которых находятся относящиеся к ним слои.
Ещё в подборке:
• JobRunr 9: поиск упавшего шага и задач, вызывающих замедление, остановка выполнения без потери работы.
• Spring AI: разбор агентных паттернов и вызова инструментов от руководителя проекта Кристиана Цолова.
• Progen CLI: видео о генерации каркаса приложения.
• IntelliJ IDEA: обзор новых возможностей.
• A Bootiful Podcast: разговор с создателем Jenkins Косуке Кавагути.
https://spring.io/blog/2026/10/13/this-week-in-spring-october-13th-2026
#Java #SpringBoot | 1 777 |
| 10 | 💡 100% покрытия тестами ≠ код без багов
Coverage показывает, какие строки выполнились во время тестов. Но не доказывает, что результат правильный.
Можно пройти каждую строку и пропустить ошибку в логике, граничный случай или сбой при неожиданном вводе.
✅ Проверяйте результат, а не только выполнение.
✅ Тестируйте рискованные сценарии и обработку ошибок.
✅ Используйте покрытие, чтобы искать пробелы в тестах.
Тест, который ловит реальный баг, ценнее красивой цифры в отчёте. | 1 904 |
| 11 | 💡 Описывайте состояния через enum вместо строк
Статусы вроде "pending" и "finished" легко сломать опечаткой. Enum задаёт явный набор состояний и делает код понятнее.
✅ Именованные значения вместо «магических» строк.
✅ Правила допустимых переходов рядом с описанием состояний.
✅ В языках с проверкой полноты switch компилятор подскажет, если вы забыли обработать состояние.
Но enum сам по себе не запрещает неверные переходы. Правило «отменённый заказ нельзя отправить» нужно реализовать отдельно. | 2 179 |
| 12 | 💡 Код работает на обычных данных? Проверьте, что происходит на границах.
Баги часто прячутся там, где данных нет, их слишком мало или значение выходит за допустимый диапазон.
✅ `null`: метод корректно обрабатывает отсутствие значения или неожиданно падает с NullPointerException?
✅ Пустая коллекция: что вернёт код, если обрабатывать нечего?
✅ Один элемент: работает ли логика без второго элемента и соседних значений?
✅ Границы: проверьте минимум, максимум и значения сразу за ними. Например, для диапазона 1–100: 0, 1, 100, 101.
Такие тесты ещё и документируют контракт: какие входные данные допустимы, что возвращается и когда ожидается исключение.
Проверяйте не только «всё прошло успешно», но и «что будет, если…». | 2 209 |
| 13 | 💡 Java: почему месяц `5` может оказаться июнем
В Calendar месяцы нумеруются с нуля: январь 0, май 4, июнь 5. Простая ловушка, которая легко превращается в баг.
Начиная с Java 8, для нового кода выбирайте java.time:
LocalDate date = LocalDate.of(2026, 5, 31);
LocalDate deadline = date.plusDays(7);
String text = deadline.format(
DateTimeFormatter.ISO_LOCAL_DATE
);
// 2026-06-07
Здесь 5 означает май, а plusDays() возвращает новый объект, сохраняя исходную дату. Основные типы java.time неизменяемы и безопасны для совместного использования потоками.
Помните: `LocalDateTime` не содержит часового пояса. Для однозначного момента события используйте Instant или задавайте пояс явно. | 2 153 |
| 14 | 🚀 Spring Boot 4: переименовали property для exception translation
Было:
spring.dao.exceptiontranslation.enabled
Стало:
spring.persistence.exceptiontranslation.enabled
Функциональность та же: Spring продолжает переводить persistence-исключения в DataAccessException для @Repository.
Чтобы не пропустить такие изменения при миграции на Boot 4, подключите Spring Boot Properties Migrator — он покажет устаревшие и переименованные настройки.
Мелочь, которая легко ломает конфиг после обновления. | 2 552 |
| 15 | 💡 Предпочитайте делегирование наследованию
Связь is-a выглядит удобно: создаём подкласс, наследуем поведение и пишем меньше кода.
Но есть цена.
✅ Подкласс получает весь API родителя.
✅ Он зависит от деталей реализации суперкласса.
✅ Изменение родительского класса может неожиданно сломать потомка.
И чем глубже иерархия, тем сложнее понять, откуда вообще взялось конкретное поведение.
Часто безопаснее композиция:
class OrderService {
private final PaymentService paymentService;
}
Вместо наследования:
class OrderService extends PaymentService {
}
Композиция связывает объекты. Наследование связывает их судьбы.
Если объекту просто нужна чужая функциональность, чаще лучше её делегировать, а не наследовать. | 2 548 |
| 16 | 🧠 Spring AI показал, как сделать RAG заметно умнее обычного vector search.
Проблема классического RAG: похожий документ ещё не значит полезный.
Новый пайплайн делает так:
Question → Rewrite → MultiQuery → Vector Search → Jev Filter → Rerank → LLM
Jev проверяет каждый найденный chunk: есть ли там реальный ответ, противоречие или prompt injection.
В демо vector search нашёл 6 фрагментов, но до модели дошли только 2 действительно полезных.
Меньше мусора в контексте → точнее ответы и меньше шансов на prompt injection.
Код и разбор:
https://spring.io/blog/2026/10/02/spring-ai-modular-rag-typesafe-jev/ | 4 151 |
| 17 | ⚡️ Spring Boot 4 убрал статус WILL_EXPIRE_SOON: проверьте мониторинг сертификатов
В Spring Boot 3 SSL-компонент health endpoint переходил в особый статус WILL_EXPIRE_SOON, если сертификат скоро истекал. Для проб Kubernetes и балансировщиков это было неудобно: непонятно, считать сервис живым или нет.
В Spring Boot 4 этот статус убрали. Health остаётся UP, а цепочки сертификатов, срок которых скоро закончится, перечисляются в details.expiringChains. Порог предупреждения задаётся свойством management.health.ssl.certificate-validity-warning-threshold:
management:
health:
ssl:
certificate-validity-warning-threshold: 14d
endpoint:
health:
show-details: always
Ответ /actuator/health тогда выглядит так:
{
"status": "UP",
"details": {
"expiringChains": ["server-cert…"]
}
}
Практический вывод простой: пробы больше не будут дёргаться из-за истекающего сертификата, но и алерт по смене статуса тоже не сработает. Если мониторинг ловил WILL_EXPIRE_SOON, переключите его на проверку непустого expiringChains и не забудьте включить show-details, иначе деталей в ответе не будет. | 2 920 |
| 18 | 💡 Java: не создавайте тяжёлые объекты раньше времени
Если объект дорогой в создании, но нужен только в редких сценариях, eager initialization может зря тратить время и память.
Вместо этого используйте lazy initialization:
private HeavyAnalyzer analyzer;
private HeavyAnalyzer analyzer() {
if (analyzer == null) {
analyzer = new HeavyAnalyzer();
}
return analyzer;
}
Так HeavyAnalyzer создастся только при первом реальном обращении.
Где особенно полезно:
- кэши;
- API-клиенты;
- тяжёлая конфигурация;
- анализаторы;
- объекты с дорогой инициализацией.
Для более чистого кода можно использовать Supplier, holder pattern или современные lazy-механизмы Java.
Если доступ идёт из нескольких потоков, простая проверка if (analyzer == null) уже недостаточна - нужна потокобезопасная реализация. | 2 994 |
| 19 | 💡 Java: не создавайте тяжёлые объекты раньше времени
Если объект дорогой в создании, но нужен только в редких сценариях, eager initialization может зря тратить время и память.
Вместо этого используйте lazy initialization:
private HeavyAnalyzer analyzer;
private HeavyAnalyzer analyzer() {
if (analyzer == null) {
analyzer = new HeavyAnalyzer();
}
return analyzer;
}
Так HeavyAnalyzer создастся только при первом реальном обращении.
Где особенно полезно:
- кэши;
- API-клиенты;
- тяжёлая конфигурация;
- анализаторы;
- объекты с дорогой инициализацией.
Для более чистого кода можно использовать Supplier, holder pattern или современные lazy-механизмы Java.
Если доступ идёт из нескольких потоков, простая проверка if (analyzer == null) уже недостаточна - нужна потокобезопасная реализация. | 1 |
| 20 | 🔥 Один из лучших обучающих курсов на StepiK по SQL
SQL можно знать годами и всё равно теряться, когда запрос внезапно начинает тормозить в проде.
Этот курс про уровень, где ты не просто пишешь SELECT, а понимаешь, что происходит внутри MySQL, почему запрос работает медленно и как ускорить его без новых проблем. Здесь разбираются EXPLAIN, индексы, CTE, оконные функции, транзакции, аналитические паттерны, legacy SQL и работа с AI-ассистентами.
Каждый урок - с практикой и реальными SQL-задачами на MySQL 8 с автопроверкой.
После курса ты сможешь увереннее разбирать чужой код, находить узкие места и предлагать решения, которые действительно работают.
Для подписчиков скидка - 49% в течение 2 суток: https://stepik.org/a/298827/ | 775 |
