Обновить
179.01

Java *

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

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

Создание и тестирование gRPC сервиса (Spring Boot приложение)

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

Привет, Хабр! Сегодня я поделюсь опытом работы с gRPC и расскажу, как создать и протестировать gRPC-сервис в приложении на Spring Boot. Основная проблема — это отсутствие структурированной информации по корректному тестированию gRPC сервиса. Эта статья будет полезна для тех, кто только начинает знакомиться с gRPC и ищет руководство по написанию и тестированию сервисов.

Читать далее

Я хотел сломать Java и я это сделал

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

На написание этой статьи, меня натолкнул разбор результата изменения полей объекта, лежащего в HashSet. Я развил идею и привнёс альтернативную математику в Java.

Читать далее

Как не стоит работать с HashSet в Java?

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

Как сделать, чтобы в HashSet появились одинаковые объекты, и почему это плохо. Рассказ на собственном примере.

Читать далее

Борьба с временем ответа сервиса

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

История о том, как время ответа сервиса выросло в несколько раз в течение месяца, в чем была причина, и какое в итоге нашли решение.

Расскажите мне немедленно!

Используем Elasticsearch вместе со Spring Boot

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

Всем привет! Это моя первая статья на Хабре и в ней я хочу рассказать о том, как мы можем интегрировать Elasticsearch в наше Spring Boot приложение. Этот проект предназначен для ознакомления с технологиями и служит скорее шпаргалкой/пособием или же фундаментом для дальнейшего погружения в тему.

Читать далее

Пишем простую интеграцию с GitHub используя feign и jsonschema2pojo maven plugin

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

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

Для примера мы будем использовать интеграцию с API GitHub и привычные Spring аннотации для описания нашего feign клиента.

Читать далее

Книга «Грокаем функциональное программирование»

Время на прочтение2 мин
Охват и читатели23K
image Привет, Хаброжители!

Вам кажется, что функциональное программирование — это нечто сложное, доступное только гуру программирования? Эта книга развенчает миф об элитарности и позволит любому программисту с легкостью разобраться в хитросплетениях кода.

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

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

Учимся бесплатно деплоить Java (и не только) приложения (Docker, CircleCI, Google Cloud)

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

Всех приветствую. В последнее время все чаще задумывался о том какую бы еще полезную статью написать. Параллельно этому постоянно видел в интернетах рекламу о "крутых" курсах в IT, обещают сделать из вас Java, Python и какого угодно разработчика за полгода/год, и ладно с ним, допустим за год они чему-то вас обучат и, возможно, где-то вы попадете на бесплатную стажировку (что еще тоже под воросом, учитывая нынешний рынок). Но когда рекламируют "крутые курсы DevOps'ов", я уже начинаю задаваться вопросом, как можно стать ДевОпсом, не имея опыта программирования, не опробовав самому весь цикл разработки на хоть каком-то языке, не опробовав различные настройки сборки приложений, не опробовав Линукс, со всеми его утилитами, докер, кубер, git и т.д. в работе, а просто "обучиться" этому в обособленности от всего и ожидать, что тебя куда-то возьмут, а если и возьмут, то к чему-то серьезному подпустят? Ответа на этот вопрос я так и не нашел у себя в голове.

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

Задеплоить

Java Digest #5

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

Всем привет! ? ? ?

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

Сегодня вспомним Гете: «Не бойся, я от слов не отступлюсь. И отчего бы стал я вероломней? Ведь если в росте я остановлюсь, Чьей жертвою я стану, всё равно мне». 

Фауст — это человек, стремящийся к постоянному развитию и познанию жизни во всей ее полноте. Надеемся, наш дайджест поможет вам в этом. Stay Tuned! ?

Читать свежий выпуск

Упрощаем работу с Excel с помошью Apache POI + Jxls: готовый шаблонный код

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

В рамках нашего свежего курса «Работа с документами в Java» есть тема: «Работа с Excel с помощью Apache POI». Хочу поделиться здесь основными моментами кода этого занятия и решением проблем, с которыми пришлось столкнуться.

Пошаговое практическое руководство c преобразованием шаблона poiTemplate.xlsx в Excel документ с возможностью программной модификации страниц. Также код может послужить образцом применения паттерна стратегия.
Читать дальше →

Автоматизация разработки с помощью подхода DB-first

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

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

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

Читать далее

Может ли Java быть быстрой? Сравнение производительности Helidon Níma и Spring

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

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

Java долгое время была и остается фаворитом в enterprise решениях, но все чаще в высоконагруженных проектах предпочтение отдается более "производительным" языкам, таким как Go, а порой даже C++. Но вдруг Java тоже может быть быстрой?

Читать далее

Подтверждение электронной почты с помощью Spring Boot & Angular

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

Как сделать подтверждение почты с помощью Spring Boot & Angular?

Всем привет! Мы с вами поговорим о важном аспекте безопасности — подтверждении почты пользователей. Мы расскажем, как сделать это с использованием Spring Boot и Angular, двух мощных инструментов для создания современных веб-приложений.

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

Читать далее

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

jenv — удобный инструмент для управления версиями Java

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

Иногда может возникнуть необходимость использовать какую-то определенную версию Java для вашего проекта. Мы тоже в Surf с таким столкнулись при работе над одним из Flutter приложений-долгожителей. Решение нашлось в виде использования менеджера версий Java. Рассказываем, что за инструмент и как с ним базово работать на MacOS.

Читать далее

Spring Cloud Config и Git. Хранение и распространение конфигураций приложений

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

Еще одна статья о том, как можно применять Spring Cloud Config Server при выборе Git репозитория как хранилища конфигураций приложений в облаке и не только в облаке.

Читать далее

Аннотации и рефлексия в Java

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


Привет, уважаемые читатели Хабра!

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

Объектно-ориентированный подход к созданию REST-клиентов, или возможна ли жизнь без Open API

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

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

Меня зовут Андрей Зяблин, я главный разработчик в «Магните». Расскажу о том, как распространять API нативным для Java способом и пользоваться им в объектно-ориентированном стиле без использования генераторов кода. 

Читать далее

Как я делал солнечную зарядку для своего моноколеса и вот что получилось

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

Получилось так, что с недавнего времени я обзавелся личным электротранспортом, который называется моноколесо. Долго я шел к этому, но все же решился и ни о чем не жалею, даже наоборот, испытываю полный восторг от поездок на этом сногсшибательном транспорте. А еще очень люблю поездки на природу, а езда на моноколесе умножают эту любовь на 100500. Но есть одно «НО», и об этом далее...

Читать далее

Обыкновенное чудо: итоги сезона Java

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

Что бы вы сделали, имея на руках сказочный артефакт? Ответы могут быть разные. Кто-то захочет удивлять людей, показывая фокусы-покусы. Другим интереснее эксперимент: разрубит ли меч-кладенец яйцо дракона? Третьи попробуют сделать артефакт ещё сказочнее — чтоб скатерть-самобранка имела пять звёзд Мишлена, а сапоги-скороходы разгонялись до сверхзвука.

Как показал этот сезон Java, среди обитателей Хабра есть и те, и другие, и ещё всякие разные. Написать свой сборщик? Компилировать Java в WASM? Найти хитрый пример, над которым сеньор голову сломит? Нет ничего невозможного, когда в руках перо jar-птицы. C ним, как показывает практика, можно даже национальную платёжную систему создать.

Однако как ни крути, а сезон подошёл к концу, и пришло время подвести итоги. Под катом вы узнаете, кто из здешних кудесников оказался самым кудесатым и, по древнему обычаю, получит Apple MacBook Air 13 от партнёров сезона — Мир Plat.Form. А ещё — чем запомнился сезон и какие выводы можно из него сделать.

Читать далее

Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования

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

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

Читать далее

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