Обновить
256K+

Java *

Объектно-ориентированный язык программирования

174,66
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Veai + TMS: как подключить Allure TestOps и Test IT к ИИ-агенту в IDE и чинить упавшие автотесты

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.6K

Автотесты падают, а разбор занимает время: нужно открыть отчёт в системе управления тестами, понять причину падения, залезть в репозиторий, найти нужный тест и решить, где ошибка: в самом тесте или в приложении. Veai умеет забирать эту рутину на себя. Агент подключается к TMS (Test Management System), читает данные о падении по ссылке и предлагает правку прямо в открытом проекте.

В статье разберём, что такое TMS в контексте Veai, как подключить Allure TestOps и Test IT, и как агент разбирает причину падения автотеста: от инфраструктуры до флаков.

Читать далее

Java Digest #37: что нового в JDK 27, Spring Boot 4.1 и Hibernate 8.0

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели11K

Всем привет! 👋👋👋👋👋Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске о том, что Java наконец-то делает шаг в будущее: value-классы впервые выходят в preview, а в JDK 27 по умолчанию включаются компактные заголовки объектов и G1. Наблюдаем сдвиг платформы в сторону производительности, безопасности и удобства.

Читать далее

Spring Security: начало работы и первые шаги на практике

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.7K

В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения

Читать далее

LSP vs весь стек JetBrains IDE: что получает AI-агент без доступа к платформе IDE

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.4K

Привет, Хабр.

Сейчас почти каждый AI-кодинг-агент подключает LSP — Language Server Protocol. Это тот самый протокол, по которому редактор общается с языковым сервером: go-to-definition, find usages, hover с типом, диагностика. На этом обычно и пишут: «агент понимает код семантически».

Но мы в Veai делаем агента для JetBrains IDE, и нас периодически спрашивают: а зачем вообще нужен IDE, если LSP уже всё умеет? Хороший вопрос. LSP и правда решает много задач, но он проектировался для редактора, а не для агента. Подсветить ошибку, показать тип под курсором, найти ссылки — для этого LSP достаточно. А вот поменять Spring-бин в enterprise-проекте и не сломать сборку — тут нужно чуть больше.

Под катом разберём, что именно LSP даёт агенту, где этого перестаёт хватать и что поверх той же модели проекта предлагает JetBrains Platform. Спойлер: сравнивать LSP и PSI один в один бессмысленно — LSP это протокол, PSI это модель. Речь пойдёт о LSP vs весь стек IDE.

Читать далее

CLA или почему ваш PR в Open Source не может быть принят

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.3K

Всем привет!

Вероятно, часть людей уже меня знает, но всё же представлюсь. Меня зовут Михаил Поливаха, я являюсь техническим лидером проекта Axelix.

Я уже какое-то время назад выпускал статью, которая поясняла, что такое Copyright, что такое лицензия в общем её смысле, какие типы лицензий бывают и т.д. Рассматривайте данную статью как некое продолжение этой прошлой статьи.

Сегодня я хочу осветить такой момент, как CLA и почему в том или ином виде он есть у любого крупного Open Source-а. Мы также рассмотрим, как AI влияет на CLA и на принятие контрибьюшенов со стороны. Есть ещё DCO. Его, например, уже давно использует Linux, и Spring Framework в своё время перешёл на него с CLA. Но DCO, я думаю, стоит обсудить отдельно. Если интересно будет - пишите, я потрачу время, расскажу.

В общем, без долгих прелюдий, начнём.

Читать далее

Возвращение аспектно-ориентированного программирования

Время на прочтение5 мин
Охват и читатели14K

Привет, Хаброжители! Сегодня мы подготовили для вас перевод статьи. Эта статья посвящена переосмыслению концепции аспектно-ориентированного программирования (АОП) в эпоху развития больших языковых моделей (LLM).

Как писать код, который одновременно корректен, эффективен и безопасен? Классическое АОП с его «точками соединения» оказалось слишком сложным. Новая парадигма предлагает описывать каждый аспект в отдельном документе, а LLM выступает в роли «плетельщика», генерируя чистый и удобный код.

Почему этот подход устойчивее и как он меняет разработку?

Читать далее

Асинхронность в WebAssembly (WASM)

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели11K

Обзор асинхронности WASM с выходом WASI 0.3

WASM уже вышел за пределы браузеров и выглядит как перспективная технология для серверной разработки. Однако в вопросе серверного компьюта рано или поздно встает вопрос асинхронной обработки I/O-bound нагрузки. В данной статье попробуем разобраться, что как отвечает экосистема WASM на данный вызов. Статья особенно актуальна в свете того, что совсем недавно официально представлен WASI 0.3

Читать далее

Как мы научили ИИ-агента в JetBrains за минуту настраиваться под чужой проект

Время на прочтение6 мин
Охват и читатели10K

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

В Veai 5.13 мы попробовали закрыть именно эту боль. Главная фича релиза — онбординг агента в проект: при первом запуске агент сам проходит короткий диалог и за минуту настраивает себя под вашу кодовую базу – создаёт правила, подключает навыки и внешние инструменты. Дальше он с первого сообщения говорит на языке вашего проекта.

Разберёмся, как это устроено, в какие файлы всё сохраняется. А ещё пройдёмся по остальным изменениям релиза: генерация тестов в WebStorm и PyCharm, доступ к файлам за пределами проекта и хоткей для переключения между редактором и чатом.

Читать далее

Основы Spring security

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.6K

В данной статье я подробно и простыми словами описал, как работает Spring Security, что он делает, как и за счёт чего он обеспечивает безопасность приложения.

Читать далее

Java‑код скомпилировался — это ещё не значит, что он работает

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели12K

Есть целый класс Java‑багов, которые компилятор пропускает, а тесты на счастливом пути не ловят: код синтаксически корректен, но делает не то, что вы имели в виду. В статье разбираем пять таких самых частых ситуаций, которые встречаются у начинающих разработчиков.

Читать далее

Хватит объяснять агенту проект в каждом чате: что появилось в Veai 5.14

Время на прочтение7 мин
Охват и читатели11K

Когда работаешь с AI-агентом в большом проекте каждый день, накапливаются две усталости. 

Первая – объяснять одно и то же. В каждом новом чате заново рассказываешь, какой у вас стек, каким тестовым фреймворком пользуетесь, чем отлаживаете, что после правки нужно прогнать тесты. 

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

В Veai 5.14 мы взялись за обе. Появился Memory Bank – агент запоминает факты о проекте между чатами. И профили маршрутизации моделей – субагенты работают на разных моделях под разные задачи. Плюс окно результатов ревью, проектные MCP-серверы и несколько изменений в интерфейсе. Разберём по порядку.

Читать далее

REST Assured: почему зелёные тесты пропускают баги в API

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.6K

В статье разбираем практический маршрут на REST Assured 6.0.0 и JSON Schema: как закрыть структуру ответа одной проверкой, как сделать схему по-настоящему строгой и где в этой связке спрятан капкан, из-за которого схема с условной логикой выглядит рабочей, но не проверяет ничего.

Читать далее

В Java нет универсального типа для денег

Уровень сложностиПростой
Время на прочтение26 мин
Охват и читатели16K

double быстрый, но хранит десятичные числа как двоичные приближения: 0.1 + 0.2 дает 0.30000000000000004. BigDecimal точен в десятичной арифметике, но дороже по памяти и CPU.

Выбор зависит от задачи: для метрик и ML хватит double с допуском, для налогов и счетов нужен BigDecimal с явным RoundingMode, для низкой latency - fixed-point на long.

Ошибка не в double или BigDecimal, а в выборе без понимания точности, округления и нагрузки. Подробнее - в новом переводе от команды Spring АйО.

Читать далее

Ближайшие события

Асинхронность NIO и Kotlin — а есть ли связь?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.5K

Асинхронность NIO и асинхронность Kotlin: попробуем разобраться какие идеи заложены и как совместно использовать то и другое.

А есть ли связь?

Группировка ошибок вручную и автоматически, или чем тестировщику занять своё время

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.6K

40-60% времени современных QA-команд тратится на диагностику сбоев в тестах. Эта проблема настолько серьёзна, что сейчас активно разрабатываются практики сокращения размеров тестовых сюит, Майкрософт рекомендует при триаже не разбирать каждое падение по отдельности, а кое-кто советует «стохастический подход» к разбору ошибок, при котором команды не тратят время на разбор каждого падения.

Если всё больше голосов говорят нам о том, что разбирать падения вручную становится слишком дорого, стоит задуматься об автоматизации. В этой статье я возьму тестовую сюиту средних размеров, попробую вначале пройти по результатам руками, а потом применю простейшее средство автоматизации: группировку результатов.

Читать далее

Продолжаем рассказывать о создании продолжения DogPlanner…

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.3K

Ну что же…, на дворе 2026 год, первый DogPlanner живёт своей жизнью, доступен на многих площадках мобильных приложений, мы о нём много писали в соцсетях и различных блогах. С тех пор как мы сделали его, а опубликовали мы его аж в июне 2020 года, вы прислали нам много различных идей по его доработке, написали множество отзывов, а также мы узнали о приличном количестве проблемных мест по его функциональности и содержанию, и всё это было абсолютно заслуженно! Хотим сказать вам огромное спасибо за всю обратную связь, которую мы получили, и получаем до сих пор от вас! Но давайте снова вернёмся к критике…

Читать далее

Event Sourcing в платформе данных: миграция с JSON на Avro

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели10K

Иногда legacy живёт в компании годами не потому, что он плох, а потому что «работает — не трогай». Но однажды появляется триггер, который заставляет переосмыслить подход. В нашем случае таким триггером стала миграция на Kafka 4.0.

Привет! Меня зовут Роман, я инженер данных в компании CDEK и занимаюсь разработкой платформы данных и внедрением self‑service инструментов. В этой статье расскажу, как мы обеспечиваем Event Sourcing подход в платформе больших данных, с какой болью столкнулись при переходе на Kafka 4.0 и как решились отказаться от JSON‑формата.

Читать далее

Сквозные идентификаторы в логировании

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.6K

У нас есть процессы на бекенде, растянутые во времени. Для разбора инцидентов, сбоев и прочего мы прокидываем сквозные идентификаторы в логи. Мы можем увидеть логи конкретного процесса просто отфильтровав их по нужному значению поля такого идентификатора в логах. Таким образом мы видим все запросы, сообщения в кафку, информационные сообщения, если они случились в рамках нужного нам процесса, даже если он (процесс) был растянут во времени на несколько недель.

Это решение я упаковал open-source библиотеку, которой может воспользоваться каждый из вас после прочтения статьи.

Читать далее

Как желание быстрее читать чужой код превратилось в войну с недетерминизмом LLM

Уровень сложностиПростой
Время на прочтение25 мин
Охват и читатели9.3K

Началось всё примерно так. Я сидел над своим проектом: пока работал, общался по нему с нейросетками и параллельно искал в интернете разную информацию, которая могла бы пригодиться. И вот тогда у меня впервые начала закладываться мысль, что я хотел бы читать код быстрее. Что мне не нравится, сколько времени на это уходит.

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

Вторая — то, что мне приходилось тратить время, объясняя друзьям, как устроен мой код. Мне не нравилось, что я говорю отрывками, зависаю, не могу связать пары слов. Короче, тяжело донести мысль: сам прекрасно знаю, как оно работает, а нормально, быстро и чётко объяснить не могу.

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

Читать далее

Prepared Statement и Java: как не облажаться на собеседовании

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

На PreparedStatement обычно заканчивается вводный курс по JDBC / PostgreSQL. Все довольно просто, пока не задумываешься: а работает ли оно как надо в моем крутом инновационном приложении?

Дальше интереснее: как PostgreSQL выбирает custom или generic plan? кто именно кэширует statements? как с этим дружат ORM и внешние пулы?

По закону подлости все выясняется на собеседовании, в контексте “начальных банальных вопросов по БД”. Разберемся в подробностях и закроем эту тему

Читать далее