Все потоки
Поиск
Написать публикацию
Обновить
215.36

Java *

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

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

Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее

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

С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования.

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

Читать далее

Новости

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

Чем хорош Postgres 18?

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

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

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

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