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

Java *

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

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

Как мы затащили jOOQ в высоконагруженный проект с Postgres

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

Привет, Хабр. Меня зовут Михаил Тимошкин. Я тимлид в команде Тематических каналов в Дзене.

Одна из классических головных болей при создании сервиса — синхронизация кода приложения со схемой БД. Есть много инструментов для управления изменениями схемы базы данных, таких как Liquibase или Flyway, для которых существуют плагины с кодогенерацией. Но что, если на проекте ничего подобного нет? Хорошая новость в том, что даже в такой ситуации можно найти эффективное решение! В этом мы убедились на собственном опыте при переходе с Hibernate на jOOQ.

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

Читать далее

Новости

Spring Boot + Python: от эксперимента до open-source

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

Как исполнять Python внутри Spring Boot?

Я прошёл путь от сырых AOP-костылей до production-ready библиотеки с REST, gRPC и безопасным исполнением скриптов. В статье: опыт, архитектура и базовые примеры использования.

Читать далее

GPT-4o: последний взгляд

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

Это вторая часть цикла «Исследование возможностей ИИ писать код». И она особенная: GPT-4o, о котором пойдёт речь, уже снимали с полок, а затем вернули под давлением жалоб пользователей, но это лишь временная передышка. Модель официально заменена GPT-5 и в любой момент она снова может исчезнуть. Поэтому то, что вы читаете, это скорее исторический снимок работы с устаревшей моделью.

Читать далее

Парсинг на Java. От основ до парсинга Яндекс Карт

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

Сегодня я рассмотрю основы парсинга на Java, используя как пример Яндекс Карты.

В этой статье мы рассмотрим, что такое HTTP и какие бывают методы запроса, как работать с HttpClient в Java 11+, как отправлять GET и POST-запросы, как обрабатывать HTTP-ответы и извлекать данные, и как всё это можно использовать для парсинга данных с внешнего сервера на примере Яндекс Карт.

Читать далее

Как заменить GitHub Copilot на полностью офлайн‑Continue Plugin

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

В этом посте я покажу, как использовать Continue Plugin вместо GitHub Copilot, подключив к нему собственную локальную модель LLM без доступа к интернету. Такой подход обеспечивает максимальную конфиденциальность: ни IDE, ни LM Studio не имеют возможности передавать ваши файлы в облако.

Никакой сети – всё работает только в вашем компьютере.

Читать далее

Публикация maven-артефактов в GitHub репозитории

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

Уже как три года я работаю над проектом со стеком Kotlin, Spring Boot, Maven. Все начиналось как небольшая учебная практика в вузе на коленке за пару недель и разрослось в приличную систему, которая уже использовалась по всей России.

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

Читать далее

Когда Structure Block уже не справляется: Продвинутая генерация огромных строений в Minecraft

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

Стандартный Jigsaw-метод хорош для деревень, но пасует перед гигантскими .nbt-файлами, вызывая лаги и вылеты. Столкнувшись с этим, я отказался от JSON-конфигураций и написал свой класс Structure. В статье разберу, как с помощью чистого Java-кода заставить Forge генерировать огромные строения и не наступить на мои грабли с mods.toml.

Читать далее

Что я знаю про онлайн редактирование

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

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

Идея этой статьи пришла ко мне год назад. При посещении Highload я был у стенда одной большой компании, которая очень любит алгоритмы. На нем предлагалась решить архитектурную задачу за мерч. Когда дошла очередь до меня, мне выпала задача — построить онлайн редактор с нуля. Это отличный вариант! Как раз такое мне уже приходилось проектировать. В процессе решения, автор задачи сказал, что я усложняю и вообще онлайн редктор — это гораздо проще. После разбора нескольких корнер кейсов, он согласился, что это всего лишь первый взгляд. Далее уже достаточно долго мы обсуждали а как вообще можно построить онлайн редактор. В тот момент и появилась идея поделиться своим опытом публично, но вот только сейчас дошли руки. Итак, приступим.

Читать далее

Разрабатываем spring-boot Starter адаптера EGTS протокола для передачи телеметрии курьеров в РНИС

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

Привет! Меня зовут Игнат. В этой статье я расскажу про разработку адаптера для работы с EGTS-протоколом (Era Glonass Telematics Standard), который можно использовать для передачии телеметрии курьеров из курьерских служб в РНИС (РНИС - государственная информационная система «Единая региональная навигационно-информационная система города Москвы»). Код написан на Kotlin и подходит для использования в Java и Kotlin приложениях. Простота подключения модуля привела к идее вынести проект в опенсорс, чтобы его могли использовать курьерские службы с бэкендом на jvm. Поехали!

Читать далее

Jakarta Data. Что это означает для Java-сообщества

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

Большинство enterprise-приложений работают с БД в том или ином виде. Чаще всего в качестве БД выступает реляционная DBMS, например, PostgreSQL или Oracle. Относительно часто для доступа к данным используют Hibernate. Ранее он предлагал только одну спецификацию — JPA (Java Persistence API), она же Jakarta. Но теперь Hibernate реализует ещё и Jakarta Data.

Jakarta Data — это новая спецификация под зонтиком проекта Jakarta EE (как и JPA), которая упрощает интеграцию данных в корпоративных Java-приложениях. Обе эти спецификации разрабатывает Eclipse Foundation, и в частности Gavin King, создатель Hibernate.

Большинство разработчиков привыкли работать с Hibernate именно через Spring Data JPA. Изначально, когда только обсуждали спецификацию Jakarta Data, Spring Data (не обязательно JPA) была одним из тех проектов, который, в перспективе, мог бы реализовать спецификацию Jakarta Data. Но этого не произошло, и, несмотря на то, что изначально команда Spring Data была вовлечена в процесс создания спецификации, они отказались от идеи реализовывать Jakarta Data, и та стала развиваться самостоятельно. Сегодня Jakarta Data применяют в Hibernate, Open Liberty и ряде более мелких решений. Как же так вышло?

Меня зовут Михаил Поливаха, я практикующий инженер и активный коммитер Spring Data. В этой статье я расскажу об особенностях Jakarta Data, как она появилась и чем отличается от конкурентных решений. Я также расскажу, что помешало команде Spring Data реализовать Jakarta Data, и что же нас ждёт дальше.

Читать далее

Как мы сделали AI-агента и пользуемся им на практике

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

Привет, Хабр! В последнем обновлении Explyt мы добавили AI-агента для написания кода. В этой статье расскажем, что он умеет и как мы сами его используем.

Пару месяцев назад в нашем плагине не было AI‑агента, а был только ассистент для генерации тестов. И пока агент не появился, в работе мы использовали другие известные плагины. Лично мне очень нравился Copilot, из‑за своего минималистичного интерфейса и контроля за контекстом. Однако фичи копайлота в первую очередь доезжали до VSCode, а пользователю IntelliJ IDEA приходилось дожидаться их месяцами. Поэтому для прототипирования и скаффолдинга, написания бойлерплейтного кода с помощью AI‑агентов мне приходилось переключаться между любимой средой разработки и IntelliJ, что было несколько неудобно.

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

Читать далее

Гайд по использованию Spring GraphQL. Часть 2

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

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

Меня зовут Дмитрий, я бэкенд-разработчик в SENSE и последние 10 лет пишу серверную часть на Java. Эта статья — продолжение первой части гайда по Spring GraphQL, где мы с нуля подняли проект и подключили GraphQL к Spring Boot.

Теперь углубимся в разработку полноценного API: создадим более сложную схему с вложенными типами и связями между ними, реализуем запросы с фильтрацией, добавим мутации для изменения данных и затронем важные аспекты производительности.

Поехали!

Читать далее

Безопасность приложений: инструменты и практики для Java-разработчиков

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

Тема безопасной разработки программного обеспечения интересует всё большее количество разработчиков и руководителей. Дополнительным стимулом стал вышедший в конце 2024 года обновлённый ГОСТ Р 56939, в котором описано 25 процессов (мер) для построения безопасной разработки. Это хороший список, но что он означает на практике, например, для Java-разработчиков? Поговорим о сути некоторых процессов и инструментарии.

Статья является переработкой совместного вебинара компаний ООО "ПВС" и АО "АКСИОМ". Текстовый вариант содержит дополнительные ссылки, а некоторые моменты рассмотрены более подробно. Полную запись вебинара доступна здесь: "Безопасность приложений: инструменты и практики для Java-разработчиков".

Статья построена так же, как и вебинар: первую часть подготовил Андрей Карпов, затем слово передаётся Алексею Захарову (@AlexZ0).

Читать далее

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

Maven Central ограничивает пропускную способность: что важно знать в 2025 году

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

Команда Spring АйО подготовила статью про Rate Limit в Maven Central — один из тех инфраструктурных проектов, без которых современная JVM-экосистема уже немыслима. Здесь живёт подавляющее большинство библиотек и инструментов для Java, Kotlin, Scala и Android. После закрытия JCenter в 2021 году он окончательно стал де-факто центральным публичным репозиторием, куда в итоге попадает практически каждая новая библиотека.

Читать далее

Binary Heap на примере PriorityQueue в JAVA

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

Двоичная куча (binary heap) — это структура данных, которая представляет собой бинарное дерево, удовлетворяющее определённым условиям:

Читать далее

Android обновление API SDK до 35 версии в сжатые сроки, в большом легаси-проекте

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

Все мы (разработчики Android-приложений), не так давно получили письмо вида:
Редко подобные письма становятся проблемой, однако при определенных условиях - это может существенно потрепать вам нервы.

Костыль-решение

Как мы монолит пилили

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

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

Читать далее

Пользовательские аннотации PVS-Studio теперь и в Java

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

Начиная с версии PVS-Studio 7.38, Java анализатор вслед за двумя братьями C# и C++ поддерживает пользовательские аннотации в формате JSON. Зачем они нужны и что с ними можно делать, рассмотрим в этой статье.

Читать далее

Как не багнуться: почему плавание — лучший спорт для тех, кто сидит за компьютером

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

Работа в IT может быть по-настоящему вредной. Не из-за дедлайнов, багов или багрепортов. Главная угроза — сидячий образ жизни. По 8 и более часов в день мы находимся в одном и том же положении, что негативно сказывается на осанке, кровообращении, работе мышц и даже когнитивных способностях. Чтобы ум оставался продуктивным, тело должно быть в порядке. Ведь даже самый продвинутый искусственный интеллект не будет работать без надежного железа, а человеческий интеллект работает только в здоровом теле.

Одним из лучших видов физической активности для «сидячих» профессионалов считается плавание. Почему? Давайте разбираться.

Читать далее

Конфигурация Spring Security на пальцах

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

В новом переводе от команды Spring АйО мы рассмотрим решение для регистрации и аутентификации пользователя через клиентское JavaScript-приложение с использованием инфраструктуры Spring Security, а также access и refresh токенов.

Существует множество базовых примеров работы со Spring Security, поэтому цель данной статьи — более подробно описать возможный процесс с помощью блок-схем.

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

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