Обновить
256K+

Java *

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

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

Тестирование процессов: как подружить Camunda и Cucumber

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

Всем привет! Меня зовут Елена Пилюгина, я ведущий разработчик отдела автоматизации бизнес процессов складской логистики в Magnit Tech.

В этой статье я расскажу про свой опыт покрытия тестами процессов в приложении на Spring Boot с Camunda 7. Покажу, как можно создать конструктор для тестирования процессов, варианты тестирования процессов в динамике и статике, поделюсь конкретными примерами кода, покажу преимущества BDD тестирования. Конечно, в рамках одной статьи невозможно охватить все технические аспекты, но я постараюсь показать выбранный мной подход к тестированию. Также буду рада, если заодно получится показать, что создание тестов может быть увлекательным и творческим процессом.

Читать далее

От запахов к стабильности: рефакторим тесты на JUnit + Selenide

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

На практике знание того, как НЕ писать тесты, может быть столь же важно, как и знание того, как их писать. В интернете можно найти множество материалов про “тесты с запашком”; в частности, им посвящено несколько очень полезных глав в книге Джерарда Месароша о паттернах в xUnit.

Нам показалось интересным подойти к этой проблеме не со стороны теории, а со стороны практики: какие частые ошибки можно встретить в тестах, как их исправлять, и почему именно тесты нужно писать так, а не иначе? Мы продемонстрируем всё это для стека JUnit + Selenide. 

Читать далее

Путеводитель для начинающих по сборщику мусора Shenandoah

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

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

Читать далее

Российские Java/Spring-разработчики: какие IDE выбирают сегодня

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

Хотя большинство Java-разработчиков в России по-прежнему используют разные вариации IntelliJ IDEA, постепенно начинают появляться и новые альтернативы. Одна из них — OpenIDE, российская среда разработки на базе IntelliJ Platform. Мы уже писали о проекте, и он для нас особенно важен: Axiom JDK входит в консорциум разработки OpenIDE  вместе с компаниями «Группа Астра» и Haulmont.

Проект стартовал меньше года назад и уже заметен на рынке Java-инструментов. Чтобы подтвердить это цифрами, делимся результатами опроса Spring АйО среди Java/Spring-разработчиков об используемых IDE в 2025 году.

Читать далее

О подводных камнях виртуальных потоков в Java

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

Виртуальные потоки (JEP 425) являются мощным инструментом для построения приложений, которые в теории могут обслуживать десятки тысяч запросов в секунду. Однако это в теории. Практика же может выглядеть совершенно иначе. Данная статья рассказывает о нескольких подводных камнях, из-за которых виртуальные потоки могут не сработать, а сделать даже хуже.

Читать далее

Как GC останавливает весь мир, чтобы вынести мусор

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

Как GC останавливает весь "мир", чтобы "вынести мусор"!

Концептуальное описание работы GC в Ваших приложениях.

Узнать о сборке мусора чуть больше

JVM: Барьеры, которые подходят любому GC

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

В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные GC-барьеры мешают гибкому выбору сборщика мусора.

Статья содержит интересное решение — GC-независимые барьеры загрузки, которые можно «пропатчить» в рантайме под конкретный GC, обеспечивая совместимость без переписывания кода.

Читать далее

Утилита Find и регулярные выражения

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

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

Регулярки освоить нетрудно. Буквально за пару часов можно получить почти средний уровень владения и научиться читать и писать выражения для поиска ip-адресов, e-mail, html-тегов, телефонных номеров, дат и прочих несложных конструкций. Я думаю, все это вам знакомо, но на всякий случай в конце статьи я добавил несколько ссылок для изучения.

Я уже прошел «курс молодого бойца» по регуляркам, написал свою, вставил в find, и она не сработала. Но пойдем по порядку.

Читать далее

Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом

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

Привет! Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.

Читать далее

Оптимизация производительности запросов в OLAP‑СУБД: цели, методы и практика

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

Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.

Читать далее

Как мы внедряли Dynatrace в банке для мониторинга Kafka, БД и Java/C++ сервисов

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

Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».

Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.

Читать далее

Почему памятники надо ставить тем, кто автоматизирует MS Word

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

DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.

Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.

Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.

Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.

Внутри статьи — моя история создания этой библиотеки.

Читать далее

Как мы помогли Альфа-Банку перевести CRM в отделениях на российские Java-контейнеры

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

Перевести CRM-систему с тысячами пользователей на полностью российский стек — звучит как вызов? Мы тоже так подумали. Но теперь можем точно сказать: это возможно, и более того — это работает.

Команда Альфа-Банка с нашей поддержкой перенесла CRM-платформу, которую используют сотрудники в отделениях по всей стране, на Axiom JDK и контейнеризовала её с помощью Axiom Runtime Container.

Высоконагруженная система ежедневно обслуживает более 20 000 сотрудников банка, работает в сотнях отделений — и всё это без внешних зависимостей и с полной технологической автономией.

Читать далее

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

Тим Маккиннон, Стив Фриман, Филип Крейг «Эндотестирование: юнит-тестирование с мок-объектами»

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

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

Читать далее

Что нового в Gradle 9.0.0?

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

В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.

Читать далее

Кондотьер Кода

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

Есть такой термин — лейтенант военного времени. Если коротко, то «теории мало, а практики много». Вот и я, к примеру, из таких недоучек практиков. Программирование для меня было вторичным умением, а не основным, скорее хобби и дополнение к основному занятию. Я не собирался быть программистом но в итоге стал им.

Читать далее

Обмен событиями распределённого приложения на Java

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

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

Это доставка событий через БД, в которой хранится состояние распределённого приложения.

Читать далее

Нейросети в Spring-разработке: убираем рутину, а не интеллект

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

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

Читать далее

Чем хорош Postgres 18?

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

PostgreSQL 18 вот-вот выйдет, и это не просто минорное обновление, а настоящий прорыв для разработчиков и администраторов БД. В новом переводе от команды Spring АйО рассмотрим ключевые новинки — асинхронный I/O для ускорения чтения, поддержка UUID версии 7 с улучшенной сортировкой, skip scans в B-tree индексах, виртуальные вычисляемые столбцы и даже OAUTH 2.0 для аутентификации. Всё это делает Postgres ещё более быстрым, гибким и современным.

Читать далее

Андроид всё еще не готов к RAW-видео

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

Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое «смогло». Но не стоит спешить, друзья!

Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW‑видео предпочитают не говорить.

Читать далее