Как стать автором
Поиск
Написать публикацию
Обновить
156.48

Java *

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

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

Какие задачи можно решать при помощи AI агента

Время на прочтение2 мин
Количество просмотров831

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

В этой статье расскажем, как работает AI агент для написания кода Explyt Agent и какие задачи он решает.

Что умеет AI агент

Новости

Как прокачать Java-приложения без миграции: Axiom JDK Express теперь на JVM 21

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

Мы знаем, как это бывает: проект на Java 8 живёт уже десятый год, релизить страшно, тестов мало, миграция пугает, а система критичная. И вот бизнес хочет «ускорить и не трогать».

Читать далее

95% пилотных проектов в области генеративного ИИ в компаниях проваливаются

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

Несмотря на высокий интерес компаний к генеративному ИИ и его потенциал для роста выручки, подавляющее большинство корпоративных проектов терпит неудачу. Новый отчёт MIT указывает, что только 5% пилотных внедрений приносят ощутимый финансовый эффект. В переводе от команды Spring АйО рассмотрим основные причины, которые кроются не в самих моделях, а в ошибочной интеграции, неправильных приоритетах и нехватке адаптации под бизнес-процессы.

Читать далее

Туториал kafka + springboot + docker

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

Я часто работаю с Apache Kafka, но внезапно поймал себя на мысли, что совсем не понимаю как она устроена. Тогда я решил поднять кафку локально и поиграться с ней, а чтобы точно понимать что я делаю - написал эту статью.

Читать далее

HistoryHelper — плагин для DBeaver, который генерирует history-таблицы и триггеры за пару кликов

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

HistoryHelper - плагин для DBeaver

Зачем и почему?

Работая с БД часто приходится вручную писать SQL для создания history-таблиц, которые хранят "историю" о каждой записи из таблицы. То есть, если запись создана/изменена/удалена, для неё создается новая запись в таблице с окончанием "_hist" или "_history".

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

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

После нескольких выходных дней получилась минимальная реализация, которой хочу с вами поделиться.

В данный момент реализован самый простой функционал.

Читать далее

Как мы разработали простой, но эффективный инструмент для HR

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

Привет, Хабр! Меня зовут Сергей Филатов и я работают в R‑Style Softlab. Сегодня расскажу о разработке с помощью Jmix удобного коннектора для HR‑подразделения, который поможет менеджерам работать с наймом сотрудников.

Мы проанализировали типовой процесс найма сотрудников, который происходит в управлениях по работе с персоналом в разных компаниях и предложили свое решение для автоматизации: простой внутренний инструмент для распознавания и заполнения карточек в «1С. Зарплата и Управление персоналом» и дальнейшей работы с этими сведениями.

Модуль умеет распознавать массив скан‑документов от группы соискателей, подгружать их в 1С, автоматически заполнять карточки соискателей и предоставлять возможность проверки заполненных сведений сотруднику Службы безопасности. Звучит просто, но это помогает экономить множество часов рабочего времени сотрудников HR и сотрудников СБ, которые заняты проверкой кандидатов, убирает рутину и позволяет вести подбор кандидатов быстрее (и эффективнее!).

Еще несколько преимуществ:

Читать далее

Как мы в Java-проекте UDT для PostgreSQL поддерживали

Уровень сложностиСложный
Время на прочтение33 мин
Количество просмотров1.6K

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

В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.

Читать далее

Бесконечные циклы. Всё, что может пойти не так — пойдёт не так

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

Конструкции типа while(true) или for(;;) довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.

В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.

Читать далее

Как мы Best Practices в Java анализатор внедряли

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

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

Читать далее

LSP API теперь доступен всем пользователям IntelliJ IDEA и разработчикам плагинов

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

Команда Spring АйО перевела статью от JetBrains, в которой рассказано про избавление одного из главных барьеров на пути к массовому внедрению Language Server Protocol (LSP) в своей экосистеме.

С версии IntelliJ IDEA Ultimate 2025.2 пользователи смогут использовать LSP даже после окончания подписки, а с 2025.3 — LSP станет доступным во всех редакциях IDE благодаря переходу на единый дистрибутив.

Читать далее

Мой путь новичка в разработке: FreeSpace — мобильное приложение для любителей космоса

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

Меня зовут Маша, я выпускница «IT Школы Samsung». Хочу рассказать о своём проекте — мобильном приложении FreeSpace, которое объединяет новости о космосе, интерактивную карту и сообщество энтузиастов. Это не просто рассказ о коде, но и история моего пути в Android-разработке.

Читать далее

librats: новая библиотека для распределённых P2P-приложений

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

Всем привет! Я являюсь создателем распределённого поисковика rats-search на базе DHT ( GitHub ). Его принцип работы довольно прост: поисковик собирает торренты у всех участников сети и формирует большую распределённую базу для поиска, включая метаданные (например, описания и прочую информацию).

В этой статье я хочу рассказать о своей новой библиотеке для построения распределённых приложений (p2p), где знание IP-адресов участников не обязательно, а поиск ведётся через различные протоколы — DHT, mDNS, peer-exchange и другие. Думаю, с учётом постоянных неприятностей, которые происходят вокруг, это может оказаться полезным ;-).

Читать далее

Когда дело не в коде: как мы ловили мистические пропажи запросов на сетевом уровне

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

Привет, меня зовут Анатолий, я ведущий разработчик в ITFB Group. У нас высоконагруженный сервис торговых операций. И раз в неделю, как по расписанию, раздавался панический звонок: «Опять пропали запросы!». Мы неслись смотреть логи — а там... ничего. Ни ошибок, ни падений. Никаких пятисотых, только стабильные двухсотые. Стенды dev и prod молчали, как рыбы. Запросы загадочным образом появлялись через некоторое время, и всё работало, пока история не повторялась снова. Это был не баг, это был призрак. Призрак в сети.

Сегодня я расскажу, как мы его поймали.

Читать далее

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

Рынок труда тестировщиков-автоматизаторов в России (2025)

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

Спрос на QA-специалистов в России продолжает расти, однако конкуренция в этой нише очень высокая. Так, по данным Computerra, в числе наиболее востребованных ИТ-специалистов в 2025 году оказались именно тестировщики и специалисты по написанию автотестов. При этом работодатели всё чаще требуют от тестировщиков навыков уровня начинающего разработчика: знания бэкенда, фронтенда, работы с БД и умения писать скрипты для автотестов. В этой статье мы подробно рассмотрим актуальные языки программирования, фреймворки и инструменты в автоматизации тестирования, требования работодателей, типичные этапы собеседований, а также рекомендации по подготовке.

Читать далее

Запуск бинарных файлов из data/data на Android 10+ (Обход SELinux)

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

Всем привет! Как многие знают, с Android 10 (Target sdk 29) google ввели новую политику безопасности. Новая политика SELinux звучит просто: "Нельзя исполнять файлы из той директории, в которую можно записывать". Всё это очень хорошо, но многие проекты сломались (В том числе и мой). Termux из google play УМЕЕТ запускать бинарные файлы на target sdk 29+. Я решил поделится как выполнить бинарный файл из data/data/com.ваш.пакет/files на новых версиях sdk БЕЗ полного клонирования Termux и БЕЗ С/C++ части. Сам метод запуска будет именно на java. Репозиторий termux, откуда был взят способ: https://github.com/termux-play-store/termux-apps

В чём суть, любой бинарный файла который вы запускаете имеет свой контекст. Если вы запускаете через нативную директорию (data/app/и так далее) перед этим положив бинарные файлы в jniLins - контекст у такого бинарного файла будет правильным и SELinux даст разрешение на запуск (Granted), но в случае с data/data другой случай, оттуда SELinux УЖЕ ОТКАЖЕТСЯ запускать бинарный файл (Denied). Разрешил SELinux запуск или отклонил можно смотреть в logcat. Однако, в системе существует системная утилита которая может запустить бинарник, а самое главное - SELinux РАЗРЕШИТ ей запустится, так как она системная. Её имя - linker или linker64 (Зависит от разрядности, 32 бита или 64)

Запустив линкер и передав ему наш бинарный файл из data/data - SELinux разрешит ему выполнится и сразу разрешит исполнение нашего бинарного файла. Тут сразу возникает вопрос, а если бинарный файл попробует подключить so библиотеку? Ей будет отказано? Здесь тоже есть решение, существует termux-exec. Это бинарный файл, который перехватывает попытку подключения чего либо и выполняет трюк с линкером. (linker или linker64 определяет автоматически). Вы можете собрать его из исходников (https://github.com/termux-play-store/termux-exec), но лично я полностью скопировал среду (Где этот уже собранный файл идёт в usr/lib) termux, так как мне нужно было запускать OpenJDK 17 под termux.

Читать далее

Shift-Left тестирование с Testcontainers: ловим баги на ранних этапах локальными интеграционными тестами

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

Баги, пойманные на проде, всегда стоят слишком дорого — и времени, и нервов, и репутации. Юнит-тесты не видят проблем с реальными зависимостями, моки быстро устаревают, а интеграционные среды тормозят разработку. Выход ищут в подходе shift-left: проверять критичную бизнес-логику раньше, прямо в IDE, без ожидания CI. В этой статье разберём, как библиотека Testcontainers позволяет поднимать реальные сервисы в контейнерах, писать интеграционные тесты так же просто, как юнит-тесты, и что это даёт с точки зрения скорости и качества по метрикам DORA.

Читать далее

Explyt 4.1: поддержка Python и MCP, пользовательские Rules и Workflows

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

Привет, Хабр! Отправив детей в школы и детские сады (а кто-то из нас сам идет преподавать в ИТМО и СПбГУ), делимся первым релизом этой осени. Теперь вы можете использовать возможности ассистента в PyCharm. С поддержкой MCPсерверов больше не нужно реализовывать отдельные интеграции для каждого инструмента. Пользовательские Rules и Workflkows помогут сделать работу агента более удобной и корректной.

Другие улучшения + поддержка OpenAI GPT-5

Разработка на Java без всего

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

Снова показываю как можно вести разработку «голыми руками» — без IDE, документации и даже интернета. На этот раз с помощью «пользовательской» Ubuntu Linux и OpenJDK.

Читать далее

Контрактные тесты CDC на Pact

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

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

Сегодня рассмотрим контрактные тесты потребитель-управляемого формата на Pact.

Consumer-Driven Contracts фиксируют минимальный набор ожиданий клиента к API сервиса. Контракт рождается из автотеста на стороне потребителя. Потом провайдер прогоняет этот контракт против своей реализации и публикует результат в Broker. Выигрыш понятный: проверяем не всё API, а только то, что использует потребитель, и фиксируем совместимость версий до выката. Это основная идея Pact и базовая модель его работы.

Сам по себе CDC закрывает разрыв между быстрыми юнитами и медленными e2e. Контракт не заменяет e2e, но даёт дешёвую гарантию «не сломаем потребителя» на каждом изменении провайдера. CDC эффективнее всего на сетях сервисов с явными границами и стабильными интеграциями.

Читать далее

Обратная совместимость в Java-мире

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

Это текстовая версия доклада с Java Rock Star Meetup, с которым выступал Владимир Ситников (@vladimirsitnikov) — performance engineer, PgJDBC и JMeter committer, а также член программных комитетов JPoint, Joker, Heisenbug, DevOops и SmartDara. Если вы больше любите смотреть видео, то смотрите запись доклада на YouTube или VK Видео.

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

Однако 30 лет Java прожила. Давайте посмотрим, как это всё было и что было в начале.

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

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