Обновить
172.01

Java *

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

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

AI 2026: Почему это будет год «Цифрового Шизофреника» и как нам в этом выжить

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

От чат-ботов к цифровым близнецам, от промптов к протоколам — что ждет нас через 12 месяцев, и почему ваша ментальная модель ИИ безнадежно устарела.

2025-й был годом хайпа. Мы все научились писать промпты, восхищались Sora, DeepSeek, Chat GPT-5 и спорили, отнимет ли ИИ наши работы. 2026-й будет годом, когда хайп умрет, а на смену ему придет суровая, неудобная и стремительная реальность.

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

Тезис: К концу 2026 года мы столкнемся не с одной, а с тремя взаимосвязанными революциями, которые перевернут все: от кода до культуры.

Читать далее

Чанковая загрузка артефактов CI/CD: оптимизация передачи файлов

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

Всем привет! Меня зовут Бороздин Филипп, я разработчик платформы GitFlic.

Вместе с командой мы создаем продукт, включающий в себя все возможности Git, автоматическое тестирование и анализ кода, CI/CD, реестр пакетов, а также множество других фич, с полным списком которых вы можете ознакомиться на сайте нашей платформы.

В данной статье я расскажу вам, как мы оптимизировали процесс загрузки артефактов CI/CD, используя чанковую загрузку.

Читать далее

Цепочка гаджетов в Java и как небезопасная десериализация приводит к RCE?

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

В этой статье мы узнаем, что такое chains of gadget, и рассмотрим на примерах (с картинками), как неаккуратная десериализация через нативные Java механизмы может привести к удалённому выполнению кода.

Читать далее

Защита MCP серверов со Spring AI

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

Протокол Model Context Protocol (MCP) стремительно развивается, и вопросы его безопасности становятся всё актуальнее. Чтобы упростить реализацию защиты MCP-серверов в проектах на Spring AI, был запущен инкубационный проект spring-ai-community/mcp-security. В новом переводе от команды Spring АйО рассмотрим, как защитить MCP-сервер с помощью OAuth2 или API-ключей, а также как развернуть собственный MCP-совместимый Spring Authorization Server.

Читать далее

Как Java Boys победили в ИИ-хакатоне МТС True Tech Hack 2025 с проектом на Spring AI и ChatGPT

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

AI прямо сейчас наступает на пятки разработчикам. У кого-то это вызывает иронию, кому-то помогает писать код. Но как ни крути, LLM создали прецедент, который громко заявил о себе и продолжает широко шагать по миру, сотрясая заголовки новостей и видео.

Меня зовут Рустам Курамшин, я работаю в IT более 10 лет, и мне как бэкенд-разработчику феномен LLM сначала казался больше игрой, чем реальным инструментом разработки. Все изменилось, когда я вырвался из проектов, предоставляющих опосредованный доступ к сервисам известных языковых моделей, и начал пользоваться официальными сервисами. Последние пару лет я активно использую ChatGPT для обучения, разработки и просто чтобы пообщаться о жизни.

А еще LLM помогает мне и моей хакатонной команде Java Boys уверенно побеждать на хакатонах. Опытом нужно делиться, так что ловите историю одной из наших побед. Расскажу, как мы с моими тиммейтами разработали AI-агента на Spring AI и API ChatGPT и выиграли полмиллиона на хакатоне МТС True Tech Hack 2025.

Читать далее

Распределенные вычисления в Apache Ignite 3

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

В статье разбираются возможности распределённых вычислений в Apache Ignite 3. Покажу, как развернуть кластер в Docker, задеплоить собственные джобы и сравнить Ignite 3 с предыдущей версией. Затронем новые возможности Ignite как полноценной распределённой платформы, а не просто in-memory кэша.

Читать далее

Мониторинг истории активных сессий в базах данных

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

Сегодня проверим Dimension‑UI на задаче мониторинга истории активных сессий в базах данных Oracle, PostgreSQL, ClickHouse и MS SQL Server в режиме реального времени.

История активных сессий (Active Session History, ASH) — очень удобный способ получения информации о работе БД в кратком виде. Когда важно максимально быстро отследить, что происходит с системой в настоящее время, оценить развитие текущей ситуации — это рабочая активность или начало каких‑либо проблем — в том числе, через быстрый просмотр baselines в недавнем прошлом системы и сравнить их с текущими данными.

Изначально, данный подход был разработан и применен в СУБД Oracle начиная с 10g версии. Архитектурно в Oracle это выглядит как плоская таблица в памяти V$ACTIVE_SESSION_HISTORY, в которую с определенным интервалом (стандартно 1 секунда, но его значение можно изменять) записывается состояние каждой активной сессии: идентификатор сессии, SQL‑запроса, процесса операционной системы, текущий статус сессии — в работе или ожидании получения доступа к ресурсу, статистики потребления памяти и проч.. Периодически информация из таблицы в памяти сбрасывается на диск в таблицу DBA_HIST_ACTIVE_SESS_HISTORY репозитория рабочей нагрузки AWR.

Читать далее (трафик 29 Мб)

Как не сойти с ума? IT рынок переполнен

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

Сегодня я хотел бы поделиться опытом поиска работы Java-разработчиком в РФ.

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

Итак, я обычный парень без каких-либо связей. После 9-го класса пошёл в техникум, закончил его на «отлично», затем отдал год службы в армии. После армии, как и у многих, у меня не было возможности учиться очно, поэтому я поступил на заочное отделение в институт. Пошёл работать: перепробовал множество профессий — фильтровал пиво, работал на складах Wildberries, в горячем цеху сети «Сицилия». Всё это время, на протяжении 2–3 лет после армии, я стремился стать разработчиком.

Как и многие ребята, которые не знают, с чего начать, я изучал всё подряд, неструктурированно: то Python, то JS. Потом взял перерыв, потому что потерял веру.

В конце 2023 года я вернулся в IT в попытках найти возможность стать разработчиком. Тогда я прошёл курсы на SQL Academy (понял, что без SQL в бэкенде никуда), кое-как одолел их за 1–2 недели. Потом мне выпал шанс пройти стажировку в ЦФТ. Я успешно прошёл все этапы, и меня взяли на позицию инженера по сопровождению. Там я плотнее познакомился с SQL, начал делать запросы разной сложности в PL/SQL Developer. Затем я понял, что эта позиция мне не симпатизирует и это не тот опыт, который я хотел получить.

В начале мая 2024 года я решил, что надо плотно начать изучать какой-нибудь язык программирования, и остановился на Java. Купил себе книги.

Читать далее

Сокращение времени на написание автотестов

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

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

Привет, Хабр. Меня зовут Антон Нечаев. Я ведущий инженер обеспечения качества в MedTech-компании №1 в России — СберЗдоровье. В этой статье я расскажу, какие бывают нюансы при написании автотестов и как мы их решали, а также о том, как ускорили работу с тестами с помощью собственного плагина для IntelliJ IDEA.

Читать далее

Виртуальные потоки в Java: эволюция, практика, подводные камни

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

Привет! Меня зовут Денис, я руковожу группой R&D в Naumen Service Management Platform. В этой статье — разбор виртуальных потоков (VT) в Java: почему исторически обычные потоки упирались в I/O, как и зачем появились виртуальные потоки, что пошло не так в Java 21, что исправили в JDK 24–25, а также когда виртуальные потоки необходимы, а когда — лучше от них отказаться.

Читать далее

Дорожная карта Java backend-разработчика: c Junior до Middle

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

Привет! Меня зовут Бромбин Андрей. За последние годы у меня накопилось достаточно материалов, практик и ошибок — иногда красивых, но всё же ошибок. Этого хватило, чтобы собрать маршрут до грейда Middle.

Это не «большая книга всего на свете для джуна» и не выдуманный субъективный маршрут. Мне удалось привлечь к созданию этой статьи ведущих разработчиков крупных российских компаний — от каждого я получил честный фидбэк: где перегнул, где недосказал, чего не хватает на практике. Приоритеты были сверены, лишнее вычищено и оставлено только то, что реально двигает.

Признаться, честно: тут и для меня нашлось, что подтянуть.

Выстроить маршрут

Много спрашиваю и откладываю встречи на последний момент: мой опыт прохождения собеседований

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

Любое собеседование — это стресс, особенно если ты джун без опыта в небольшом городе. Никто не застрахован от неудачных интервью, токсичных работодателей и собственных провалов. К счастью, всё это можно пережить.

Привет! Меня зовут Ярослав, я бэкенд-разработчик в компании «Синимекс» и ревьюер на курсе «Java-разработчик» в Яндекс Практикуме. Я расскажу, как проходил первые собеседования и что помогло мне получить офферы после двух интервью из трёх.

Читать далее

Что нового в JUnit 6: ключевые изменения и улучшения

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

Спустя восемь лет после JUnit 5 выходит новая версия популярного фреймворка. JUnit 6 — это не просто обновление, а переход к современной экосистеме Java и Kotlin. В новом переводе от команды Spring АйО узнаем, что новая версия требует Java 17+, унифицирует версии компонентов, удаляет deprecated API и внедряет поддержку JSpecify для строгого null-safety.

Читать далее

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

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

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

"Запахи" в тестах — это полезные сигналы, которые важно уметь распознавать, чтобы писать удобные и легко поддерживаемые тесты. Мы уже писали про "запахи" в E2E-тестах; сейчас же рассмотрим распространённые ошибки, которые возникают при написании модульных тестов.

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

В книге Джерарда Месароша о паттернах в xUnit есть полезные главы о «запахах тестов», и в интернете можно найти много других полезных материалов по этой теме. Нам же показалось интересным подойти к этой проблеме не со стороны теории, а со стороны практики: какие частые ошибки можно встретить в тестах, как их исправлять, и почему именно тесты нужно писать так, а не иначе?

Мы разберём всё это на примере: напишем один модульный тест на JUnit, и по ходу дела будем исправлять возникающие ошибки. Код примера доступен на GitHub.

Читать далее

В поисках идеального стека для Enterprise проектов: почему Java плюс MACH

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

На протяжении многих лет команда Compo Soft успешно создавала eCommerce‑решения, клиентские порталы, PIM‑системы и другие решения малого и среднего бизнеса. Для этих задач было достаточно привычного стека на PHP и связанных с ним технологий. Когда в 2018 компания приняла стратегическое решение о выходе в сегмент Enterprise — встал вопрос о новом стеке. Им стала Java. В этой статье решили поделиться своим пониманием и опытом — почему сделан такой выбор, и почему PHP «не вывозит» Enterprise‑решения.

Читать далее

Java Digest #29

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

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

В этом выпуске обозреваем Java 25. Смотрим на новые числовые типы, которые появятся в языке. Узнаем, что лучше: verify или clean install. Наблюдаем, как Spring продолжает обрастать новыми фичами. Изучаем сборщик мусора Shenandoah. В очередной раз убеждаемся, что чтение кода занимает куда больше времени, чем его написание. И еще много всего интересного. Приятного чтения 🙂

Читать двадцать девятый выпуск

Крипта без костылей, профилирование без боли, многопоточность без хаоса: Axiom JDK 25 уже в OpenIDE

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

Синхронно с Oracle мы выпустили Axiom JDK Pro 25 — новый долгосрочный релиз российской Java-платформы. Это LTS-версия с поддержкой до 2034 года — на год дольше, чем Oracle JDK 25. Для бизнеса это гарантия, что инфраструктура и критичные сервисы будут жить спокойно много лет. Для разработчиков — шанс сразу прыгнуть в JDK 25 и работать с новыми инструментами без страха, что их скоро «снимут с поддержки».

Под капотом — больше 2800 изменений в ядре. Мы прогоняем каждую сборку через 160 тысяч тестов на десятках аппаратных конфигураций, так что релиз выходит не «как есть», а уже готовым к российским сценариям. И важно — Axiom JDK 25 доступен в OpenIDE.

Итак, что внутри:

Читать далее

MES-система глазами тестировщика

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

Привет, дорогой читатель! Я, Владимир Зиновьев, ведущий тестировщик в ИТ-команде «Северстали». Если тебя заинтересовала эта статья, то скорее всего ты такой же тестировщик, как и я, и задаёшься вопросом, как эффективно выстроить свою работу. Здесь я поделюсь долгим путём нашей команды со всеми «шишками» и успехами тестирования наших систем в большом MES-проекте. Особенно я бы порекомендовал обратить внимание на раздел с тестированием «Legacy-системы», так как там применялись довольно нестандартные и интересные подходы, по-моему мнению, конечно. Давай погружаться.

Читать далее

Amplicode – идеальное дополнение к IntelliJ IDEA Ultimate. Огромный гайд для Spring-разработчика

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

Все уже прекрасно понимают, что Amplicode — неотъемлемая часть тулинга для разработки в OpenIDE, IntelliJ IDEA Community Edition и GigaIDE на Spring Boot. Но стоит установить Amplicode в IntelliJ IDEA Ultimate и ваша, казалось бы, идеальная IDE станет ещё мощнее и удобнее.

Читать далее

Байткод инструментация методов в Java: когда семплирования уже мало

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

Семплирующие профили не показывают реальное число вызовов и их длительность — а значит, мимо может пролетать важная боль. В новом переводе от команды Spring АйО на примерах показано, как включить инструментальную трассировку в async-profiler и что даёт новая фича latency: от ловли неожиданного System.gc() и источников OutOfMemoryError до точного замера «долгих» вызовов с порогом и разбором в JMC через JFR-события. 

Разбираем накладные расходы, хитрости вроде interval, практичные кейсы (почему ArrayList.contains и AbstractSet.removeAll могут внезапно стать O(N*M) и как это починить), а ещё сравниваем подход async-profiler с нововведениями в рамках JDK 25 (JEP 520), где последний имеет ряд недостатков.

Если вам нужны точные пути выполнения и реальная latency без убийства продакшена — это must-read.

Читать далее

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