Обновить
198.13

Java *

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

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

Spring Cloud Gateway + Keycloak: полноценный пример

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

Всем привет! Сегодня мы посмотрим, как сделать полноценную интеграцию api шлюза spring cloud gateway и keycloak, так как мне показалось, что тема недостаточно раскрыта. С небольшими оговорками этот пример можно использовать в реальных продакшн условиях.

Читать далее

Simple Spring (полный фарш)

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

У нас был spring и hibernate
Мы твёрдо знали, что OAuth2.0 это хорошо, а принцип "Api first" ещё лучше.
И нам дали ровно 48-ь часов чтобы создать работающую инфраструктуру с возможностями авторизации, отслеживания метрик, динамической маршрутизацией запросов и раздачей конфигураций сервисам "на лету". Кроме того от нас хотели получить "best practics" по работе с БД в коде и лёгкой поддержке ролевой модели.

Читать далее

JOOQ — не замена Hibernate. Они решают разные проблемы

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

Последние год-полтора я натыкаюсь на статьи и доклады (особенно в англоязычном сегменте) о том, что JOOQ – это современная и более крутая альтернатива Hibernate.

Скажу сразу, что я считаю JOOQ отличной библиотекой (именно библиотекой, а не фреймворком, в отличие от Hibernate). Он прекрасно справляется со своей задачей – работой с SQL в режиме статической типизации, чтобы отловить большинство ошибок на этапе компиляции.

Но когда я слышу аргумент, что время Hibernate прошло и пора все писать на JOOQ, для меня это звучит примерно так же, как то, что время реляционных БД прошло и теперь нужно использовать только NoSQL. Звучит смешно? Но по меркам истории буквально вчера такие разговоры велись вполне серьезно.

Я думаю, дело кроется в непонимании корневых проблем, которые решают эти два инструмента. Этой статьей я хочу ответить на эти вопросы.

Читать далее

Отчёт о тенденциях Java от InfoQ за 2024

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

В этой статье представляем отчёт, в котором команда редакторов InfoQ описывает текущее состояние внедрения технологий и выявляет новые тенденции в Java. Основное внимание уделяется языку Java, смежным языкам, таким как Kotlin и Scala, а также JVM и Java-фреймворкам и утилитам. Мы обсудим как ключевые тенденции в самой Java, так и эволюцию фреймворков — Spring Framework, Jakarta EE, Quarkus, Micronaut, Helidon, MicroProfile и EclipseStore.

Читать далее

Волшебные ссылки теперь в Spring Security

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

Концепция волшебных ссылок (magic link) далеко не нова, однако долгое время у разработчиков не было надежного решения с полноценным комьюнити, которое позволяло бы быстро и просто реализовывать волшебные ссылки в своих приложениях. И вот, наконец, такая фича появилась в spring security. Давайте подробно разберем что у нас получилось, какие проблемы остались, и что планируется реализовать.

Читать далее

Можно ли уместить игру Minecraft всего в один QR-код?

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

Ответ: да! И вот же он:

Игра запускается, и вы можете перемещаться по миру 64x64x64 при помощи клавиш WASD. Пробелом прыгаем, мышью осматриваемся. Щёлкнув левой кнопкой мыши, можно разрушить блок, а правой — установить землю.

Можно просмотреть QR-код при помощи следующей команды под Linux:

zbarcam -1 --raw -Sbinary> /tmp/m4k &&chmod +x /tmp/m4k  && /tmp/m4k

-1: выйти после того, как код будет просканирован

--raw: не обрабатывать его как текст

--Sbinary: воспользоваться двоичной конфигурацией

Проект выложен на GitHub здесь:TheSunCat/Minecraft4k

Читать далее

pg-index-health – статический анализ структуры PostgreSQL баз данных

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели4.5K

С 2019 года я занимаюсь разработкой open source инструмента под названием pg-index-health, который позволяет анализировать структуру БД и находить потенциальные проблемы.

Все эти годы pg-index-health эволюционировал и развивался. За 2024 год мне при поддержке нескольких контрибьюторов удалось решить большинство остававшихся «детских болячек» и довести проект до состояния, когда он готов к масштабной экспансии.

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

Читать далее

Демистификация транзакций и исключений с помощью Spring

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

На основе статьи Arpendu Kumar Garai "Demystifying Transactions and Exceptions with Spring", от 31 января 2023 года.

Spring Framework обеспечивает обширную поддержку транзакций. Но прежде чем мы углубимся в концепции управления транзакциями, давайте разберемся с основной концепцией транзакции.

Транзакция базы данных (СУБД) — это серия из одной или нескольких операций, выполняемых как единая атомарная единица работы. Это означает, что либо все операции в транзакции завершаются успешно, либо ни одна из них не применяется к базе данных. Транзакция может состоять из одной команды, группы команд или любых других действий с базой данных. Любая СУБД, поддерживающая транзакции, должна гарантировать качество ACID для сохранения целостности данных.

ACID (от англ. atomicity, consistency, isolation, durability) — набор требований к транзакционной системе, обеспечивающий наиболее надёжную и предсказуемую её работу.

Основные требования:

Читать далее

Что нового в Apache Kafka 4.0?

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

Не за горами выход релиза 4.0 Apache Kafka. Согласно графику релиза, 15 января состоится code freeze, а через пару недель или позже, после стабилизации, версия 4.0 увидит свет. Самое время присмотреться, что же в неё вошло.

Читать далее

Java Digest #20

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

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

С Новом годом, дорогие читатели! Надеемся, праздник прошел весело и без последствий 😉 В этом выпуске: Spring Cloud 2024.00, ранние версии JDK 24 и 25. Spring, Micronaut и Quarkus тоже не забыли обновиться. Не забудьте посмотреть про боли в PostgreSQL, целых два выпуска Java 24 Newscast и про великий Java рефакторинг, Project Valhalla. Почитайте целый набор статей про вызов внешних функций и доступ к Memory API. А в самом конце оторвитесь под рок-хит, написанный на Java, и вспомните английский алфавит с помощью Java-аннотаций. 

Читать под тарелочку оливье

Тонкости JMS API: как не терять сообщения

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

Типичная ситуация: один сервис добавил сообщение в очередь, другой сервис его прочитал, но из-за ошибки или рестарта сервиса не смог передать дальше. Сообщение потеряно.

В логах при этом не всегда есть что-то полезное, и часто всё заканчивается тем, что разработчики идут ругаться: «Почему в нашей очереди нет вашего сообщения?»

Читать далее

HT2000 Сбор и хранение данные по CO2

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

Добрый день, данный пост посвящен проекту — ссылка на Github.

Основная идея, получать данные из прибора HT2000 через USB кабель и сохранять в базу данных, далее графически отобразить данные.

Внешне это выглядит как-то так.

Читать далее

Часть 1: Как я создал идеальный REST API — микросервис инцидентов на Java и Spring

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

В этой статье вы узнаете, как спроектировать и реализовать REST API для микросервиса на Java с использованием Spring Framework.

Рассмотрим лучшие практики, принципы архитектуры, реализацию CRUD-операций и удобные инструменты, такие как Lombok, ControllerAdvice, MapStruct. Эта статья будет полезна как начинающим разработчикам, так и тем, кто хочет улучшить свои навыки в проектировании REST API.

Читать далее

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

Работа с файлами через Yandex Object Storage в Spring Boot

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

Yandex Cloud Object Storage — это совместимое с AWS S3 облачное хранилище. В этой статье мы интегрируем его в Spring Boot приложение, используя SDK Амазона

Читать далее

Делаем свой docker-образ Apache Kafka 4.0

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

В 2024 году мы не дождались выхода в свет Apache Kafka 4.0, в которой окончательно исчезнет поддержка ZooKeeper, оставив нам для создания кластеров только KRaft. Кто-то давно уже перешёл на эту прекрасную технологию, другие же размышляют, как им жить дальше — оставаться на линейке 3.х или в омут с головой.

Новогодние каникулы самое подходящее время для того, чтобы пощупать новую версию. Хотя код невозбранно доступен в Github проекта Apache Kafka, docker-образов текущих сборок 4.0 мне найти не удалось. Также поддержку 4.0 ещё не добавили в довольно популярный, и с недавних пор мною любимый, k8s-оператор strimzi. Ну что же, придётся устроить себе праздник самому!

Читать далее

Конец года — новые баги с датами

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

Наткнулся сегодня (24-12-30) на преинтереснейшую ошибку.

Простенький скрипт ищет файл по дате создания в имени, и вместо вчерашнего дня (24-12-29) почему-то ищет файл за следующий год (25-12-29).

Казалось бы, мистика, всё прекрасно работало с лета, и как на зло сломалось как раз под конец года ... и кто в этом виноват?

Читать далее

Kafka Streams ч5: настройка окон, работа с задержанными событиями и suppression

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

Это моя финальная часть(ну пока что ;)) серии статей про Kafka Streams, прошлые статьи тут [ноль, один, два, три] Теперь давайте разработаем приложение, которое считывает: cобытия о пульсе из топика pulse-events.

Читать далее

Построение динамических запросов к базе данных с использованием Spring Data JPA Specifications

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

Spring Data JPA Specifications — мощный инструмент для написания динамических запросов в реляционных базах данных. Они позволяют строить сложные SQL-запросы в декларативной форме, комбинируя их с помощью предикатов, таких как ANDOR и т.д используя Java-код. В этой статье мы рассмотрим, зачем нужны Specifications, их преимущества и недостатки, а также лучшие практики для использования.

Читать далее

Кошмар работы с *.docx файлами на Java посредством класса XWPFDocument из API Apache POI

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

Использование *.docx файлов как шаблонов для формирования кастомных отчётов с помощью библиотеки Apache POI XWPF на Java и связанные с этим проблемы. Примеры кода выполняющие простейшие операции поиска, замены, удаления элементов документа.

Читать далее

Секреты в Java-сервисах на Spring: где брать и как обновлять

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

Привет, Хабр! Меня зовут Андрей Чернов, я Java‑архитектор в СберТехе, где разрабатываю архитектуру микросервисов. Сейчас я расскажу про нюансы работы с секретами в Java‑сервисах на всеми любимом Spring Boot и про наш опыт такой работы. В современном мире практически не осталось автономных, ни с чем не интегрированных, сервисов. А секреты в первую очередь нужны для безопасных интеграций.

Статья будет состоять из двух частей. В первой расскажу про особенности работы с секретами в Java на Spring Boot — где их брать и как применять к вашему сервису на примере того, как мы делаем это в Platform V Sessions Data (распределенный in‑memory кеш для клиентских сессий, который позволяет снизить нагрузку на внешние сервисы и базу данных). Также расскажу про стандартные варианты обновления секретов «на горячую» (не останавливая, не перезапуская сервисы, и даже не снимая с них нагрузку) и что с ними не так.

Во второй части подробно разберу, как мы обновляем секреты «на горячую». Эти советы помогут вам улучшить работу с секретами, а значит сделать сервисы более защищёнными. Ведь если секреты попадут в руки злоумышленников, те смогут атаковать ваш сервис — вывести его из строя, украсть конфиденциальные данные и т. п. А любая успешная атака чревата для компаний потерей денег, нервов, времени и репутации.

Читать далее

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