Обновить
128K+

Java *

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

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

2 рубля за сказку с озвучкой: как я считал юнит‑экономику AI‑продукта на коленке

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

Идея была простая: сделать что‑то небольшое в свободное время, что может превратится в параллельный источник дохода, не требуя от меня много личных часов. Остановился на Telegram‑боте, который генерирует персонализированные сказки на ночь: родитель задаёт участников, обстановку, тему — бот пишет сказку, при желании озвучивает.

Читать далее

Новости

Не подавать холодным! Прогрев JVM перед запуском трафика

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

Всем привет! Меня зовут Александр, я бэкенд-инженер в Банки.ру.

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

Дальше расскажу, что мы видели на графиках, какие версии проверили и отбросили, что происходит внутри JVM в первые минуты жизни процесса и что мы сделали.

Читать далее

Как мониторить Java-приложения: метрики, алерты и правило 80/20

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

Хороший мониторинг помогает быстро понять, что происходит с приложением и куда смотреть в первую очередь. Для этого не нужно пытаться измерить всё: базовый набор технических метрик покрывает большинство типовых проблем, а бизнес-метрики, SLO и анализ аномалий помогают заранее замечать нетипичные отклонения. В Календаре мы называем этот подход правилом 80/20.

Всем привет! Меня зовут Настя, я бэкенд-разработчик в Яндекс 360 и отвечаю за надёжность Календаря. В этой статье я покажу, какие метрики стоит взять за основу, как выбирать полезные алерты и чем дополнять базовый набор для оставшихся 20%.

Читать далее

Приложение простояло 918 мс, а сборщик мусора отработал за одну: разбираемся, куда ушло остальное

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

Секундная пауза в Java‑приложении легко выглядит как проблема сборщика мусора, хотя сам GC может отработать за миллисекунду.

Разберём, как safepoint’ы заставляют JVM ждать отдельные потоки, почему профилировщик способен указать не туда и какими инструментами найти реального виновника.

Читать далее

Анатомия VDD: Как я нашел RCE в форке Telegram, а Google Security не увидел «ничего вредоносного»

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

TL;DR Внутри альтернативного клиента ExteraGram работает внутренняя система динамического обновления компонентов. Через неё авторы могут в любой момент загрузить на ваш телефон код прямо из Telegram-канала, обойти окно установки (can_not_skip) и выполнить его в едином адресном пространстве приложения (с его UID и полными правами). В исследованной цепочке загрузки я не обнаружил проверки цифровой подписи. При компрометации канала или инфраструктуры обновлений это создаёт возможность массовой доставки вредоносного кода пользователям.

Как всё началось Был обычный вечер, делать было откровенно нечего. Я сам сидел на ExteraGram, и вдруг стало интересно - а как оно вообще внутри устроено? (Спойлер: после того, что я там увидел, я его снес).

Читать далее

Агент написал Джеймикс, тоже плохой

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

Часть 2 из 2. В первой части был холивар про самодельные фреймворки. Здесь - цифры: мы дали ИИ-агенту построить одно и то же приложение на Джеймиксе и на голом Spring и честно сравнили результаты.

Читать далее

Почему мы написали свою библиотеку оркестрации ИИ агентов: AgentsGraph

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

Когда мы начинали строить продукт для распознавания и обработки первичных бухгалтерских документов — OCR, классификация, LLM‑извлечение полей, проверка человеком — казалось, что рынок оркестраторов уже всё решил: есть n8n для визуальных workflow, есть LangGraph для агентных пайплайнов, есть Temporal для durable‑исполнения. Мы попробовали примерить каждый — и в итоге написали свой: AgentsGraph, встраиваемую Java‑библиотеку декларативной оркестрации агентов. Ниже — почему.

Читать далее

Как мы заменили Oracle WebLogic в банке из топ-3: опыт внедрения единой платформы управления Java-приложениями

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

Импортозамещение сервера приложений – это не только перенос Java-систем в новую среду. Нужно сохранить привычные сценарии эксплуатации, централизовать управление и встроить решение в существующий технологический ландшафт заказчика.

Я Сергей Рощупкин, занимаюсь развитием платформы управления серверами приложений Digital Q.AppServer в «Диасофт». В статье разберу реальный кейс миграции с Oracle WebLogic в крупном банке, покажу, как устроена платформа и где в ней работают ИИ-агенты, а в конце – практические советы инженерам, которые мы сформулировали по итогам проектов.

Читать далее

Пишем логи в journald с помощью Logback и FFM API

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

Разворачивать бэкенды для личного использования с помощью systemd удобно, но stdout плохо интегрируется с journald, а устанавливать софт только для просмотра логов не хочется. В статье - простой пример, как можно писать логи из Java-приложения в journald так, чтобы их потом удобно просматривать

Читать далее

Добавили потоков, стало медленнее: разбираемся с ложным разделением кеш‑линии

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели8.1K

Добавили потоков, а программа стала медленнее? Причина может скрываться в ложном разделении кеш‑линий: потоки работают с разными переменными, но процессор всё равно заставляет ядра конкурировать за один участок памяти.

Разберём, как воспроизвести такую просадку, найти её через perf c2c и исправить без лишнего раздувания структур.

Читать далее

Playwright: пишем тесты на Kotlin и Java

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

В статье я разберу, как писать тесты, используя Playwright. И покажу все на собственном примере.

Когда наш продукт стал сложным, мы столкнулись с тем, что релизы стали затаскивать на прод баги. Чтобы не “тестировать на пользователях” и минимизировать человеческий фактор, мы решили автоматизировать самые частые пользовательские сценарии, используя Playwright. 

Давайте перейдем к сути и начнем писать тесты на Playwright.

Читать далее

Победить Hibernate в тестах. Возможно?

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

Победить Hibernate в тестах. Сможем?

Всем, привет! На связи Михаил Поливаха, технический лидер Open Source проекта Axelix (проект, посвященный помочь вам идентифицировать частые проблемы в Java server-side приложениях, в т.ч в рамках работы с Hibernate).

Данная, последняя статья является продолжением небольшой серии статей ответов на вопросы, которые возникли у участников Spring АйО Академии в рамках программы Hibernate. Я рассмотрю оставшиеся последние вопросы, а именно:

“Можно ли в тестах как-то проверить, что Hibernate под капотом делает что-то страшное?”

Тут очень важно не давать вам “рыбу”, а научить вас рыбачить, т.е. дать вам некоторый фреймворк о том, что стоит держать в уме при работе с Hibernate.

Читать далее

Playwright vs Selenium: 7 ошибок Java‑миграции

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

Переход с Selenium на Playwright часто заканчивается теми же флаками, долгими прогонами и ручными ожиданиями.

Разбираем семь ошибок Java‑миграции и показываем, как перестроить тесты под возможности Playwright.

Читать далее

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

Java Digest #38: Valhalla в master, ежемесячные патчи Oracle и AI-скиллы в IDEA

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

Всем привет! 👋👋👋👋👋 Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

Июль получился плотным. Valhalla после 12 лет разработки залили в master-ветку JDK одним PR на 2900 коммитов, Oracle сломал двадцатилетнюю традицию квартальных патчей и перешел на ежемесячные, а про саму Java наконец сняли полнометражный документальный фильм. Собрали все в нашем дайджесте.

Читать далее

Книга: «Java для профи. Инструменты, фреймворки, тестирование, производительность»

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

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

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

Читать далее

Отслеживание запуска приложения в Spring

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

Почему Spring-приложение запускается медленно, и на каком именно этапе оно тупит?

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

Читать далее

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust

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

Вслед за Эдвардом Сьоре, или как я писал свою реализацию on disk B+Tree-индекса на Rust. В этой статье попытаюсь осветить нюансы написание своего игрушечного индекса.

Читать далее

Вам не нужны микросервисы

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

Какое‑то время назад, проработав 3 года на позиции Java Middle+‑ разработчика на крупном монолитном легаси‑проекте (естественно, модульном), я столкнулся с тем, что не имел практики в создании приложений на микросервисной архитектуре. При этом я понимал, что работа с микросервисами — это работа с актуальным стеком технологий в мире Java. И если ты не работаешь с микросервисами, то ты вроде как не имеешь необходимой квалификации для большинства вакансий на рынке труда. По крайней мере, если судить по самим вакансиям.

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

Читать далее

Сердце облачной Java: проверяем Quarkus

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

Java уже какое-то время витает в облаках. Всё больше приложений и сервисов переходят на облачную архитектуру. Мы решили не отставать и проверить один из главных проектов для разработки производительных облачных приложений на Java — Quarkus.

Читать далее

Wiremokjs как я создавал свой скриптовый язык для wiremock

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

В этой статье я расскажу, как создавал скриптовый язык WiremockJs — с нуля и до рабочего прототипа. Поделюсь, что меня подтолкнуло к этому «подвигу», как я проектировал грамматику, с какими ограничениями столкнулся и почему в итоге не стал использовать JavaScript, а написал свой упрощённый диалект. Под катом — ANTLR, парсеры, немного боли и много удовольствия от творчества.

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