Обновить
256K+

Java *

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

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

Тестируем интеграцию с очередями сообщений правильно

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

Наверняка в вашем проекте используется очередь сообщений (не важно kafka, pulsar или какой-нибудь зайчик). Основной проблемой является подробное тестирование работы вашей системы. Рассмотрим варианты решения и посмотрим, что там у автора в рукаве.

Отправлять сообщения

Java Digest #17

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

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

В этом выпуске детально рассмотрим новый релиз Java 23 и расскажем, какие JEPы в него вошли. Посмотрим несколько интересных докладов с JVM Language Summit, узнаем об опыте Netflix по переходу на Generation ZGC и почитаем интересную статью о низкоуровневых инструментах обеспечения гарантий порядка памяти.

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

Создание компонента Apache Camel

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

Приветствую, сообщество!

Меня зовут Александр, я java разработчик в компании БФТ. Тружусь я на проекте СМЭВ-адаптера, где мы занимаемся транзитивной обработкой сообщений. В нашу зону ответственности входит несколько микросервисов, которые обрабатывают очень много сообщений, почти ничего не пишут в БД, но часто обращаются в сторонние прикладные сервисы.

Для отслеживания пути сообщения через наши микросервисы мы используем Zipkin. Помимо этого в проекте задействован Apache Camel, с помощью которого мы выстраиваем цепочку обработки сообщения в одном конкретном микросервисе. Стандартные средства для работы с Zipkin обычно позволяют легко добавить к трассе вход, выход в сервис и запись в БД, но, т.к. к нас не совсем стандартное поведение у сервисов, нам хотелось выделять в Zipkin и обращение в сторонние сервисы.

Хотелось эту логику как-то элегантно встроить в роут Camel, но существующие средства такой возможности не предоставляли.

Было принято решение написать свой компонент для Apache Camel. Делали мы это впервые и, к сожалению, полноценного гайда в интернетах найти не удалось...

Встречайте! Гайд по написанию собственного Camel-компонента!

Читать далее

Dagger Hilt (Для начинающих)

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

Я являюсь разработчиком мобильных приложений с опытом уже более 3х лет! Я всегда разрабатываю мобильные приложения один - это требует моя работа. Но сегодня я хочу поделиться с Вами тем, что такое Dagger Hilt!

Следите за мной в телеграм

Dagger Hilt - это необходимый каждому инструмент, который упрощает в разы разработку мобильных приложений. Служит для внедрения зависимостей. В первую очередь он необходим тем, у кого в проекте есть множество классов, которые требуют реализации. Хотите чтоб за вас это сделал кто-то другой? Dagger Hilt к вашим услугам.

Читать далее

Аутентификация через телеграм в Spring Boot приложении

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

Способ аутентификации через телеграм отлично описан в документации. В этой статье мы реализуем его в Spring Boot приложении.

Читать далее

AI-ассистент со Spring AI (Часть I)

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

В новом переводе от команды Spring АйО показан процесс интеграции AI в немалоизвестное приложение Spring Petclinic. 

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

Читать далее

Team Lead. «Жизнь на грани»

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

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

Читать далее

Точки соприкосновения: Java & GC

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

Можно писать на Java, вообще не задумываясь, как работает сборка мусора: «ну оно же там само собой происходит как-то». Однако разобраться как следует — не только интересно, но и полезно: например, какой из подходов к GC лучше соответствует конкретно вашему проекту?

На нашей конференции JPoint 2024 был доклад Дмитрия Силина об этом, участникам он понравился, и мы решили сделать для Хабра текстовую версию. Публикуем и текст, и видеозапись.

Читать далее

Как мы в клиринге переходили от REST к Kafka

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

Всем привет! Меня зовут Владислав, я занимаюсь разработкой клиринговой системы в Мир Plat.Form.

Сегодня я хотел бы поделиться нашим опытом перехода от взаимодействия через REST к использованию Kafka между системой Фронт-Офиса, в которой хранятся данные об авторизованных транзакциях, и системой Бэк-Офиса, ответственной за выполнение клиринга.

Читать далее

Почему нет достойных форматтеров кода для Java?

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

Форматирование кода в Java всегда было темой обсуждения среди разработчиков. Многочисленные инструменты предлагают свои решения, но ни один из них не кажется идеальным. Так, возникает вопрос: есть ли форматтер, который действительно отвечает всем нашим требованиям?

В новом переводе от команды Spring АйО рассмотрены популярные инструменты, их плюсы и минусы, а также рассуждения на тему: может ли Java-экосистема предложить достойный форматтер?

Читать далее

Паттерны применения многопоточности на коммерческом проекте (на примере Java)

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

После прочтения у вас сложится понимание того как работать с многопоточностью на реальном проекте

Список рассмотренных паттернов:

Запуск асинхронного процесса по сигнал
Параллельное выполнение задач без ожидания результата
Ограничение количества потоков для вызова внешнего сервиса
Выполнение Scheduled задач
Параллельное обращение к разным источникам, с последующим объединением результатов
Контекст
Ожидание асинхронного ответа

При этом в статье я намеренно не касался низкоуровневых механизмов, таких как synchronized, lock, volatile, барьеров (разве что semaphore), потому что они значительно реже применяются в работе

Читать далее

Spring patterns. Fluent interface

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

Spring Patterns. Fluent interface.

В этой статье я хочу поделиться опытом создания Fluent Interface, но не классического шаблона из GOF, а с использованием Spring. Классическим примером шаблона Fluent Interface в Java является Stream API. Я покажу, как можно написать нечто подобное, используя Spring.

Читать далее

А что если можно научиться программировать по голливудским фильмам?

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

Кто-то предлагает освоить популярную веб-профессию за 6 месяцев. Кто-то даже предлагает оплатить курсы после трудоустройства. Может все вокруг врут, все намного проще и достаточно посмотреть десяток голливудских фильмов? Давайте разбираться.

Читать далее

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

Впечатления от доработки Telegram Android

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

Я являюсь давним и постоянным пользователем Telegram, никакие мессенджеры не заменят мне белый самолетик на фоне чистого голубого неба. Не то, чтобы я был большим поклонником Дурова, просто так исторически сложилось. И естественно, поскольку я постоянно пользуюсь Telegram на десктопе и на телефоне, мне со временем захотелось некоторых дополнительных фичей и возможностей, отсутствующих в официальных и распространенных неофициальных клиентах. Ждать милости от природы занятие бесперспективное, поэтому я решил реализовать доработки самостоятельно. Начал с десктоп версии, о чем уже писал на Хабр. Сейчас закончил первый этап доработок Android версии, и решил поделиться впечатлениями и результатом с сообществом.

Ссылка на итоговое приложение и исходный код находится в конце статьи.

Читать далее

Что расскажут на Joker 2024: безумие в хорошем смысле слова

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

Пока многие ждут фильм «Джокер: Безумие на двоих», Java-разработчиков сильнее волнует приближающаяся конференция Joker 2024.

Про что-то на ней тоже можно сказать «безумие», но в хорошем смысле. Например, некоторым разработчикам безумно важна производительность, и они хотят считать каждую миллисекунду там, где другие скажут «и так сойдёт». На Joker будет подходящий им контент — вроде доклада о профилировании «Что можно успеть за половину миллисекунды?»

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

Отдельная история — «кейноуты», общие открывающие/закрывающие доклады. Они могут отходить от Java-специфики, так что один из них будет посвящён использованию ИИ современными художниками. И судя по описанию «ИИ сегодня — главный Джокер», там без некоторого безумия тоже не обойдётся.

Но для тех, кому безумия не хочется, есть и много «обычных», но полезных докладов: о Spring, хранении данных, популярных инструментах… Публикуем всю программу конференции — смотрите, что в ней интересно для вас.

Программа Joker 2024

Вот здесь точно нужен рефакторинг, есть идеи?

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

Бывают пет-проекты, а у нас получился проект с наработками, которые вроде бы могут быть полезны например студентам технических специальностей и просто всем кому интересно поразбираться с возможностями визуализации на C# + WPF, например, или с системой избыточного кодирования.

Мы со студентами сделали приложение для анализа характеристик LDPC кодов изначально на Java (Java код тоже присутствует в репозитории) потом я переписал его в виде проекта C# + WPF, чтобы добавить возможность конфигурации статистических экспериментов через визуальный интерфейс, а главное чтобы иметь возможность визуализации результатов экспериментов в виде графиков (обычных, в X, Y осях). Я как раз для работы сделал библиотеку для рисования обычных математических графиков по массивам значений с возможностью масштабирования области просмотра мышкой.

Думаю студентам любых технических направлений может пригодиться такая библиотека при том, что весь ее достаточно компактный исходный код (5-7 файлов) локализован в проекте и доступен как для изучения так и для любых изменений и доработок.

Под катом ссылка на Гит-репозиторий с исходным кодом и обзор реализованной функциональности со скриншотами.

Читать далее

Основы Docker: контейнеризация, Dockerfile и Docker Compose. Часть 2

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

Привет, Хабр! Меня зовут Толя, я лидер компетенции Java в Цифровом СИБУРе. Наш прошлый материал о Docker собрал классный фидбэк, поэтому мы решили развить тему и подготовить ещё несколько статей, двигаясь от простого к сложному.

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

Читать далее

ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага

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

Про байт‑код написано уже немало. Он везде, и никого этим не удивить: его генерирует компилятор, переупаковывает система сборки, «портит» обфускатор и изредка читают программисты. Естественно, для работы с байт‑кодом есть немало инструментов, которые используются в разных областях и на разных платформах. Среди них и ByteWeaver — инструмент для патчинга байт‑кода во время сборки, который может быть полезен разработчикам под Android.

Меня зовут Александр Асанов. Я Android‑разработчик в OK, Tracer, ByteWeaver. В этой статье я разберу, что такое байт‑код, как и зачем с ним работать, расскажу о ByteWeaver и покажу примеры работы с байт‑кодом.

Читать далее

Как я разочаровался в юнит тестах и решил, что единственный вариант получить от них пользу — 100% покрытие

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

Когда‑то я писал код и предполагал, что с хорошим тестовым покрытием станет намного проще ловить баги. Мы сделали высокое покрытие тестами, и в итоге стали ловить баги еще и в тестах. (с)

Читать далее

Образы БД для юнит-тестирования, опять

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

В прошлой статье был предложен вариант для создания docker образов БД для последующего использования в разработке и тестирования приложений в пайплайнах гитлаба.

Из-за перехода на новую инфрастуктуру k8s 1.30 (restricted psp) и новый гитлаб 17.3 все это ломается. Поэтому придется исправлять ситуацию!

Запускай