TGViewer
Channel Public Channel
Чашечка Java

Чашечка Java

@a_cup_of_java

Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Subscribers
8.4K
Photos
3.9K
Videos
13
Links
6.4K

Showing posts older than #8612 · Back to latest

Older Posts 16 shown
Post #8611 1.01K
Общий обработчик исключений убирает try/catch из контроллеров, но свалка переезжает в него самого

В контроллере на каждый эндпоинт по два catch: свой UserAlreadyExistsException в 409, остальное в 500 со строкой «Internal server error». В соседнем контроллере то же самое, но статус и текст уже другие. Всё это уносится в @RestControllerAdvice, и метод снова возвращает только успешный ответ.

Спор начинается дальше. В статье на dev.to автор разводит бизнес-ошибки и системные. Вторые обычно закрывают одним обработчиком на Exception.class, и он же превращает в аккуратный 500 то, что должно было упасть громко и попасть в алерты.

А со Spring Boot 3 в фреймворке уже есть ProblemDetail: стандартное тело ошибки по RFC. Свой ErrorResponse при этом всё равно пишут почти все.

Как разложены исключения у вас?
Post #8610 961
Промпт прошёл все офлайн-проверки и всё равно уронил P95 на 38%, но канареечный выкат ловит это за минуты

Правку промпта не отсекает ни один привычный гейт: компилятор её не видит, юнит-тесты зелёные, офлайн-набор из 40 кейсов тоже. А на живом трафике переформулированное описание инструмента научило агента вызывать его дважды за ход: вызовов на диалог стало 5,4 вместо 3,1, P95 вырос на 38%. Тестовые транскрипты короткие по замыслу, реальные диалоги длинные, и каждый лишний вызов удваивает ожидание.

В десятой части серии про агента на Spring Boot собрана рантайм-обвязка: раздача процента трафика на новую версию, автоматический переход на запасную модель при деградации основной и потолок расходов на модель.

Если промпты у вас едут в прод вместе с кодом, начинать стоит с процента трафика, который возвращается в ноль одной настройкой, и графика вызовов инструментов на диалог.
  • 👎 1
Post #8609 998
Девять convention-плагинов Gradle в проде JetBrains заменили декларативным конфигом сборки

Логика сборки крупного JVM-проекта обычно живёт в buildSrc: convention-плагины на Kotlin, которые сами надо компилировать и чинить при каждом апгрейде Gradle. JetBrains перевела на Kotlin Toolchain бэкенд klibs.io: прод на JDK 21, Spring Boot 4 со Spring AI, PostgreSQL и OpenSearch. Девять плагинов свернулись в шаблоны Toolchain, а Jib и Git Properties, у которых встроенного аналога нет, переписали как локальные плагины.

Отдельно про Maven Central: Sonatype скоро включит квоты на число файлов в публикации. В 0.12 из неё убрали контрольные суммы файлов подписи (.asc.sha1) — они не нужны, а место в квоте занимают.

Toolchain пока в версии 0.x, публикация библиотек в статусе preview, для фич 0.12 нужна IntelliJ IDEA 2026.2.1. Переносить рабочую сборку рано, а в список на перепроверку положить стоит.
Post #8608 1.06K
Синтаксис, который восемь лет лежит в драфте JEP, предлагают включать препроцессором перед javac

Декоратор или адаптер наполовину состоит из методов, которые только зовут то же самое у обёрнутого объекта. В самой JDK у Collections.UnmodifiableCollection таких методов 14.

JEP 8209434 «Concise Method Bodies» Брайана Гётца предлагает записывать их как лямбды: public int size() -> c.size(); или ссылкой на метод: public int size() = aList::size;. Заявку подали в августе 2018 года, и она до сих пор в статусе Draft: ни целевого релиза, ни preview-флага. В C# такие тела работают с 2015 года.

Автор статьи ждать перестал и собрал препроцессор java-composition: он разворачивает такие тела в обычный Java-код до того, как файл дойдёт до javac, начиная с Java 8.

Цена — исходник, который без препроцессора не соберётся ни у кого. Взяли бы такое в проект, который поддерживать ещё пять лет?
  • 🤣 1
Post #8607 1.17K
JDK 28 покажет в JFR, договорились ли ваши TLS-соединения на постквантовый обмен ключами

Событие jdk.TLSHandshake в JDK Flight Recorder писало версию протокола и шифронабор, но не то, как стороны вырабатывали общий секрет. В JDK 28 у него появилось поле namedGroup с параметрами обмена ключами: в выводе jfr print там видно, например, X25519MLKEM768, гибрид классической кривой X25519 и постквантового ML-KEM.

По записи с прода теперь видно, какие соединения уже ушли на постквантовую схему, а какие остались на обычной кривой. Для инвентаризации перед миграцией это дешевле отладочного лога TLS, который на нагруженном сервисе обычно не включают.

Событие выключено по умолчанию и в default.jfc, и в profile.jfc, включать явно:
java -XX:StartFlightRecording:settings=default,duration=60s,+jdk.TLSHandshake#enabled=true

Полный пример вывода события показывают в заметке Inside.java.
Post #8606 1.31K
Апгрейд Java 8 до 21 на 17 000 строк теперь стоит 2,52 доллара машинного времени

Тот самый сервис на Java 8 и Spring Boot 2, который в планировании всегда проигрывает фичам: смета в человеко-неделях не проходит. AWS Transform считает по-другому, 0,035 доллара за минуту работы агента, и апгрейд на 17 000 строк укладывается в 72 минуты.

Перед агентом стоит прогнать детерминированный проход. OpenRewrite разбирает код в дерево с типами, поэтому отличает ваш класс Result от Result из зависимости, чего регулярка не умеет: больше 2800 рецептов, Apache 2.0. Прогон UpgradeToJava21 на Maven-проекте с Java 8 занял 87 секунд вхолодную и 18 на прогретом кеше, а правки легли только в build config, ни строки исходников.

Рецепты бесплатно закрывают предсказуемое, агент добирает хвост, который правилом никто не описал, и его дифф придётся читать глазами. Остальной стек модернизации лежит на dev.to.
  • ❤ 4
  • 👍 3
Post #8604 2.13K
В мире, где деплои по пятницам, а отпуск — глубоко в бэклоге, живёт уставший разработчик. Один герой. Один чемодан. Незакрытые таски и полный бардак.

Разгребите хаос. Найдите билет, соберите вещи, пока он не передумал. И решите главный вопрос эпохи: что ему надеть?

Соберите программиста в отпуск, найдите пасхалочки и промокоды от партнёров!
  • 👍 1
  • 👏 1
Post #8602 2.74K
Spring AI 2.0 против LangChain4j: выбор для Spring Boot 4

В 2026 году Spring AI вышел вместе с Spring Boot 4 и стал официальным стартером на start.spring.io. LangChain4j не порт Python LangChain: заточен под Java, поддерживает 20+ провайдеров больших языковых моделей (LLM) и 30+ векторных БД, работая со Spring Boot, Quarkus, Helidon и Micronaut.

Главный вопрос для enterprise-команды: не «кто больше умеет», а где вы готовы платить за интеграцию. Spring AI углубляется в Spring-экосистему: внедрение зависимостей (DI), Micrometer и Actuator из коробки. LangChain4j шире по провайдерам и фреймворкам, но в Spring-проекте он остаётся внешней библиотекой, а не родным стартером.

Версии, поддержка протокола MCP и выбор интеграций — в статье. Что выберете?
  • 😁 6
  • ❤ 5
  • 👍 4
  • 🔥 3
  • 👏 3
  • 🤔 2
Post #8601 3.99K
KotlinLLM: модель пишет runtime-логику в вашем Kotlin/JVM-проекте

JetBrains Research открыл исходники плагина для IntelliJ IDEA. В Kotlin/JVM-проектах появляются Smart macros — функции, тело которых генерирует модель, сохраняется в репозитории как Kotlin-код и исполняется без повторных вызовов LLM.

Для Kotlin-разработчика в enterprise это детерминированный runtime, меньше вызовов к API в продакшене и ревью сгенерированной логики вместе с остальным кодом. Пишете asLlm<F, T>() для преобразования данных или mockLlm<T>() для тестового интерфейса.

Прототип проверен на адаптированном Spring Petclinic и радаре GitHub-задач: накладные расходы невелики, сгенерированный код коммитится и работает как обычный Kotlin.

Apache 2.0. Подробности в блоге JetBrains Research
  • 😁 7
  • ❤ 6
  • 👏 6
  • 👍 5
  • 🔥 3
  • 🤔 3
  • 💊 1
Post #8599 2.3K
Если вы устали от бесконечных тасок и созвонов, то мы приготовили для вас игру, которая поможет отдохнуть

А заодно проверить вашу способность быстро запоминать новую инфу. Переходите по ссылке и играйте в нашу «Меморину». И делитесь результатами в комментариях!

Играть тут: https://tprg.ru/bjqP
Post #8589 7.66K
Локализация через Enum: избавляемся от рантайм-парсинга

В статье на Tproger разобрали три подхода к локализации: классическое наследование требует дублировать поля вручную, стандартные ARB/JSON парсятся в рантайме и съедают память, а табличные генераторы требуют ручного запуска после каждой строки.

Выход — Enum в одном файле без внешних ресурсов. Это убирает рантайм-парсинг и ручное дублирование. Если ваши сервисы сопрягаются с клиентами, где локализация до сих пор требует JSON или генераторов, стоит переложить её на compile-time решение.
  • ❤ 1
  • 😁 1
Post #8585 4.49K
Как решить задачу охраны промышленных объектов

Проинспектировать НПЗ с десятками корпусов или организовать охрану трубопровода на 400 км — задача не из простых.

Камеры не заглянут за угол. Дрон через 30–40 минут работы придется зарядать. Охранник — дорого, медленно, небезопасно.

Остаётся робособака. Они уже вышли за пределы мемных видео от Boston Dynamics, и сейчас активно используются в кейсах, вроде охраны.

Как они устроены технически — можете узнать в материале на нашем сайте. Внутри:
— как устроено ядро и почему к нему нет прямого доступа
— почему к лидару обязательно добавляют сонар и радар
— как работает рой в mesh-сети без GPS
— где робот ломается (метель, стройка, полиэтиленовая плёнка)

Спойлер: экосистема пока сырая, стандартов нет, собрать самому нельзя. Но альтернативы для сложного рельефа и помещений — нет.
  • 👍 1
Post #8584 3.28K
Три ИТ-события, которые вы могли пропустить (а зря)

Пока все гонятся за хайповыми новостями, мы вместе с коллегой Андреем Дмитриевым из JUG.ru собрали события, которые уже повлияли на мир разработки.

В пилотном выпуске нового подкаста:
— Хакеры стерли десятки тысяч ПК через Microsoft Intune
— Дефицит оперативной памяти до 2030 года
— Оптимизация glibc под x86_64

О других событиях вы можете узнать, послушав подкаст.

Особое внимание предлагаем уделить рефлексии. В выпуске мы подсветили, почему те или иные истории важны для ИТ-сообщества. А теперь призываем вас в комменты под видео: что уже вошло в вашу жизнь из этих кейсов? И как думаете, что из этого не производит резонанса?

Смотрите подкаст и присоединяйтесь к дискуссии: https://tprg.ru/S7jD
  • 🤔 1
Post #8581 2.81K
RAG в JVM-стеке: AI-ассистент на Spring AI без Python

Команда автора статьи внедрила AI-ассистента для внутренней системы, не переходя на Python. Взяли Spring AI, PostgreSQL с pgVector и быстро убедились: качество ответов упирается не в код, а в данные. Документация оказалась разрозненной, стандартное разбиение на чанки теряло контекст.

После экспериментов с перекрытием и секциями пришли к простому решению: векторный поиск идёт по чанкам, но в ответ передаётся полный текст секций, к которым относятся найденные фрагменты. Это сохранило точность поиска и устранило разрывы инструкций. Главный вывод — модель не добавляет знаний, а лишь отражает зрелость документации. Улучшение базы знаний дало больший прирост качества, чем выбор более мощной LLM.

Для Java-разработчиков — готовый кейс внедрения RAG в привычном стеке. Подробности с примерами кода — в статье: https://habr.com/ru/companies/raiffeisenbank/articles/1012666/
Post #8574 2.95K

Forwarded from Типичный программист

Победителями премии Тпрогер 🐀становятся...

Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?

В номинации «Продукт года» золотая мышь достается компании:
🐀NetVision за платформу интеллектуального мониторинга СИМ.

В номинации «Облачный продукт года» побеждает компания:
🐀Гравитон с паком виртуализации «Гелиус»

Звание «IT-ивент года» вручается компании:
🐀Островок! за О!Хакатон

И в категории «Дизайн года» первое место занимает компания:
🐀AcademiaDev за интерактивную инсталляцию.

Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке.
И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
  • ❤ 1
  • 🙏 1
Post #8549 2.72K

Forwarded from Типичный программист

Ну и еще немного про ИИ! 😁

Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали 🤪 Но каким-то образом у разных компаний получается приручить эту химеру и выуживать из нее пользу.

Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.

Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.

Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно 👻
  • 💯 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →