Обновить
512K+

Java *

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

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

Книга: «Spring Security. 4-е изд.»

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

Привет, Хаброжители! Опытные хакеры постоянно охотятся за уязвимыми приложениями, поэтому никогда не переставайте беспокоиться о безопасности. Задача становится особенно сложной, если приходится работать с унаследованным кодом, новыми технологиями и сторонними фреймворками. Научитесь защищать Java-приложения с помощью Spring Security — проверенного и гибко настраиваемого фреймворка для аутентификации и управления доступом.

Читать далее

Специфические методы шардирования

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

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

Поэтому пора исправлять эту проблему в MireaPay и наконец-то добавить работу с крупными юр. лицами, которые будут называться корпоративными пользователями!

Пройти в комнату шардирования

Хроники Agent Driven Development трансформации .1: улучшаем agent feedback loop

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

Как перевести продакшен-проект на рельсы agent-driven development - когда LLM-агенты становятся полноценными участниками разработки, а не просто подсказчиками в автокомплите ? Реальный опыт на реальном проекте !

Продолжаем улучшать Feedback Loop. В предыдущей статье я ускорил прогон тестов в 6 раз. Теперь — следующий шаг: LLM-агент генерирует тесты. Два подхода (sprint-driven и coverage-driven), шестиуровневый pipeline верификации, двух-агентная архитектура, оптимизация feedback loop — и 68 тестовых файлов на выходе с acceptance rate 86.8% при ревью живыми разработчиками.

В статье — конкретика: как анализировал покрытие и свежесть документации, как ускорял компиляцию для агента, на чём экономил токены, и что сказала команда на code review.

Читать далее

Изменения в G1/Parallel/Serial GC в JDK 26

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

JDK 26 выходит уже совсем скоро. Тем временем в GC закрыли около 380 задач (почти в 2 раза больше, чем в прошлом релизе), но в этот раз акцент сместился с  больших фич в пользу практичных доработок.

Главное для всех сборщиков: нормальный учет CPU GC. Теперь считают не только stop-the-world паузы, но и конкурентную работу и дедупликацию строк. Можно посмотреть через лог cpu=info при завершении VM, обновили Hsperf-счетчики, есть доступ из кода. Плюс новый JFR-ивент с деталями по string dedup.

JEP 516: Aot Cache стал независим от выбранного GC и опций VM. Включение через опцию -XX:+AOTStreamableObjects.

G1 получил самые заметные улучшения: JEP 522 уменьшает синхронизацию между GC и приложением (цель - увеличить throughput). Еще: целевое использование CPU G1 по умолчанию снижено с 8% до 4%, добавили важнейший флаг UseGCOverheadLimit.

Читать далее

Ускоряем вставку данных в PostgreSQL

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

Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Дмитрий Фатов (@FatOFF ) — руководитель разработки Газпромбанка с опытом разработки приложений более 13 лет. Дмитрий работал как backend-, так и fullstack-разработчиком на языках Java, Kotlin, JS, TS, 1С и имеет большой опыт работы с SQL-базами данных.

Читать далее

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

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

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

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

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

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

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

Читать далее

Собеседование QA-инженера в 2026: От HR до оффера. Гайд по этапам и вопросам для manual и automation

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

Как устроен процесс собеседования QA-инженера в 2026 году? Из каких этапов он состоит и чем интересуются интервьюеры на каждом из них? В этом гайде я разложил всё по полочкам: что спрашивает HR (и как он оценивает ваши ответы), какие блоки теории нужно повторить manual-инженерам, а какие — automation-инженерам на Java, и как проходит секция с задачами на логику и лайвкодингом.

Внутри — структурированные списки вопросов с разбивкой по темам, реальные примеры из практики и советы, как правильно "продать" себя на каждом этапе. Материал будет полезен как джунам, так и опытным специалистам для систематизации знаний.

Читать далее

Несколько мобильных приложений в одном Appium‑проекте: как это можно организовать

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

Как тестировать несколько мобильных приложений в одном «Appium‑проекте». Показываю архитектуру фреймворка, запуск тестов через аннотации, потокобезопасный контекст и подключение новых приложений без дублирования кода.

Читать далее

Docker/Podman-клиент и Remote-клиент для GigaIDE

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

Продолжаем наши обзоры плагинов к GIgaIDE. Первая статья здесь, последняя доступна по этой ссылке. На этот раз в нашем обзоре — плагины Docker и Remote, доступные в версии GigaIDE PRO и обновляемые с маркетплейса.

Начнём с рассказа про плагин Docker.

Читать далее

Технический директор играет по-взрослому: JavaFX в хобби-проектах

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

В первой статье я уже говорил о своей любви к компьютерным играм — что, в общем‑то, неудивительно. Но всерьёз, вплоть до создания собственных небольших прототипов (так называемых демок), я занялся этим только в довольно зрелом возрасте — где‑то с 2021 года и до сих пор. Всё началось с того, что я открыл для себя мир Java: для моих программистских навыков он оказался на удивление простым. Ну и да, про 2 млн устройств — это, конечно, избитая шутка. Больше всего в разработке приложений на JavaFX меня впечатлила простота реализации: приложения получаются легко и быстро. Конечно, можно допустить ошибки, и тогда производительность окажется низкой. Но я по‑прежнему считаю, что это очень удобная технология для создания настольных приложений.

Забавно, но именно работа над промышленными системами моделирования научила меня ценить структурированность и надёжность кода — качества, которые я теперь применяю и в своих небольших игровых проектах.

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

Читать далее

Эмуляция АСУ ТП: технические решения и практические аспекты реализации

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

Эта статья продолжает цикл воспоминаний разработчика тренажёрных комплексов. Несколько лет назад наша команда столкнулась с задачей создания эмулятора автоматизированной системы управления технологическим процессом (АСУ ТП) для одной из тепловых электростанций. Задача выглядела стандартной и несложной: воспроизвести логику контроллеров, разработать мнемосхемы и запустить модель.

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

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

Читать далее

Java без розовых очков: какие знания отделяют грейды

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

Почти каждый разработчик рано или поздно задается вопросом: «Я уже Middle или все еще уверенный Junior?» Опыт растет, задач становится больше, стек шире — но вместе с этим появляется и иллюзия, что раз ты пишешь на Java каждый день, значит, язык знаешь. На практике же границы между грейдами проходят не по количеству лет в профессии и не по числу реализованных фич. Они проходят по глубине понимания: платформы, архитектуры, производительности, работы с данными и собственных ограничений.

Привет, Хабр! Меня зовут Любовь Кулева, я руководитель отдела разработки и методологии Учебного центра IBS. В 2025 году мы выпустили три полноценные «дорожные карты развития» — для системного аналитика, для архитектора ПО и для бизнес-аналитика. В этой статье поговорим про джавистов: что на самом деле стоит за грейдами и какие компетенции формируют профессионала на каждом этапе.

Читать далее

Март, Jetty и утекшая память

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

За окном весна, на улице уже вовсю и ярко светит солнце, поют птички и тает последний снег. А в знаменитом сервере Jetty обнаружилась новая дыра космических масштабов.

Читать далее

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

Взаимное исключение в Java: от synchronized к Lock

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

Многопоточность — одна из самых сложных тем в Java. По сути это ситуация, когда несколько потоков работают с общими данными и в процессе работы легко столкнуться с состоянием гонки (race condition), потерей обновлений или даже повреждением структуры данных. Чтобы этого избежать, доступ к критической секции кода нужно ограничить: одновременно там должен находиться только один поток.

В Java есть два основных механизма для решения этой задачи: встроенное ключевое слово synchronized и явные блокировки из пакета java.util.concurrent.locks, наиболее популярная из которых — ReentrantLock. Оба подхода обеспечивают взаимное исключение (mutex), но работают по-разному и подходят для разных сценариев.

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

Читать далее

75 проектов в IntelliJ IDEA: как я перестал тонуть в Recent Projects и написал свой плагин

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

Всем привет. Я уже около 10 лет занимаюсь разработкой и около 5 лет полностью перешел на продукты JetBrains, и за все это время у меня накопилось около 150 проектов как рабочих, так и своих личных, я их конечно же красиво разложил по папочкам на диске, поставил теги на папки в маке и добавил быстрый доступ.


Я работаю с несколькими клиентами, активных проектов в работе около 25 штук, стандартные средства и функционал IntelliJ IDEA(Recent projects) с таким количеством прекрасно справляется, быстро ввел название сервиса в поиск и так же быстро открыл.
Идеальная жизнь закончилась когда ко мне пришел клиент с еще 25 микросервисами в разных репозиториях и беклогом с багами в 300+ задач(white-label решение), я вздохнул и начал работать с 50 активными проектами и обнаружил что "Recent projects" в IDEA умеет хранить только 30 последних открытых проектов, и если ты открываешь 31 проект, увы первый пропадает как из поиска, так и из списка.

Через пару месяцев этот же клиент отправил меня на помощь одному из своих заказчиков, где те же 25 микросервисов, но со своими фичами, функционалом и так далее. По итогу к декабрю у меня образовалось 75 рабочих проектов и с десяток личных, и работать с этим комфортно я не представлялось возможным. Я начал искать какие то готовые решения на просторах магазина JetBrains - нашел три мертвых плагина с плоским функционалом и по факту тем же подходом как в "Recent projects".

Решение — свой плагин со всем функционалом что я хочу, без ограничений IDEA...

Читать далее

Git для новичков: ветки, коммиты и первый pull request

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

Git — это вызов, через который проходит каждый второй новичок в разработке. Ветки называются «asdasd», коммиты — «правки», а pull request пугает своей красной кнопкой. Знакомо?

Меня зовут Сергей Прощаев, я Tech Lead в FinTech и преподаватель на курсах в OTUS. В этой статье разбираем самое главное: как создавать ветки и почему их нельзя называть как попало, что писать в коммитах, как сделать pull request в лучших практиках команд разработки

Разобраться в Git

Temporal: 9-летний путь к исправлению времени в JavaScript

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

Cтарший инженер-программист в организации JavaScript Infrastructure & Terminal Experience компании Bloomberg Джейсон Уильямс опубликовал пост, в котором рассказал, как он вместе с командой реализовывал библиотеку Temporal вместо Date для различных типов дат и времени. Автор выступает делегатом TC39 (группы экспертов из Ecma International, отвечающей за стандартизацию и развитие языка JavaScript) и имеет опыт стандартизации функций, реализации языка и участия в крупных проектах с открытым исходным кодом. Джейсон также является создателем движка Boa JavaScript.

Читать далее

Генерация коммитов, ручной запуск Skills и быстрые действия в чате: Veai 5.6

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

Работа с агентом обычно прерывается мелкими операциями: написать сообщение коммита, скопировать кусок ответа, прикрепить скриншот. В релизе Veai 5.6 (ИИ-агент к JetBrains IDEs для написания кода, тестирования и отладки с доступом к топовым LLM и всем внутренним инструментам IDE) мы убрали часть этой рутины. Добавили генерацию коммитов из diff, быстрые действия для текста ответа, явный технический контекст запроса, ручной вызов Skills и более простой способ прикреплять изображения.

Читать далее

Я прочитал статью про 9 AI-ревьюеров — и сломал свой бюджет на токены

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

Текст в ленту: AI-агент пишет код. Другой AI-агент его ревьюит. Первый фиксит замечания. Ревьюер проверяет фикс. 9 параллельных субагентов, 18 000 токенов в минуту каждый, и вопрос, который никто не задаёт: а кто проверяет ревьюера?

Читать далее

Разница между параллельными и распределёнными вычислениями

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

Параллельные и распределённые вычисления часто ставят рядом, но это далеко не одно и то же. В новом переводе от команды Spring АйО разберем, как устроены обе модели, чем отличаются их архитектура, способы обмена данными, масштабируемость и отказоустойчивость. Статья подойдет тем, кто хочет понять, когда достаточно ресурсов одной машины, а когда без сети из нескольких узлов уже не обойтись.

Читать далее