Как стать автором
Поиск
Написать публикацию
Обновить
176.16

Java *

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

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

Обработка исключений в рабочих процессах с использованием Flowable

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров951

Исключения являются частью любого процесса. Разработчики, создающие бизнес-процессы, должны уметь обрабатывать исключения в бизнес-кейсе, чтобы гарантировать, что сам процесс устойчив и может продолжаться после возникновения сбоев. Логика обработки исключений различается в зависимости от вашей задачи и инструментов, которые у вас есть в распоряжении. В этой заметке я попытался определить различные методы обработки исключений, используя язык паттернов. Каждый паттерн следует определённой структуре, называемой Контекст (общая ситуация, в которой проблема повторяется), Проблема (формулировка), Условия (условия, при которых можно рекомендовать предложенные решения) и Решение. Итак, давайте приступим.

Читать далее

Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 3

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

Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка “Performance oriented Spring Data JPA & Hibernate”, в котором на наглядных примерах рассказывается, как существенно нарастить производительность приложения, оптимизировав его взаимодействие с БД. 

Доклад будет опубликован тремя частями. В первой части было рассказано об оптимизации управления соединениями с базой данных. Во второй части мы посмотрели на то, как оптимизировать код и настройки Spring Data и Hibernate, чтобы минимизировать количество отправляемых в базу данных SQL запросов. Третья часть посвящена обзору инструментов, которые могут помочь разработчику правильно организовать работу по регулярной оптимизации производительности приложений, в том числе при работе командой.

Читать далее

Тест-кейсы на автопилоте: как Spring AI и Atlassian MCP упрощают жизнь тестировщика

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

Тест-кейсы перестанут быть твоей головной болью и болью твоей команды. Нужно просто перестать их писать. Путь от спецификации до коллекции в тест-менеджере может быть пройден за минуту. Достаточно принимать по одной чайной ложке...

Или попытаться воспроизвести цепочку задач с помощью AI: модель легким движением промпта превращается в QA, нарезает спеку на чанки, отдавая тебе список из структурированных данных, которые ты шлешь далее в свой тест-менеджер.

Пишу о своих изысканиях в области автоматизации рутинных процессов с помощью Spring AI, Atlassian MCP, Qdrant, OpenAI, Allure TestOps.

Читать далее

Spring AI: Model Context Protocol

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

Model Context Protocol (MCP) — это унифицированный протокол взаимодействия между большими языковыми моделями (LLM) и внешними источниками данных и инструментами. Spring AI предоставляет очень простой декларативный подход для добавления любых инструментов в контекст LLM с помощью MCP. Мы рассмотрим несколько простых примеров по созданию MCP-клиента и MCP-сервера.

Читать далее

Логирование в конвейере дебетовых карт: как мы сделали его удобным для себя

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров1.2K

Статья о том, как мы улучшали логи внедрением сквозных идентификаторов и не только. Делали это для того, чтобы упростить и ускорить разбор возникающих ошибок. Это в разы сократило время разбора.

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

Читать далее

Лучшие практики реализации equals() и hashCode() на примере JPA сущности

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

Всем привет!
Рано или поздно при работе с объектами и хэш-коллекциями мы сталкиваемся с вопросами: «Где моя сущность?» или «Почему они не равны?».
В контексте работы с важными данными эти вопросы становится еще более актуальными.
А самое что страшное, что нет единого ответа на вопрос: «А как сделать мне в моём проекте?».

Читать далее

И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup

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

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

Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали.

В конце мая мы провели второй Java Rock Star Meetup при поддержке сообщества Spring АЙО в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады!

Под катом — записи докладов, фото, видео и как это было.

Читать далее

Анатомия неудачного микробенчмарка

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров1K

В новом переводе от команды Spring АйО подробно разбираются концептуальные, методологические и технические ошибки, на которые легко наткнуться при попытке протестировать такие механизмы, как synchronized и ReentrantLock. Автор объясняет, почему микробенчмарки часто измеряют не то, что вы думаете, и почему для получения осмысленных результатов лучше использовать макротесты или полагаться на экспертов.

Читать далее

Путеводитель по Ktor JWT auth на стороне сервера

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.1K

Документация Ktor по server-jwt неполна. Если необходимо сделать что-то за рамками «Hello world», придется лезть в исходники и городить костыли. Какой-то консистентности и предсказуемости ждать не стоит, возможно, не обошлось без заговорщиков.

Статья покроет необходимую базу для работы с JWT и убережет от множества подводных камней.

Читать далее

Интеграция ChatGPT в Java: распознаём автомобиль по фото

Время на прочтение5 мин
Количество просмотров2.2K

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

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

В этой статье я поделюсь опытом интеграции ChatGPT Vision API в программу Java, которую потенциально можно использовать для Android приложения. В рамках проекта реализован функционал, позволяющий определить параметры автомобиля по его изображению: марку, модель, стоимость, год выпуска и т. д.

Читать далее

Как мы с Camunda 8 переезжали

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

Привет, Хабр! Я Вячеслав Тихонов, разработчик в команде, которая занимается бэкендовским движком для кредитных продуктов. Мы делаем так, чтобы правильно начислялись проценты по кредитам, переходили деньги по счетам, работали досрочные погашения и так далее.

Как только мы запустили запустили использование Camunda 8 в проде, произошла смена лицензии на ее серверную часть. Пришлось нам мигрировать на Temporal. Рассказываю, какие изначальные архитектурные решения помогли нам это сделать быстро и без проблем.

Читать далее

Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 2

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров4.7K

Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка “Performance oriented Spring Data JPA & Hibernate”, в котором на наглядных примерах рассказывается, как существенно нарастить производительность приложения, оптимизировав его взаимодействие с БД. 

Доклад будет опубликован тремя частями. В первой части было рассказано об оптимизации управления подключениями к базе данных. Во второй части мы посмотрим на то, как оптимизировать код и настройки Spring Data и Hibernate, чтобы минимизировать количество отправляемых в базу данных SQL запросов. 

Читать далее

Cборка Java-проектов в GitFlic Kubernetes-агентом

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров800

В последнее время, многие общепризнанные в мире сервисы оказались недоступны для разработчиков из России и им приходится искать аналоги. Одной из таких альтернатив для GitHub является сервис GitFlic. Это такой же хостинг исходных кодов, который, кроме того, предоставляет возможность использовать в работе реестры артефактов и пакетов для различных технологий. В нашем случае это можно засчитать за УТП (Уникальное торговое предложение), ведь не многие разработчики знают о сторонних registry-сервисах продолжая пользоваться DockerHub, который работает “по умолчанию”. Кроме того, развертывание собственного такого сервиса, соответствующего всем требованиям корпоративной безопасности, может потребовать немалых ресурсов.  

Чтобы исходный код стал артефактом, т. е. ресурсом, готовым к развертыванию в тестовых или продуктивных средах без лишней ручной работы желательно иметь некоторый пайплайн, т. е. сборочный конвейер, который выполнит все преобразования. GitFlic не предоставляет агентов пригодных для сборки контейнерных образов, но позволяет подключать собственные. В данной статье мы настроим сборочный пайплайн для Java разработки на фреймворке Jmix с использованием агента, работающего в кластере Kubernetes.  

Читать далее

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

Как обобрать дерево в несколько потоков?

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

Всем привет, меня зовут Антон, я Java‑разработчик в Сбере, подразделение SberWorks. Я разрабатываю Giga IDE — новую IDE на основе IntelliJ IDEA. В ходе работы столкнулся с тем, что при открытии проектов происходит сканирование всех папок для поиска тех или иных файлов. Если обобщить, то задача сводится к обходу дерева. Я решил подробнее рассмотреть эту тему, причём с прицелом на многопоточность.

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

Читать далее

Как работает @Lazy в Spring — и когда он полезен

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.3K

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

Если вы хоть раз писали хоть что‑то сложнее REST‑контроллера в Spring, вы наверняка ловили больную ситуацию: два бина зависят друг от друга, инициализация идёт по кругу, и вот он — BeanCurrentlyInCreationException. И если в этот момент вы вспомнили про @Lazy — вы молодцы.

Сегодня я расскажу, как @Lazy может быть полезен, где он только делает вид, что спасает, и какие альтернативы работают лучше.

Читать далее

Как спроектировать потокобезопасный класс в Java

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров5.2K

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

Читать далее

@TestInstance(PER_CLASS) в JUnit 5: как и зачем переопределять жизненный цикл

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров815

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

Сегодня рассмотрим JUnit 5 и разберёмся, чем дышит аннотация @TestInstance(PER_CLASS), — зачем переопределять жизненный цикл тестового инстанса и когда это может помочь.

Читать далее

Карты, Java, 2 null'а. XMage edition

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.2K

Компьютерная игра на Java — вещь довольно редкая, но всегда интересная. Поэтому мы не упустили возможность проверить статическим анализатором проект XMage и поделиться результатами. Посмотрим, что нашёл PVS-Studio в исходном коде проекта.

Читать далее

Шардируй меня полностью

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

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

Фотографировать

Преодоление сложности в самом сердце Анемичной Модели

Уровень сложностиСредний
Время на прочтение39 мин
Количество просмотров1.5K

Доброго времени суток, Хабр!

Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

Читать далее

Вклад авторов