Обновить
512K+

Java *

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

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

Когда использовать параллельный стрим в Java

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

Параллельные стримы в Java 8 выглядят как бесплатное ускорение: добавил .parallel() — и все ядра побежали работать. Но по факту всё сложнее, так как распараллеливание имеет накладные расходы, зависит от того, насколько хорошо делится источник данных, сколько стоит объединение результатов, и даже от локальности данных в памяти.

В новом переводе от команды Spring АйО на примерах и бенчмарках разберем, почему простая свёртка на маленьких диапазонах может стать медленнее, почему ArrayList часто выигрывает у LinkedList в параллели, как reduce может неожиданно сломаться из-за неверного identity, и что вообще происходит внутри common ForkJoinPool.

Читать далее

LTS, обновления и поддержка (support): что именно вы выбираете в Java и Spring

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

Когда начинается разговор про Java, почти всегда он внезапно уходит в сторону Spring. И это не случайность.

Проблемы с релизами, поддержкой, миграциями, безопасностью — это не «проблемы Spring». Это следствие того, как изменилась сама Java-экосистема.

Чтобы понять, что происходит со Spring, нужно сначала разобраться, что произошло с Java.

Читать далее

ТОП-10+1 «Золотых правил» оптимизаций Java 21+: как заставить JIT петь, а GraalVM — летать

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

Почему ваша Java-система буксует там, где должна летать? Мы привыкли доверять магии JVM, но в мире Java 21 и Native Image правила игры изменились. От микро-оптимизаций байт-кода до радикальной смены парадигмы с Scoped Values – разбираем 11 “золотых правил”, которые заставят JIT петь, а ваш бинарник – стартовать за миллисекунды. Никакой “воды”, только хардкор, регистры процессора и “голоса” компиляторов внутри вашего кода.

Работая с кодом, я не раз ловил азарт: а как этот метод можно ускорить ещё? Какую гайку подкрутить, чтобы JVM не просто работала, а буквально летела? Что изменить в архитектуре, чтобы Native Image стал ещё компактнее, а холодный старт – ещё быстрее?

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

Это не просто советы по стилю кода. Это “10+1 Золотых правил оптимизации Java 21+”.

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

Приготовьтесь! Мы начинаем оптимизировать!

Начать оптимизацию!

Java на диете: 45 МБ RAM и старт за 1.4 с. Смертный приговор классическим JVM?

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

Когда я впервые увидел, как мой сервис на Spring Boot с Postgres, MongoDB и Kafka «съел» всего 45 МБ оперативной памяти, я почувствовал азарт. Азарт инженера, который нашёл способ обмануть систему. Я был заряжен Axiom NIK: его эффективностью, его агрессивной компиляцией и тем, как он превращает «жирный» корпоративный стек в изящный бинарник.

Многие годы нам вдалбивали: «Java — это прожорливо!». Нам говорили: «Выдели 2 ГБ под микросервис, иначе JIT не прогреется».

Забудьте об этом! Я провёл R&D, который ставит точку в спорах о прожорливости Java!

Это не просто тесты. Это вскрытие!

Смотреть результаты вскрытия

JWT: как работает, зачем нужен и когда лучше не использовать

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

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

Читать далее

Системный подход к Agile: исследование совместимостей Java библиотек

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

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

1. Система ведения онтологии и моделирования бизнеса
2. Система верификации типов с правилами подстановки
3. Система среды исполнения динамического кода
4. Система модульной эволюции кодовой базы

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

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

После обширного анализа будет представлено видение направления развития Явы как платформы, получившей новую среду скриптовых языков GraalVM. Основным тезисом служит заявление, что Агиль методология требует строгой трактовки, дисциплины и продуманных инструментов, чтобы свобода разработчика не превратилась в её свободный полёт в пучину хаоса!

Читать далее

Что нового в OpenIDE 2025.3: Java 25, Spring MCP, Go, Docker и JavaScript/TypeScript

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

Состоялся релиз OpenIDE 2025.3 на базе IntelliJ IDEA Platform 2025.3. В релизе — поддержка Java 25, автодополнение действий IDE через двойную точку (Command Completion), Spring MCP для LLM-агентов, обновления для Go и фронтенд-стека, улучшения HTTP-клиента Connekt и доработки Docker-плагина. 

Читать далее

Veai 5.5: поддержка Skills, режимы агента Plan и Review, авторевью и ограничение зоны редактирования

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

В свежем релизе Veai 5.5 (плагин к IntelliJ IDEA со своим AI агентом для написания кода, тестирования и отладки) работа с агентом становится более управляемой, безопасной и расширяемой. SKILLs — это полноценная поддержка открытого стандарта навыков: их можно хранить в проекте, переиспользовать между задачами и инструментами, и агент будет подключать их автоматически.

Добавлены новые режимы агента Plan и ReviewAuto Review — для быстрых проверок сгенерированных изменений, Edit Scope — для ограничения области редактирования, а также возможность создавать свои режимы агентов под конкретные роли и сценарии. Для персональных пользователей добавлена поддержка Claude 4.6 Opus.

Читать далее

JDBC для профи: пулы, batch, транзакции и скрытые риски

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

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

Читать далее

Оптимизация Java-приложений для Arm64 в облаке

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

JVM в первую очередь процесс операционной системы. Но важно понимать, что требования к этому процессу на production отличатся от требований на workstation-е разработчика. 

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

В новом переводе от команды Spring АйО разберем, какие существуют базовые настройки кучи, GC и CPU помогают синхронизировать JVM с лимитами контейнера и не переплачивать за простаивающие ресурсы.

Читать далее

Так что там реально с Telega?

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

Ситуация вокруг форка телеге откровенно подзадолбала. Одни пишут статьи из трех пунктов в духе «все плохо, пользоваться ОПАСНО», но без конкретики: где нашли уязвимость и как она применяется — непонятно. Блогеры же, наоборот, топят за «положительные примеры», но аргументация у них на уровне «поверь мне, брат».

Всё это выглядит неоднозначно. Даже так называемые «детальные разборы» не убеждают, потому что написаны в том же стиле, что и реклама у стримеров, хоть и есть какие никакие аргументы. но их мало для нормизов, а осведомленные люди сами могут все зачекать. Статьи от задрота для заброта

Я не эксперт, не профессиональный автор и уж точно не претендую на звание грамотея. Но раз уж мы живем в эру нейромусора, решил вкинуть "свой" анализ. Я провел два аудита декомпилированной программы через JADX с помощью VS Code Copilot (модель Opus 4.6).

Ниже привожу всё, что выдала нейронка в качестве финального вывода. Версия программы 2.3.1

Читать далее

Законъ о запрете иностранных словъ… в разработке

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

Разговор будет серьёзный. С 1 марта 2026 вся публичная информация для потребителя должна быть на русском — N 168-ФЗ. Пока что разработку это не касается, но стоит быть готовыми. Предлагаю договориться о словаре разработчиков Российской Федерации.

Читать далее

Enovia умерла, да здравствует JMatrixPlatform: пересобираю легендарную платформу на Java и Vue

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

В прошлой статье я познакомил вас с существованием малоизвестных "суперплатформ" управления данными. На абстрактном примере реализации показал как легко кастомизируется платформа - от идеи, к готовому UI. У кого-то это вызвало отвращение, у кого-то просто шок, а кто-то увидел возможность.

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

В общем расскажу про импортозамещение Dassault Systèmes 3DExperience, далее Enoviaа точнее - той её части, которая на протяжении многих лет востребована многими крупными предприятиями: гибкого движка для построения бизнес-приложений, с возможностями управления жизненным циклом (без привязки к тяжелому САПР).

Читать далее

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

Технологии в основе VK Видео: от загрузки файла до кадра на экране зрителя

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

В 2025 году платформа VK Видео стала лидером в России по ежедневной и ежемесячной аудитории. За этим результатом стоит не только рост числа авторов и объёма контента. В его основе системное развитие технологий: мы последовательно масштабируем инфраструктуру, совершенствуем пайплайны обработки видео и инвестируем силы в стабильность воспроизведения на всех пользовательских устройствах и при любых условиях сети. Это постоянная инженерная работа, направленная на предсказуемое и стабильное качество сервиса при быстрорастущей нагрузке. 

Меня зовут Алексей Шпагин, я руководитель разработки бэкенда видеоплатформы VK. В статье расскажу о технологиях, лежащих в основе VK Видео, и жизненном цикле контента на платформе: от загрузки и обработки до доставки зрителям.

Загляни под капот VK Видео

KMP, XCode и 5% мазохистов: как мы писали AI-агентов на 4 платформы

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

Все говорят, что AI заменит разработчиков. Я решил зайти с другой стороны — написать AI-агента, который заменит пользователей. Альфа версию для macOS уже зарелизил.

Послдение полгода работали с коллегой над двумя приложениями, одно десктопное (по ссылке выше), другое на 4 платформы — android, ios, web, backend. Много чего повидали, хочу поделиться опытом.

Дисклеймер. Статья содержит последствия массового использования expect/actual, сцены жестокого обращения с XCode и эпизоды длительного ожидания нотаризации на релизных сборках под OSX. Не рекомендуется лицам, планирующим запуск KMP-проекта на несколько платформ без предварительной консультации с психотерапевтом.

Читать далее

Одна строка кода, которая заблокировала 102 потока

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

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

Это история о том, как DatatypeFactory.newInstance() поставил на колени наш высокопроизводительный Java-сервис, и об удивительно простом решении, позволившем полностью избавиться от проблемы.

Читать далее

Трудности разработки Java-игр: каким был мобильный геймдев нулевых? [Длиннопост про разработку]

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

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

Читать далее

Ceylon и NULL: как сделать null нормальным

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

В одном и том же null часто прячут разные смыслы: “нет значения”, “неизвестно”, “неинициализировано”. Потом это всплывает в NPE и в кривой логике исполнения.

В Ceylon эту проблему решают через типовую систему, через Union типы. Подробнее, в переводе от Spring АйО.

Читать далее

Параллельная обработка Kafka сообщений с гарантией at-least-once в условиях медленного внешнего сервиса

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

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

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

Для иллюстрации подходов далее будет использоваться код из демонстрационного проекта на Kotlin с использованием spring boot, webFlux, spring reactor и reactor-kafka. Код проекта не является production-ready: в нём, например, отсутствует обработка rebalance, а также ряд других моментов, обязательных для промышленной системы. Используется reactor-kafka, однако описываемые решения не зависят от конкретного фреймворка работы с Kafka и могут быть реализованы с использованием других.

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

Читать далее

Руководство по ArchUnit — как модульно тестировать архитектуру

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

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

В новом переводе от команды Spring АйО рассмотрим библиотеку с открытым исходным кодом ArchUnit, которая помогает в тех случаях, когда одного компилятора недостаточно.

Читать далее