Обновить
256K+

Java *

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

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

О зависимостях в объектах и переходе к Kotlin

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

В парадигме ООП объекты взаимодействуют друг с другом. Первоначальная идея такого взаимодействия, впервые появившаяся в языке Smalltalk, заключалась в том, что объект A отправлял сообщение объекту B. В языках, разработанных позднее, используется вызов методов. В обоих случаях возникает один и тот же вопрос: как объект ссылается на другие объекты, чтобы достичь желаемых результатов?

В этой статье я рассматриваю проблему передачи зависимостей объекту. Я рассмотрю несколько вариантов и проанализирую их преимущества и недостатки.

Читать далее

Поиск работы в IT сломан. Я устал это терпеть и написал код, который играет против правил

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

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

Давайте по-честному. Искать работу в IT - это боль. Это не похоже на то, что нам обещали: интеллектуальные задачи, интересные проекты, уважение. Вместо этого мы получили бесконечный скроллинг hh.ru, вымученные сопроводительные письма и звенящую тишину в ответ.

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

Читать далее

Сравнение Grafana и Dimension-UI на задаче мониторинга истории активных сессий

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

Недавно рассказывал про мониторинг истории активных сессий в базах данных Oracle, PostgreSQL, ClickHouse и MS SQL Server с использованием desktop-приложения Dimension-UI (link). В комментариях @KPSB92 задал вопрос о преимуществах/отличиях связки exporter Prometheus/Grafana и Dimension-UI, решил оформить ответ в эту небольшую статью.

Итак, возьмем для примера просмотр данных активных сессий в базе данных PostgreSQL и сравним визуализацию в Grafana и Dimension-UI. Посмотрим работу с интерфейсами обоих систем в динамике с помощью скринкастов.

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

SSE + Java + WebFlux = энтерпрайз решение для отправки пушей

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

В этом посте я расскажу, почему для доставки push-уведомлений в клиентское приложение была выбрана технология Server-Sent Events, и главное, как реализовать масштабируемый SSE сервис на Java + Spring Boot + Webflux, который подойдет для использования не только в небольших проектах, но и в крупных организациях с большим количеством пользователей. Естественно, без подготовки дополнительной инфраструктуры не обойдется.

Читать далее

Освоение Unicode в Java: создаём на Quarkus REST API, готовый к глобальной аудитории

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

В этом руководстве мы разберем непонятности вокруг Unicode и узнаем, как строить надёжные, интернациональные Java-приложения. Разберём теорию, укажем на подводные камни, а затем соберём «Глобальный сервис приветствий» на Quarkus, который переживёт весь хаос реального текста.

К концу статьи вы разберётесь с тем,

– как устроен Unicode и как Java на самом деле хранит текст;
– почему длина строки и перебор символов сложнее, чем кажется;
– как нормализация предотвращает неприятные несоответствия;
– как настроить REST-сервис и базу данных для безопасной работы с Unicode.

Unicode без боли

Паттерны ООП c примерами на Java: порождающие шаблоны

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

Привет! Меня зовут Бромбин Андрей. В этой статье мы рассмотрим порождающие паттерны ООП. Обсудим, что такое хороший дизайн и почему не стоит начинать всё с нуля каждый раз, когда перед нами новая задача. Также разберёмся, где эти паттерны действительно помогают и какую пользу несут — всё это с наглядными примерами на Java, приближёнными к реальным.

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

Шаблонизироваться

Graph Ql клиент. Быстрый старт

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

Приветствую, коллега. Не так давно столкнулись с необходимостью реализовать взаимодействие с Graph Ql сервисом. Появилась задача аутентификации, настройки подключения, получения и передачи потребителям информации. В результате нашли много материалов, в которых описано, как развернуть Graph Ql сервис, как его использовать с базой данных. Например вот, и вот. Это подробные статьи, которые помогут решить сложные задачи. Но что делать, если стоит задача поменьше и хочется получить комплексное описание решения? Хочу предложить вариант, насытив его информацией, которая принесет пользу. Заказчик получит работающий сервис, разработчик необходимые знания и способ решения, который можно дополнять и улучшать для конкретных условий использования. Для погружения в Graph Ql и детали его использования есть статьи - вотвотвот и документация. Эта статья будет сосредоточена на задаче реализации клиента к Graph Ql серверу. Если для вас стоит подобная задача, то нам по пути.

Поехали ...

Микросервис из 15-летнего монолита: приключение на год

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

Про выделение микросервисов из монолита рассказывали много, но у каждого свой путь – в статье расскажем про наш.

От простейшего выделения сервиса в модуль в начале до решения проблем разрыва транзакций, SQL Join-запросов, задержек асинхронного API и непосредственно выделения нового сервиса. Использование event-driven архитектуры, редизайна модели данных и интеграционного слоя как основных подходов в процессе выделения.

Читать далее

Jackson 3 ворвался в Spring

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

Команда Spring официально представила поддержку Jackson 3 — одного из крупнейших обновлений в экосистеме JSON для JVM. Уже начиная с Spring Boot 4 и Spring Framework 7, Jackson 3 становится версией по умолчанию, а Jackson 2 помечается как deprecated. В новом переводе от команды Spring АйО поговорим про нововведения — улучшенную безопасность, переход к JsonMapper, отказ от MappingJacksonValue, поддержку новых API и настройку через builder-интерфейсы.

Читать далее

Как мы за 1.5 года переобучили с PHP на Java всех разработчиков

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

В прошлой статье мы рассказали, почему Compo Soft решила уйти от привычного PHP‑стека и перейти на Java ради выхода в сегмент Enterprise. Но если кто‑то подумал, что за этим решением последовал массовый найм Java‑разработчиков — нет. Мы пошли по куда более хардкорному пути: взяли всю свою PHP‑команду и начали переобучать ее на Java. Полностью c нуля. И без отрыва от производства.

Читать далее

Java против Python: Призрак с LTS-подпиской стучится в AI

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

2025 год. Эпоха, когда ИИ генерирует код, модели меняются каждые полгода, а техлид должен разбираться не только в паттернах, но и в условиях лицензионного соглашения.

Читать далее

Локальный ИИ в OpenIDE: Mellum + Continue + Ollama

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

ИИ в разработке уже не новость, а обыденность. На этом фоне набирает обороты другая тенденция — запускать модели локально. Причины понятны: приватность кода, работа без интернета, предсказуемая задержка и никакого вендор-лок. Вы контролируете, какая модель у вас крутится, какие данные она видит и что именно отправляется «наружу» (спойлер: ничего).

Обратная сторона тоже есть. Большие модели прожорливы: им нужны CPU/GPU, память.. Настройка окружения, версии — всё это ложится на вас. Но хорошая новость в том, что для задач автокомплишена не всегда нужен «монстр» на десятки миллиардов параметров. В связи с этим появились легковесные модели, которые шустро работают на обычном рабочем ноутбуке и при этом прекрасно справляются с рутиной в IDE.

В этом гайде от команды Spring АйО вы узнаете, как настроить локальную LLM для вашей IDE, будь то IntelliJ IDEA или OpenIDE. Я буду использовать последнюю.

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Протокол 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 мин
Охват и читатели7.3K

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Сегодня проверим 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 мин
Охват и читатели58K

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

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

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

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

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

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

Читать далее