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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali Java Portal | Программирование analitikasi

Java Portal | Программирование (@java_iibrary) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 052 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 443-o'rinni va Rossiya mintaqasida 54 522-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 12 052 obunachiga ega bo‘ldi.

24 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -154 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 11.53% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 6.43% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 389 marta ko‘riladi; birinchi sutkada odatda 775 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 5 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent boot, string, void, архитектура, resttemplate kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Yuqori yangilanish chastotasi (oxirgi ma’lumot 25 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

12 052
Obunachilar
+124 soatlar
-217 kunlar
-15430 kunlar
Obunachilarni jalb qilish
Iyun '26
Iyun '26
+24
5 kanalda
May '26
+28
0 kanalda
Get PRO
Aprel '26
+34
1 kanalda
Get PRO
Mart '26
+112
1 kanalda
Get PRO
Fevral '26
+90
0 kanalda
Get PRO
Yanvar '26
+74
1 kanalda
Get PRO
Dekabr '25
+232
9 kanalda
Get PRO
Noyabr '25
+1 004
327 kanalda
Get PRO
Oktabr '25
+48
0 kanalda
Get PRO
Sentabr '25
+36
0 kanalda
Get PRO
Avgust '25
+81
1 kanalda
Get PRO
Iyul '25
+1 479
268 kanalda
Get PRO
Iyun '25
+479
1 kanalda
Get PRO
May '25
+305
3 kanalda
Get PRO
Aprel '25
+696
1 kanalda
Get PRO
Mart '25
+876
2 kanalda
Get PRO
Fevral '25
+797
1 kanalda
Get PRO
Yanvar '25
+1 263
2 kanalda
Get PRO
Dekabr '24
+1 596
400 kanalda
Get PRO
Noyabr '24
+728
171 kanalda
Get PRO
Oktabr '24
+1 285
287 kanalda
Get PRO
Sentabr '24
+1 183
283 kanalda
Get PRO
Avgust '24
+2 821
235 kanalda
Get PRO
Iyul '24
+32
1 kanalda
Get PRO
Iyun '24
+28
1 kanalda
Get PRO
May '24
+18
0 kanalda
Get PRO
Aprel '24
+20
2 kanalda
Get PRO
Mart '24
+27
2 kanalda
Get PRO
Fevral '24
+35
3 kanalda
Get PRO
Yanvar '24
+24
0 kanalda
Get PRO
Dekabr '23
+24
1 kanalda
Get PRO
Noyabr '23
+36
2 kanalda
Get PRO
Oktabr '23
+30
2 kanalda
Get PRO
Sentabr '23
+28
0 kanalda
Get PRO
Avgust '23
+33
0 kanalda
Get PRO
Iyul '23
+49
0 kanalda
Get PRO
Iyun '23
+42
0 kanalda
Get PRO
May '23
+35
0 kanalda
Get PRO
Aprel '23
+32
0 kanalda
Get PRO
Mart '23
+37
0 kanalda
Get PRO
Fevral '23
+62
0 kanalda
Get PRO
Yanvar '23
+73
0 kanalda
Get PRO
Dekabr '22
+70
0 kanalda
Get PRO
Noyabr '22
+83
0 kanalda
Get PRO
Oktabr '22
+79
0 kanalda
Get PRO
Sentabr '22
+58
0 kanalda
Get PRO
Avgust '22
+106
0 kanalda
Get PRO
Iyul '22
+142
0 kanalda
Get PRO
Iyun '22
+216
0 kanalda
Get PRO
May '22
+144
0 kanalda
Get PRO
Aprel '22
+150
0 kanalda
Get PRO
Mart '22
+499
0 kanalda
Get PRO
Fevral '22
+174
0 kanalda
Get PRO
Yanvar '22
+325
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
24 Iyun+5
23 Iyun0
22 Iyun+2
21 Iyun+3
20 Iyun+1
19 Iyun0
18 Iyun+1
17 Iyun0
16 Iyun0
15 Iyun0
14 Iyun0
13 Iyun0
12 Iyun0
11 Iyun0
10 Iyun0
09 Iyun0
08 Iyun0
07 Iyun+4
06 Iyun0
05 Iyun+2
04 Iyun0
03 Iyun+2
02 Iyun+3
01 Iyun+1
Kanal postlari
Что нового в PostgreSQL 19? PostgreSQL 19 продолжает одну важную тенденцию. Postgres превращается во что-то гораздо большее, чем просто реляционная база. Самые интересные новинки: Графовые запросы через SQL/PGQ PostgreSQL 19 научился выполнять SQL Property Graph Queries. Теперь можно запрашивать связи прямо на SQL, без отдельной графовой базы. Пригодится для соцсетей, рекомендаций, поиска мошенничества и графов зависимостей. GROUP BY ALL Вместо того чтобы перечислять все колонки в GROUP BY, пишешь GROUP BY ALL. Postgres сам группирует по неагрегатным колонкам. Меньше шаблонного кода, меньше ошибок. WAIT FOR LSN Фича для приложений, которые используют реплики чтения. Позволяет подождать, пока реплика догонит основную базу, прежде чем читать данные. Полезно для консистентности «прочитал то, что написал». Лучшая поддержка JSON Postgres и дальше улучшает работу с полуструктурированными данными, не теряя при этом SQL, индексы, соединения и транзакции. PostgreSQL 19 пока в бете. Детали могут поменяться к релизу. Но направление понятно. Postgres потихоньку становится одной платформой под всё: реляционные данные, документы, графы, аналитика и векторы для AI. 👉 Java Portal

2
AI-инструменты можно любить и ненавидеть, но работать без них в IT уже практически невозможно 🤩 Коллеги из AvitoTech 11 июля
AI-инструменты можно любить и ненавидеть, но работать без них в IT уже практически невозможно 🤩 Коллеги из AvitoTech 11 июля зовут в их офис на Лесной на AI Hardcore Day. Приглашают тех, кто каждый день сталкивается с AI в работе и даже пишет своих AI-агентов. Обещают доклады и нетворкинг-сессию на террасе после — и всё это без записи. 💫 Среди тем: — Spec-Driven Development: теория, инструменты, практика. — Разработка и тестирование MCP для внутренних агентных систем аналитики. — Выпрямляем руки агентов: как сделать MCP удобными и действительно полезными. — Атаки на GenAI-агентов: OWASP на практике. ➡ Регистрация тут!
566
3
Java Tip: Не перегружайте методы параметрами Если метод принимает слишком много аргументов, возрастает риск передать значения
Java Tip: Не перегружайте методы параметрами Если метод принимает слишком много аргументов, возрастает риск передать значения в неправильном порядке, а код становится сложнее читать и поддерживать. ❌ Плохо: createUser(firstName, lastName, street, city, zip, country); ✅ Лучше сгруппировать связанные данные в отдельный объект: createUser(firstName, lastName, new Address(street, city, zip, country)); Такой подход: • делает сигнатуры методов компактнее • упрощает расширение модели данных • снижает вероятность ошибок при вызове • делает код более понятным и самодокументируемым Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record. #Java #Refactoring #CleanCode 👉 Java Portal
737
4
Docker-ошибка, которую я вижу почти в каждом junior Dockerfile: COPY . . RUN npm install должно быть: COPY package*.json ./ R
Docker-ошибка, которую я вижу почти в каждом junior Dockerfile: COPY . . RUN npm install должно быть: COPY package*.json ./ RUN npm install COPY . . почему это важно? docker кэширует каждую инструкцию как отдельный слой исходный код меняется с каждым коммитом поэтому COPY . . ломает кэш, и всё после него (включая npm install) пересобирается с нуля при каждой сборке если поменять порядок, слой с установкой зависимостей остаётся в кэше даже при изменении кода, потому что он зависит только от package.json одна перестановка строк. экономит 40+ секунд на каждой пересборке. кэшируй зависимости, а не код. 👉 Java Portal
869
5
Spring Boot 4.1 приносит с собой много новых фич, включая автоконфигурацию job repository для Spring Batch на базе MongoDB. \ Читай об этом здесь 👉 Java Portal !
941
6
💡 Java tip: Use the Stream API для работы с коллекциями в декларативном стиле. List names = users.stream() .filter(U
💡 Java tip: Use the Stream API для работы с коллекциями в декларативном стиле. List<String> names = users.stream() .filter(User::isActive) .map(User::getName) .sorted() .toList(); Пиши, что тебе нужно получить из данных. Не расписывай цикл вручную. Stream сделает это короче и чище. 👉 Java Portal
978
7
Как создаются продукты, которыми пользуются миллионы? Покажут на «Сезоне кода» в Казани — летнем ИТ-фесте, где объединяют раз
Как создаются продукты, которыми пользуются миллионы? Покажут на «Сезоне кода» в Казани — летнем ИТ-фесте, где объединяют разработку, аналитику и продукт в одном пространстве. В программе: — прикладные доклады команд Т-Банка и других компаний; — демо-зоны с продуктами и платформами: можно посмотреть, как все работает изнутри и пообщаться с разработчиками; — новая секция «Продуктовая кухня»: поговорим о развитии продуктов через инсайты, data-driven-подход и продуманный дизайн. И конечно, живое общение, интерактивы и афтепати с диджеем в конце дня. Количество мест ограничено — успейте зарегистрироваться
949
8
SQLBolt - изучайте SQL с помощью простых интерактивных упражнений. https://sqlbolt.com/ 👉 Java Portal
961
9
Java-паттерны: Builder Паттерн Builder помогает создавать сложные объекты более гибким и понятным способом. На примере выше х
Java-паттерны: Builder Паттерн Builder помогает создавать сложные объекты более гибким и понятным способом. На примере выше хорошо видно проблему длинных конструкторов: new Order("Mario", "Laptop", 2, true, "Leave at door"); Через несколько месяцев уже сложно понять, что означает true, а при добавлении новых параметров конструктор быстро становится неудобным. Builder решает эту проблему: Order order = Order.builder() .customer("Mario") .product("Laptop") .quantity(2) .express(true) .note("Leave at door") .build(); Преимущества: ✅ Именованные параметры делают код читаемее ✅ Можно задавать значения в любом порядке ✅ Удобно работать с необязательными полями ✅ Значения по умолчанию задаются в Builder ✅ Валидацию можно выполнять один раз в build() ✅ Нет путаницы с конструкторами из 5–10 аргументов Builder особенно полезен для DTO, конфигураций, запросов к API и объектов с большим количеством параметров. Поэтому его часто можно встретить в Java-проектах и библиотеках вроде Lombok, где достаточно добавить аннотацию @Builder. 👉 Java Portal
1 060
10
Spring Boot 4.1 добавляет всего одно свойство: spring.datasource.connection-fetch=lazy По умолчанию методы с @Transactional получают соединение с БД сразу при открытии транзакции, даже если запрос в итоге так и не выполняется. Попадание в кэш, ранний return, долгий вызов внешнего API перед сохранением данных — во всех этих случаях соединение просто простаивает без дела. Режим lazy откладывает получение соединения до момента, когда действительно выполняется SQL-запрос. Dan Vega собрал демо, которое показывает это на метриках HikariCP. Количество захватов соединений (acquire count) падает примерно со 100 до почти 0. 👉 Java Portal
1 015
11
Java: отдавай предпочтение неизменяемым объектам (immutable), чтобы упростить потокобезопасность. ❌ Изменяемое состояние, раз
Java: отдавай предпочтение неизменяемым объектам (immutable), чтобы упростить потокобезопасность. ❌ Изменяемое состояние, разделяемое между потоками public class Balance { private BigDecimal amount = BigDecimal.ZERO; public void deposit(BigDecimal v) { amount = amount.add(v); } public BigDecimal get() { return amount; } } Если два потока одновременно вызовут deposit(), возможны потерянные обновления (lost updates), гонки данных (race conditions) и чтение неконсистентного состояния. ✅ Неизменяемый объект — обновление через создание нового экземпляра public record Balance(BigDecimal amount) { public Balance deposit(BigDecimal v) { return new Balance(amount.add(v)); } } Вместо изменения существующего объекта создаётся новый. Потоки могут безопасно работать со своими снимками состояния (snapshot), а каждый вызов deposit() возвращает новый объект. ✅ Неизменяемые коллекции List<String> roles = List.of("READ", "WRITE"); Map<String, Integer> limits = Map.of("free", 10, "pro", 100); Такие коллекции можно безопасно передавать между потоками без дополнительной синхронизации. ✅ Защитная копия (defensive copy) Если исходная коллекция всё ещё изменяемая: List<String> snapshot = List.copyOf(mutableRoles); Создай неизменяемую копию перед публикацией другим частям приложения. На практике immutable-подход позволяет существенно сократить количество synchronized, блокировок и ошибок многопоточности. Поэтому современные API Java (record, List.of(), Map.of(), Optional, LocalDateTime) активно используют неизменяемые объекты по умолчанию. 👉 Java Portal
990
12
🔥VPS + ISPmanager со скидкой до 100% на Waicore Запускаете сайты на VPS? Сейчас самое время попробовать ISPmanager практически бесплатно. ➕ Наши акции: — 100% скидка на первый месяц лицензии ISPmanager при заказе VPS из категории «Веб-хостинг» — Скидка 60% на лицензии ISPmanager при отдельной покупке Также доступны: 🛡 SSL-сертификаты 🛡 BitNinja для защиты серверов от атак, спама и вредоносного ПО. Получаете готовый VPS с установленной панелью управления и можете сразу приступать к работе с сайтами, почтой, базами данных и другими сервисами. ⚡️Акция действует месяц. Подробнее на сайте WAICORE.
853
13
Java: используйте полиморфизм вместо цепочек instanceof. Проверки типов часто приводят к разрастающимся if/else, нарушают при
Java: используйте полиморфизм вместо цепочек instanceof. Проверки типов часто приводят к разрастающимся if/else, нарушают принцип Open/Closed и заставляют изменять существующий код при добавлении новых сущностей. ❌ До: public String describe(Animal animal) { if (animal instanceof Dog) { return "Woof"; } else if (animal instanceof Cat) { return "Meow"; } else if (animal instanceof Cow) { return "Moo"; } throw new IllegalArgumentException("Unknown animal"); } Каждый новый тип требует правки метода. ✅ После: public interface Animal { String sound(); } public final class Dog implements Animal { public String sound() { return "Woof"; } } public final class Cat implements Animal { public String sound() { return "Meow"; } } public final class Cow implements Animal { public String sound() { return "Moo"; } } public String describe(Animal animal) { return animal.sound(); } Преимущества: → нет цепочек instanceof и приведения типов → меньше условной логики → проще расширять систему новыми типами → соблюдается принцип Open/Closed → поведение находится внутри самого объекта, а не размазано по коду Добавить новое животное теперь можно без изменения существующей логики: public final class Sheep implements Animal { public String sound() { return "Baa"; } } Клиентский код останется прежним: describe(new Sheep()); Пусть объекты сами решают, как себя вести. Именно для этого и существует полиморфизм. #Java #OOP 👉 Java Portal
928
14
DBeaver уже 15 лет остаётся де-факто стандартом среди SQL-клиентов. Инструмент мощный, но это ещё и тяжёлый Java-монолит, кот
DBeaver уже 15 лет остаётся де-факто стандартом среди SQL-клиентов. Инструмент мощный, но это ещё и тяжёлый Java-монолит, который может запускаться по 20 секунд. Кто-то решил переписать его с нуля на Rust и добавить возможности, которых в DBeaver никогда не было. Проект называется Tabularis. 2.5 тыс. звёзд. Лицензия Apache 2.0. Последняя активность — 17 часов назад. Самое интересное: Tabularis создал один разработчик — Debba — как эксперимент по AI-assisted разработке. Цель была простой: проверить, насколько далеко AI-агенты способны зайти при создании реального продукта. В итоге получилось 55 релизов, 1192 коммита и SQL-клиент, который уже конкурирует с продуктами компаний, где над подобными инструментами работают десятки инженеров. Что есть в Tabularis, а в DBeaver нет: ✅ Встроенный MCP-сервер — Claude, Cursor и Windsurf могут читать схему БД и выполнять запросы прямо из чата ✅ SQL Notebooks с графиками внутри ячеек и общими переменными между ними ✅ Визуальный EXPLAIN с AI-анализом плана выполнения ✅ Визуальный конструктор запросов с drag-and-drop JOIN'ами ✅ Автоматическая генерация ER-диаграмм ✅ Поддержка PostgreSQL, MySQL/MariaDB, SQLite и ClickHouse через плагины ✅ Редактор на базе Monaco с интеллектуальным автодополнением ✅ Без телеметрии, аккаунтов и подписок Чего пока нет в Tabularis, но есть в DBeaver: ❌ SQL Server ❌ Oracle Если работаешь с ними, DBeaver пока остаётся более очевидным выбором. Во всех остальных случаях Tabularis запускается примерно за 2 секунды, занимает меньше ресурсов и позволяет AI-агентам работать с базой напрямую. https://github.com/TabularisDB/tabularis 👉 Java Portal
1 097
15
Совет по Spring: ставь circuit breaker на удалённые вызовы Если сервис ходит в другой сервис через Feign, этот вызов может за
Совет по Spring: ставь circuit breaker на удалённые вызовы Если сервис ходит в другой сервис через Feign, этот вызов может зависнуть, упасть или начать возвращать ошибки. @CircuitBreaker(name = "CircuitBreakerService") String getInstance(); Circuit breaker временно «размыкает цепь», когда ошибок слишком много. Вместо бесконечных ретраев и просадки всего приложения ты отдаёшь fallback: public String getAuthorServiceInstanceFallback(Exception ex) { return "Fallback content"; } В application.yml можно задать порог ошибок и время ожидания: failure-rate-threshold: 50 wait-duration-in-open-state: 5s Идея простая: внешний сервис упал — твоё приложение деградирует контролируемо, а не валится следом. 👉 Java Portal
1 229
16
Совет по Java: не ловите Exception на всякий случай Плохая практика: catch (Exception e) Такой код скрывает реальные проблемы
Совет по Java: не ловите Exception на всякий случай Плохая практика: catch (Exception e) Такой код скрывает реальные проблемы. Для приложения одинаково начинают выглядеть ошибки бизнес-логики, NullPointerException, проблемы с памятью и другие сбои. Ловите только те исключения, которые действительно можете обработать: catch (IOException e) { ... } catch (JsonProcessingException e) { ... } catch (DuplicateKeyException e) { ... } Тогда становится понятно: что именно пошло не так; какие ошибки ожидаемы; какие нужно логировать; какие должны прерывать выполнение. И ещё одно правило: catch (Throwable t) Почти никогда не используйте. Так можно перехватить OutOfMemoryError, StackOverflowError и другие критические ошибки, после которых приложение зачастую уже не способно нормально продолжать работу. Лови только то, что умеешь исправить. Остальное пусть поднимается выше по стеку вызовов. 👉 Java Portal
1 272
17
gRPC в Java раньше означал proto-файлы, codegen, build-плагины, настройку сервера и client channels. Куча возни ещё до первого hello world. Spring Boot 4.1 закрывает большую часть этой рутины. Если ты умеешь писать REST-приложение, базовые шаги уже знакомы: → описать контракт → добавить bean с @GrpcService → заинжектить stub на клиенте Полный сервер, клиент и in-memory тест с нуля 👇 https://github.com/danvega/hello-grpc 👉 Java Portal
1 363
18
Наткнулся на хороший репозиторий со Skills для Spring Boot-агентов. Стоит посмотреть. https://github.com/rrezartprebreza/spring-boot-skills 👉 Java Portal
1 254
19
В чем разница между балансировщиками нагрузки, обратными прокси и API-шлюзами? 🍩Балансировщик нагрузки распределяет клиентск
В чем разница между балансировщиками нагрузки, обратными прокси и API-шлюзами? 🍩Балансировщик нагрузки распределяет клиентские запросы между серверами, выбирая их по алгоритму, чтобы равномерно распределять нагрузку, избегать перегрузок и обеспечивать стабильную работу системы. Он получает запрос, перенаправляет его на сервер, принимает ответ и отправляет его обратно клиенту. Это увеличивает пропускную способность, снижает задержки и оптимизирует использование ресурсов. 🍩Обратные прокси работают как посредники между клиентами и серверами, обрабатывая запросы и передавая данные, скрывая серверы и повышая их безопасность. Они обеспечивают контроль за сетевым трафиком, снижая риски атак и угроз. Дополнительно, они могут кэшировать контент для уменьшения нагрузки на сервер, сжимать данные для ускорения передачи и управлять SSL/TLS-шифрованием, разгружая веб-серверы. 🍩API-шлюзы работают как единая точка входа для всех API-запросов, направляя их к нужным микросервисам и собирая результаты. Они упрощают взаимодействие клиентов с разными сервисами, добавляют защиту, применяют правила, переводят между веб-протоколами и агрегируют данные. Идеально подходят для работы с микросервисной архитектурой. 👉 @BackendPortal
1 338
20
💡 Совет по Java: всегда закрывайте ресурсы вроде BufferedReader, InputStream и OutputStream через try-with-resources, чтобы
💡 Совет по Java: всегда закрывайте ресурсы вроде BufferedReader, InputStream и OutputStream через try-with-resources, чтобы избежать утечек памяти и ресурсов. #Java #BestPractices 👉 Java Portal
1 279