Обновить
240.07

Java *

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

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

Можно просто так взять и добавить поддержку проверки на Null

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

Команда Spring АйО подготовила перевод статьи о том, как JSpecify наконец превращается из «ещё одного стандарта для библиотек» в рабочую основу null-безопасности для всей Java-экосистемы. IntelliJ IDEA 2025.3 впервые согласовала свои проверки с NullAway, а Spring и JetBrains синхронизировали suppressions и поведение анализаторов. Итог — единый, предсказуемый null-анализ без сотен ложных предупреждений.

Читать далее

Новости

Как мы оптимизировали тестирование с помощью API-сервисов

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

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

Привет, Хабр! Меня зовут Владимир, я SDET-специалист в компании SimbirSoft. В этой статье хочу рассказать, как мы решали проблемы тестирования не традиционным написанием автотестов, а созданием собственных REST-сервисов: сервиса генерации данных и сервиса, ассистирующего тестам.

Читать далее 🦾

Коротко про масштабирование UI-автотестов в Java

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

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

В этой статье рассмотрим, как масштабировать UI-автотесты с помощью Java.

Если у вас десяток тестов, проблем не возникнет, они бегают шустро и всем довольны. Но представьте абстрактный проект интернет-банка или маркетплейса, функциональность растёт, количество автотестов идёт на сотни (а то и тысячи). Последовательный запуск такой тестовой свиты может занять довольно большое время. Каждый релиз начинает тормозиться ожиданием результатов автотестов.

Масштабирование тестов решает эту проблему: запускаем тесты параллельно, сокращаем время прогона и получаем быстрый фидбэк о качестве.

Читать далее

Как я внедрил агента в бекенд-прод для решения рутинных задач

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

TL;DR

Мы собрали рабочего ИИ‑агента‑разработчика, который сам анализирует задачи в Jira, уточняет детали, пишет код, запускает сборку, фиксит ошибки, создаёт MR в GitLab и отправляет его человеку на ревью. Он работает параллельно на нескольких задачах, благодаря чему суммарное время выполнения пачки задач падает почти втрое. Команда избавилась от рутины, а скорость разработки выросла без расширения штата.

Использовали: Ollama + Qwen3 Coder, PostgreSQL, Docker, GitLab/Jira API, систему строгих JSON‑действий.

Столкнулись с контекстом, «галлюцинациями», GPU и самовольными правками кода — всё решаемо архитектурой.

ИИ не заменяет разработчиков, он снимает тупую монотонную работу и экономит деньги.

Читать далее

Как прокачать проект на Java при помощи Rust

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

Практическое руководство по интеграции JNI + полный пример

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

Читать далее

Gradle configuration cache на примерах. Часть 1: поведение

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

Configuration cache должен был стать обязательным в Gradle 9, но требования, в итоге, смягчили. В любом случае, рано или поздно он станет обязательным и авторам плагинов придется его поддерживать.

Я не могу сказать что документация по кэшу плохая, но в ней очень мало практики: каждому разработчику приходится тратить время на эксперементы. Так вот, под катом те самые недостающие эксперименты - как работает gradle configuration cache на примерах.

Читать далее

AOT в Spring Data: минус магия, плюс скорость

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

Команда Spring АйО подготовила перевод статьи о том, как Spring Data тихо, но уверенно избавляется от «магии рантайма» и учит репозитории работать через AOT. Меньше скрытых прокси, больше прозрачного кода, быстрее старт сервисов. Кажется, это одно из самых крутых обновлений Spring за последние годы.

Читать далее

Не делайте рефакторинг как дядя Боб. Я вас умоляю

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

Несмотря на то, что книга «Чистый код» привнесла в наш лексикон прекрасный термин, она также снискала и дурную славу. Это руководство от 2008 года представляет собой сборник принципов и исследований, которые «дядя Боб» (Uncle Bob, то есть Роберт Мартин) выработал за годы программирования.

В итоге его практики переняли многие разработчики, одни из которых почитают их как святыни, а другие воспринимают, скорее, в качестве ориентиров, нежели строгих правил. Но, как бы вы к этому ни относились, сам дядя Боб смотрит на них не как на руководства. Он следует этим практикам всецело и очень редко допускает исключения.

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

Можно подумать...

Читать далее

Экстренный патч или как не получить «RCE по утрам»

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

Внимание, внимание, внимание!

Вышли экстренные патчи безопасности в релизах Axiom JDK 25.0.1, 21.0.9, 17.0.17, 11.0.29 и 8u472. Мы устранили четыре критические уязвимости в OpenJFX, уровень опасности которых — высокий и средний.

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

Читать далее

Создаём первый Minecraft мод и подробно разбираем Mixin. Просто и понятно

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

Данная статья посвящена тому как создать первый мод для Minecraft, а так же очень подробно разбирает многие аспекты библиотеки Mixin. Понятно и просто. После данной статьи можно изменить хоть 80% кода игры.

Читать далее

Многопоточность для самых маленьких. Виртуальные потоки. Часть 2

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

Всем привет!

Многопоточность в Java развивается очень быстро, а многие всё ещё ограничиваются обычными потоками и ключевым словом synchronized. Сегодня я хочу рассказать именно о виртуальных потоках: как с ними работать, почему они меняют подход к многопоточности и какие задачи решают лучше традиционных механизмов. Буду объяснять просто и понятно, чтобы материал был полезен как новичкам, которые только знакомятся с виртуальными потоками, так и опытным разработчикам, которые хотят понять современные практики и возможности Project Loom.

Читать далее

Как обрабатывать исключения в Java

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

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

В этой статье мы подробно рассмотрим иерархию исключений, их типы, лучшие практики обработки, а также распространенные антипаттерны. Чтобы статья была практико‑ориентированной, мы разберем реальные примеры кода, которые покажут, как правильно выбрасывать, обрабатывать и создавать собственные исключения.

Читать далее

Темпорал для начинающих

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

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

Изучить детальнее..

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

Как мы в MWS создали внутренний курс для Java-разработчиков. И что можем посоветовать, если вы тоже хотите

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

Привет, Хабр! На связи команда «МТС Аналитика»: техлид Саша Бобряков и ведущий разработчик Рома Захаров. Со дня на день мы в MWS запустим собственный комплексный курс по Java, который создали в рамках внутренней образовательной платформы МТС Тета. Он предназначен для внутренних разработчиков и поможет вырасти из уровня middle в senior. 

Зачем мы вообще его затеяли? Нам хотелось систематизировать «коллективный опыт» компании, выровнять грейды, чтобы мидл в условной команде X владел теми же навыками, что и мидл в команде Y, а еще — дать коллегам надежную базу, чтобы они росли в своем направлении. Работая над курсом, мы и сами многому научились. Например, выступать перед камерой, беспощадно отсекать избыточное, а еще — находить общий язык с дизайнерами (да, разрабам это не всегда дается легко).

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

Читать далее

Compo B2B Platform vs 1С-Битрикс Enterprise: особенности внедрения

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

Сегодня на рынке B2B/B2C‑платформ в России конкурируют два подхода. Яркие представители этих подходов, Compo B2B Platform, созданная по принципам headless‑commerce, ориентирована на модульность и микросервисный подход. С другой стороны — 1С‑Битрикс Enterprise, один из самых распространённых в России корпоративных продуктов для веб‑разработки, выросший из CMS‑системы и ставший полноценной платформой для e‑commerce и корпоративных порталов.

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

Читать далее

Ультимативный Spring-бульдозер на базе GigaIDE

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

Недавно вышел новый релиз GigaIDE, c момента прошлого релиза прошло значительное количество времени, а значит, команда создающая инструмент, скорее всего не сидела без дела, а неустанно штормила и реализовывала фичи. Завариваем чаю и пробуем. Тем более выход новой версии сопровождался новостями на различных медиа площадках и ребята обещают нам свой собственный маркетплейс.

Читать далее

От минут к секундам, от ClickHouse к StarRocks: путь к real‑time в Hello

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

Кейс Hello: миграция 100+ млрд строк с ClickHouse на StarRocks. Как ускорить аналитику в 5 раз, снизить расходы на инфраструктуру на 80% и построить real-time DWH. Разбор архитектуры, самописных инструментов валидации и подводных камней перехода.

Читать далее

О современной разработке. Часть 1: Моки — это технический долг

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

Никак не могу оставить в прошлом, одну историю, произошедшую со мной больше 7 лет назад.

На тот момент я, еще студент последнего курса универа, только получил свою первую работу в IT... Как сейчас помню свои эмоции. Наконец-то, спустя годы подготовок и отказов, вот, наконец получаешь свойпервый «настоящий» проект. Осмотревшись по сторонам, понимаю, что кругом меня не то что других джунов нет, но даже мидлов. Сплошные синьоры и лиды, как тогда казалось — грозные дядьки, с большим опытом... Ну ничего, сейчас я им покажу, что такое «молодая гвардия» 😂.

Получаю компьютер, креды для доступа, мне подробнее рассказывают про проект, присылают ссылки на минимальный набор сервисов, что нужно будет локально поднять для работы и отправляют настраивать окружение. В первый же день я сломал заботливо предустановленную мне убунту 😂 (удалил «не ту» версию питона, которая, как выяснилась, очень нужна), ну да ладно, мелочи, с кем не бывает?

Установил минт, начал настраивать IDE, окружение, забрал себе нужные сервисы, вроде все хорошо, НО в одном из сервисов стабильно падает один и тот же тест. Запускаю отдельно — все хорошо и стабильно. Запускаю через сборщик (mvn test) — падение. Пытаюсь разобраться, что происходит — ничего не понятно. Тест падает из‑за мока, которого вообще нет в этом тестовом сценарии. Больше того, смущает ситуация, что ни на ci, ни у кого из коллег такого не происходит. Тест стабилен, да и в нем не меняли ничего уже довольно давно. Вывод: проблема на моей стороне и разбираться мне с ней самому.

Читать далее

Java. Многопоточность для самых маленьких. Часть 1

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

Всем привет!

Многопоточность в Java не стоит на месте, а многие до сих пор используют только synchronized и создают потоки через new Thread(). С этого дня я запускаю серию уроков по современной многопоточности: как её правильно строить, в чём преимущества новых подходов по сравнению со старыми и что из классики всё ещё стоит использовать. Постараюсь объяснять максимально просто и наглядно, чтобы уроки были полезны и стажёрам, которые только начинают разбираться в теме, и опытным разработчикам, которым интересно узнать современный стиль работы с потоками.

Поехали!

Читать далее

KRepo: Spring Data для Ktor — без Spring и без боли

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

KRepo: Никаких имплементаций или инъекций. Под капотом — динамический прокси, кэширование метаданных и независимость от фреймворков: плагины под Exposed, JDBC или MongoDB реализуются отдельно.

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

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