Обновить
256K+

Java *

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

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

Сокращение ручной работы на примере Spring Boot-проекта: OpenAPI generator, QueryDsl, OpenAI

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

Привет, Хабр! Меня зовут Александр, я Java-разработчик в GlowByte. Работаю в практике управления рисками и комплаенс (Risk & Compliance). Хочу поделиться своим опытом и в целом рассказать о том, чем мы здесь занимаемся. А занимаемся мы автоматизацией систем управления рисками – от AML (противодействие легализации доходов) и операционных рисков до коллекшна (взыскание просроченной задолженности) и систем принятия решений.

Моё направление – как раз последнее: системы принятия решений (СПР). Если коротко, мы автоматизируем стратегии, где нужно в реальном времени перерабатывать кучу входных параметров, учитывать множество факторов и выдавать сложные, комплексные решения. Типичные примеры: оценка риска, предстраховые проверки, системы мониторинга, расчет резервов, расчет комиссионных вознаграждений страховым агентам и многое другое.

Чем это интересно? На выходе – не просто «да/нет», а полноценное управляемое бизнес-правило, которое можно быстро менять без переписывания кода.

В этой статье хочу поделиться опытом разработки backend API на Spring Boot-проекте, где нам пришлось много работать с OpenAPI-спецификацией, динамическими запросами и тестированием бизнес-логики.

Читать далее

Новости

Пишем Java-скрипт, который собирает проект в один файл для контекста в чат DeepSeek или другие LLM

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

У нейросетей есть ограничение на количество символов в чате или на число запросов. И бывает так, что лимит уже закончился, а разработка проекта — нет.

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

Отдельная проблема — DeepSeek не всегда понимает ссылки на репозиторий и не смотрит код по ним так, как хотелось бы. Зато если дать ему сам контекст кода текстом, он включает его в анализ.

Читать далее

Гайд: как системному аналитику построить доменную модель для Java-микросервисов

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

Системный аналитик пишет User Story, рисует BPMN, описывает API — а через месяц архитектор перекраивает всё, потому что «это не ложится на DDD». Знакомо?

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

Читать далее

Шестнадцатеричная запись чисел с плавающей точкой в C++, Java, Go

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

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

В этой коротенькой заметке-памятке - взглянем на формат записи (он может показаться не вполне логичным и не вполне шестнадцатеричным, вопреки названию) и поддержку стандарта разными языками. Основным же применением для этой "фичи" может быть, наверное - троллить друг друга на собеседованиях :)

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

0xBEDA.BEDAp0

Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI

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

Меня зовут Игорь Симаков, работаю engineering manager’ом и руковожу командами разработки

На одном из наших сервисов, который работает с XLSX-файлами, прилетел production-алерт на высокое потребление памяти. Стандартный P3, обычно решается рестартом. Пошёл смотреть поды и нашёл проблему, к памяти отношения не имеющую, но представляющую больший риск, чем сам алерт. Об этом и расскажу ниже: чем «утечка диска» отличается от «утечки памяти», как мы наткнулись на грабли в Apache POI и как закрыли их на уровне архитектуры

Читать далее

Java — быстрая. Ваш код может таким не быть

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

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

- Конкатенация строк в циклах

- String.format() в горячем коде

- Автобоксинг 

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

Если вы пишете на Java и у вас всё вроде работает, но под нагрузкой сервисы начинают задыхаться, в новом переводе от команды Spring АйО рассмотрим конкретные паттерны, на которые стоит посмотреть.

Читать далее

Entaxy ION + OPC UA: два способа получить данные с промышленного оборудования

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

На одном из проектов по интеграции промышленного оборудования с корпоративными системами встал вопрос: как читать данные с датчиков в реальном времени и при этом сохранить совместимость с REST API внешних потребителей? Решение нашлось в связке Entaxy ION + OPC UA — два разных подхода к одной задаче, которые отлично дополняют друг друга.

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

Читать далее

C# мне нравится больше Java. Но в банковском enterprise мне всё равно понадобилась Java

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

C# я до сих пор считаю одним из самых удобных языков для backend разработки. В нём много вещей к которым быстро привыкаешь: свойства, LINQ, async/await, generics без type erasure, хороший tooling и понятная модель разработки.

Но банковский enterprise редко выбирает стек только по удобству языка. На практике важны не только синтаксис и экосистема, но и инфраструктура, сопровождение, безопасность, регламенты, legacy, найм, CI/CD, требования к платформам и долгосрочная стратегия организации.

Так я оказался в ситуации где C# мне субъективно нравится больше, но Java объективно стала полезнее в конкретном банковском контуре.

Эта статья не про холивар C# vs Java. Это попытка спокойно разобрать почему backend разработчику в enterprise иногда приходится расширять стек, даже если текущий язык его полностью устраивает.

Почему в банке выбирают стек не только по

Кейс. Zero Bug Policy: как мы снизили бэклог багов в 4 раза за месяц

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

Баги — неизбежная часть разработки. 

В этой статье расскажу наш опыт: как мы внедрили Zero Bug Policy в нашем стартапе (B2B fintech) и за месяц сократили backlog с 77 до 18 багов. А главное — как это изменило культуру и отношения с клиентами.

Прочитать про кейс

Как настроить observability в Spring Boot 3

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

Микросервис работает, но иногда тормозит — и вы не знаете, где копать. Логи чистые, метрики в норме, а пользователи жалуются. Знакомо?

В статье разбираем, как настроить полноценную observability в Spring Boot 3 за 7 шагов: метрики (Prometheus), трейсинг (Zipkin), логи (Loki) и единый дашборд в Grafana. Без магии, с кодом и проверками.

Читать далее

Книга: «Современный Java Concurrency. Глубокое погружение в Virtual Threads, Structured Concurrency и Scoped Values»

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

Привет, Хаброжители! Добро пожаловать в будущее Java! Изучите главное новшество Java 21 — виртуальные потоки. Помните, как приходилось бороться с высокой стоимостью создания потоков, сталкиваться с ограничениями масштабируемости и трудностями при попытке достичь высокой пропускной способности? Те дни прошли! Это практическое руководство проведет вас от Java 1.0 до прорывных достижений Project Loom.

Читать далее

Java 21 в стиле «клятый энтерпрайз» на одноплатном компьютере возрастом 13 лет

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

Можно ли успешно эксплуатировать Java-приложение на Raspberry Pi Model B? А если Java — 21‑я, а Spring Boot, на котором основано приложение — версии 4.0.5? Когда сборка «автомагически» оформляет .jar-файл размером под 40 мегабайт, а у «Малинки» тех мегабайт всего 512, и не забываем про операционную систему и рантайм Java. И как «до такого» [соотношения имеющихся и используемых ресурсов] можно «докатиться»?

TL;DR;-версия: можно. Если допустимо время старта около 5-и минут и расход примерно 40% доступной оперативной памяти, то приложение может работать в режиме 24/7 месяцами, обеспечивая вполне достойное (с учётом производительности «Малинки») время отклика. А «докатиться» оказалось легко, однажды «поскользнувшись» на DIY-рецептах из Интернета, и в качестве альтернативы опробовав методологию «клятого энтерпрайза» в домашнем pet-проекте.

«Энтерпрайзим Малинку» с контролем JMeter

Java и постквантовый TLS

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

В JDK 27 появится JEP 527: гибридный post-quantum key exchange для TLS 1.3. Разбираем, что меняется в JSSE, зачем нужен X25519MLKEM768 и какие проблемы могут всплыть при миграции.

А ты готов к квантовым атакам ?

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

Что сейчас с Project Loom? Примеры и код

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

Практика Project Loom: как включить preview Structured Concurrency в javac, Maven и Gradle, как использовать ScopedValue для request context и StructuredTaskScope для параллельных вызовов, joiner’ы, timeout и связка обеих фич в одном примере. Примеры под JDK 25+

Что же с Project Loom?

Соль и перец в безопасности паролей

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

Безопасность данных сегодня стала главным приоритетом для любого веб-ресурса. Базовым стандартом защиты учетных записей является хеширование паролей. Этот процесс превращает конфиденциальные символы в необратимый код. Без него утечка базы данных мгновенно скомпрометирует пользователей.

Однако обычного хеширования недостаточно из-за угрозы быстрых хакерских атак. Для защиты разработчики применяют «соль» (salt) — случайные данные, добавляемые к паролю. Минус соли в том, что она хранится рядом с хешем и не спасает от мощного перебора. Тогда на помощь приходит «перец» (pepper), скрытый в коде сервера. Его главная проблема — высокий риск потерять доступ ко всем аккаунтам при компрометации самого секретного ключа.

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

Читать далее

Python в enterprise: момент, когда пора открыть Java не только ради собеседований

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

Интернет любит вечные войны: Linux против Windows, Vim против IDE, tabs против spaces. И, конечно, Python против Java. Одни говорят: «Python уже готов для enterprise». Другие считают RPS и стоимость инфраструктуры.

Под катом — история реального выбора для аэропортовой системы AWOS: почему строгая типизация, бинарная переносимость и современный GC перевесили лаконичность — и что стоит попробовать Python-разработчику.

Читать далее

Что сейчас с Project Loom? Structured Concurrency: preview №7

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

Project Loom меняет привычную модель конкурентности в Java: virtual threads делают потоки дешевле, Scoped Values дают аккуратную передачу контекста, а Structured Concurrency помогает управлять жизненным циклом связанных задач. Разбираем актуальное состояние Loom в JDK 25-27 и что из этого уже можно использовать.

Читать далее

«Где новые фичи?» — Как AI-миграция легаси вернет IT-бюджет бизнесу

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

Наверное, каждый, кто занимался эксплуатацией и развитием корпоративных систем, знает эту бесконечную претензию от бизнеса: «Мы столько тратим на IT – а результата ноль. Новых продуктов нет. Или они появляются мучительно медленно». И бизнес по-своему прав. Если из каждого рубля, потраченного на IT, менее 20 копеек уходит на то, что видит клиент – скорость появления новых продуктов будет именно такой, какая она есть - неудовлетворительной.

Читать далее

Сможете ли вы спроектировать Maven‑монорепозиторий для 5 микросервисов?

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

В этой статье мы разберём реальную задачу на проектирование Maven Multi‑Module: от циклических зависимостей и неправильного использования spring‑boot‑maven‑plugin до смешения ролей агрегатора и родителя. Затем соберём эталонную структуру по лучшим практикам Spring Cloud и Netflix, добавим CI/CD‑диаграмму и научимся запускать сервис локально без Eureka и RabbitMQ.

Найти ошибки

История одного // todo, который год ждал своего часа

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

// todo: тут N+1 на invoice — надо переделать через entity graph.

Этот комментарий висел в коде полтора года. Все, кто заходил в файл, его видели. Никто не завёл тикет. В пятницу вечером он сработал — и забрал с собой три пода, 30% запросов на критичной ручке и моё спокойствие на выходные.

Читать далее
1
23 ...