Обновить
194.69

Java *

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

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

Сага об агенте или как LLM может помочь в разработке на Jmix

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

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

Читать далее

Используем Buildpacks вместо Dockerfile

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

Привет! На связи Александр Бархатов — DevOps-инженер в крупнейшем продуктовом холдинге и автор статей в медиа вАЙТИ.. Самое популярное средство для сборки контейнеризированного приложения — это Dockerfile, текстовый файл, в котором прописаны специальные инструкции для готовых Docker-образов. Несмотря на всеобщую популярность Docker, в 2011 году вышел инструмент под названием Buildpacks, принцип работы которого мы рассмотрим в этой статье.

Читать далее

Spring Patterns. Часть 2. Spring + ThreadLocal. AOP. Transaction cache

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

Всем привет. Я разрабатываю приложения с использованием Java, Spring Boot, Hibernate.

В прошлой статье я показал реализацию паттерна Spring Fluent Interface. При помощи которого можно инкапсулировать похожие действия внутри приложения в модуль, предоставлять клиентскому коду удобный декларативный API, и при этом «кишки» модуля могут использовать «магию» Spring.

В этой статье я хочу поделиться опытом работы с Spring + ThreadLocal.

Два слова о ThreadLocal.

Это потокобезопасная переменная. Под капотом у которой ConcurrentHashMap. Ключ — текущий поток (там чутка сложнее, но для понимания будет достаточно). Значение может быть любым типом, ThreadLocal типизирована <T>. При этом можно инициализировать значение null, или сразу чем‑то, например пустым списком.

Читать далее

Вышел Spring AI 1.0.0 M3

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

Spring выпустил Spring AI 1.0.0 M3, который принес множество значительных улучшений и новых возможностей в разработку AI-приложений. 

В новом переводе от команды Spring АйО рассказывается про улучшения, связанные с observability, совершенствование системы advisor`ов и оптимизацию работы с функциями и embedding моделями.

Читать далее

Принципы SOLID на примерах из жизни и разработки

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

Задача этой статьи только одна - попробовать уложить принципы SOLID на понятных «бытовых» примерах, а уже потом посмотреть, как оно может работать на практике - в коде.

Итак, SOLID - это 5 принципов, которые используются при разработке приложений. На каждый принцип по букве:

1. S — Single Responsibility Principle (Принцип единственной ответственности)

Определение: Каждый класс должен выполнять только одну задачу.

Пример из жизни:

Например, мы купили шкаф для одежды. 

Читать далее

Лучший способ создания нескольких окружений для Spring Boot приложения с помощью Docker Compose

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

В новой статье от команды Amplicode я расскажу, как можно создать несколько Docker Compose файлов для разных нужд. Например, для продакшена и разработки, и при этом не утонуть в копипасте.

Читать далее

Туториал по Spring Data Envers для начинающих

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

Команда Spring АйО перевела статью, которая отлично подойдёт тем, кто ещё не знаком со Spring Data Envers. В статье на простых примерах объясняется, как отслеживать изменения данных в приложении, используя этот инструмент.

Читать далее

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

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

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

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

Java Digest #17

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

Spring patterns. Fluent interface

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

Spring Patterns. Fluent interface.

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

Читать далее

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

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

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

Читать далее

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