Обновить
155.1

Java *

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

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

Создание телеграм-бота (Spring Boot, Kafka, PostgreSQL), часть первая

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

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

Статьи будут разделены на 2 части, первая часть - создание основного бота с оправкой логов (Kafka Producer) и записью их в БД, вторая часть - обработка всех логов (Kafka Consumer).

Читать далее

Аннотации в Java и их обработка

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

Аннотация — это специальная конструкция языка, связанная с классом, методом или переменной, предоставляющая программе дополнительную информацию, на основе которой программа может предпринять дальнейшие действия или реализовать дополнительную функциональность, такую как генерация кода, проверка ошибок и т. д.

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

Читать далее

Java: продвинутая конкурентность

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

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

Читать далее

По колено в JVM куче, или на пороге потери данных

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

Смоделируем ситуацию: у вас есть приложение на JVM (без разница, будь то Kotlin, Java или Scala), а еще у вас есть уверенность в себе и немного не хватает ответственности.

В пачке с приложением, а именно сервером, идет несколько стандартных штук - база данных, небольшой http слой, в общем, все стандартно.

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

Мне кажется, любой уважающий себя программист на +- хобби проекте захочет навернуть нереально крутое самописное решение, чем, собственно говоря, я и занялся.

Была ли это хорошая идея?

Пишем свой плагин для IDEA для поддержки нового языка (часть 2)

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

Продолжение статьи о создании языкового плагина для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin. Начало

Читать далее

Пишем свой плагин для IDEA для поддержки нового языка (часть 1)

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

В статье рассмотрено как создается языковой плагин для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin.

Читать далее

Cordova: связь между JavaScript и Java

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

Cordova — это кроссплатформенная среда разработки с открытым исходным кодом, которая позволяет использовать HTML и JavaScript для разработки приложений на нескольких платформах, таких как Android и iOS. Как Cordova позволяет приложениям работать на разных платформах и реализовывать функции? Все дело в многочисленных плагинах в Cordova. Они позволяют сосредоточиться исключительно на функциях приложения, не взаимодействуя с API на уровне ОС.

Читать далее

Путеводитель по ID для JPA сущностей. Часть 1: ID, генерируемые на сервере

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

Разработка инструментария – очень познавательное занятие, потому что заставляется задуматься над теми вещами, которые в процессе разработки иногда не замечаешь. Казалось бы, создание @Id атрибута в JPA – рутинное занятие и каждый разработчик может сделать айдишник, даже не включая мозг. Однако, когда начинаешь углубляться в эту тему и пытаться разработать инструмент, который не только помогает писать код для определения ID, но и подсказывает потенциальные проблемы, то всплывает много интересного. И наши соображения, которыми мы руководствовались при разработке JPA Buddy, вылились в этот цикл статей. 

Читать далее

Kata вызов Wordle JLDD

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

Мне нравится создавать и решать кодовые ката. Код Ката — это головоломки по программированию, которые помогут вам отточить свои навыки программирования. 

Я написал статью под названием «Learn to Kata and Kata to Learn» для книги «97 вещей, которые должен знать каждый Java-программист», и ссылка на статью доступна бесплатно здесь, в публикации на Medium.

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

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

Хосе Помар на этой неделе мне прислали вызов Wordle Kata JLDD в виде теста, для которого мне нужно было написать код, проходящий этот тест. 

Мне нравится этот тип ката, который следует классическому стилю TDD с использованием подхода «сначала тест». Выше приведен тестовый код для kata с использованием простых утверждений JUnit 5.

Читать далее

Ручная кофемолка: инструменты командной строки для Java

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

В книге "97 вещей, которые должен знать каждый Java-программист" есть глава о некоторых инструментах командной строки в JDK (я дал 2 из 97 советов).

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

Я предпочитаю командную строку для своей повседневной работы, используя комбинацию команд gitsedgrep, и т. д., bash что упрощает выполнение повторяющихся задач.

Читать далее

Как писать подзапросы EXISTS с помощью JPA и Hibernate

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

В этой статье я покажу вам, как писать подзапросы EXISTS с помощью JPA и Hibernate.

Подзапросы EXISTS очень полезны, так как позволяют реализовать SemiJoins. К сожалению, многие разработчики приложений не знают о SemiJoins и ограничиваются тем, что эмулируют его с помощью EquiJoins (например, INNER JOIN) в ущерб производительности запросов.

Читать далее

gRPC на практике: особенности, преимущества и недостатки

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

Привет, Хабр!  Разрабатывая экосистему для «Метр квадратный», мы со старта проекта планировали большую линейку продуктов. Поэтому подбирали стек, который поможет реализовать максимум идей. В итоге мы пришли к протоколу gRPC.

 В этом материале я расскажу:

— о преимуществах gRPC;

— об особенностях работы с протоколом, и о том, как с ними жить;

— о тех проблемах, с которыми мы столкнулись; 

— и о том, как их решить.

gRPC или не gRPC?

Как создать голосовой навык для Яндекс.Алисы, используя Spring Boot и Яндекс.Облако

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

В статье рассказывается, как разработать навык для платформы Яндекс.Диалоги, используя Java и фреймворк Spring Boot, а затем развернуть его в Яндекс.Облаке.

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

Читать далее

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

Прикручиваем авторизацию на основе KeyCloak к веб-приложению

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

Жизненный цикл разработки корпоративного приложения в нашей компании привел меня к, по сути, банальной задаче - “прикручиванию” пользовательской авторизации к фронту приложения. Пользователями приложения должны быть сотрудники компании, а идентификационным провайдером должен стать корпоративный Active Directory (далее AD).

Было принято решение не работать с AD напрямую при авторизации сотрудников в корпоративных приложениях, а использовать для этого довольно удобный брокер авторизации – KeyCloak.

Читать далее

JNI, часть 3: производительность Java/JNI/NDK

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

Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу замеры производительности, достаточно тривиальные, но отображающие суть. И если вы не знакомы с JNI, но тема интересна, то советую ознакомиться с первой и второй частью этой серии статей.

Читать далее

JNI Часть 2: Примеры

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

Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу примеры решений на JNI, которые совсем немного сложнее, чем hello world. И если вы не знакомы с JNI, то советую начать с первой части.

Читать далее

Мониторинг приложения Spring Boot с помощью Micrometer, Prometheus и Grafana, используя пользовательские метрики

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

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

В этой статье я покажу, как можно мониторить веб-приложение Spring Boot с помощью Micrometer, который отображает метрики нашего приложения, Prometheus, который хранит их, и Grafana для визуализации этих данных в виде графиков.

Читать далее

JNI Часть 1: Введение

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

Всем привет! Меня зовут Роман Аймалетдинов и я разрабатываю клиентское приложение Ситимобил. Решил написать небольшую серию из трех статей по JNI, так как технология используется редко, но иногда она бывает очень полезной. Несмотря на то, что я разрабатываю классические приложения под Android, иногда хочется посмотреть технологии рядом со своей специализацией.

Читать далее

Уж+ёж: реактивные компоненты в сервлетном окружении (3/3)

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

В предыдущей заметке было подробно рассмотрено одно из решений для обеспечения повсеместной доступности текущего обрабатываемого HTTP-запроса. В отличие от неё, нынешняя заметка посвящена не одному большому пункту, а двум компактным: поддержке AOP-аспектов и работе OpenFeign-клиентов в «гибридных» приложениях.

Читать далее

Java 18. Что нового добавили, и почему вам это пригодится

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

Выход Java 18 назначен на 22 марта 2022 года, ждать осталось недолго. Релиз уже несколько дней находится во второй фазе стабилизации, а значит, список фич уже финализирован, а значит настало время обратить на них наше внимание.

Сейчас у нас есть возможность попробовать новый функционал и понять, насколько он полезен. А пробовать есть что, несмотря на то, что это не LTS релиз!

В этой статье мы рассмотрим новые JEP и объясним, что они делают, и для чего они нужны. 

Хочу попробовать!

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