Обновить
128K+

Java *

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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


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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду

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

Преуведомление

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

Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#. Вот и первый пункт, который пробуждает во мне зависть (я Kotlin-разработчик).

Читать далее

Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java

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

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

Воспользуемся S3-хранилищем Yandex Object Storage для сохранения фотографий и получения ссылок на них с использованием AWS SDK Java. А еще с помощью Java Concurrency увеличим производительность в 5 раз.

Читать далее

Сделали по красоте: победители «Конкурса красоты кода»

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

Вчера прошла наша технологическая конференция SmartDev на которой мы подарили заслуженные призы победителям «Конкурса красоты кода». Свои работы прислали больше 1000 талантливых программистов. Некоторых мы даже пригласили к себе работать. Код оценивало очень большое жюри из экспертов Сбера и других компаний.

Напомним, что в конкурсе было пять категорий: Python, Java, Mobile (Android), Data Science, Fronted, — и в каждой из них было по три номинации.

Читать далее

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

OOM: direct memory при работе с сетью TCP/IP через NIO в Java

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

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Работаю в компании без малого 20 лет, из них 18 пишу на Java.

Сегодня я расскажу об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.

Эта статья основана на реальной практике борьбы с "OutOfMemory: direct memory".

Читать далее

Построение гибкой и распределенной архитектуры с использованием Kafka и Kafka Connect: Часть 2 — Получатель и Helm Chart

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

Данная статья является продолжением статьи - Ивентная модель данных с использованием Kafka и Kafka Connect: Построение гибкой и распределенной архитектуры.

Добро пожаловать во вторую часть статьи о построении гибкой и распределенной архитектуры с использованием Apache Kafka и Kafka Connect! В первой части мы ознакомились с ивентной моделью данных, разработали сервис отправителя и настроили интеграцию с Kafka, чтобы асинхронно отправлять сообщения. Теперь настало время рассмотреть вторую часть этого увлекательного проекта.

Читать далее

Решаем задачу о секретном рукопожатии на Java

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

Привет! Меня зовут Сергей Чеботарёв, я наставник на курсе «Java-разработчик». Многие обучаются программированию полностью самостоятельно, кто-то выбирает курсы и решает практические задачи в рамках программы. И тем и другим важно тренироваться дополнительно. Чтобы помочь с практикой, я приготовил небольшую задачу о выдуманном секретном рукопожатии. 

Давайте напишем программу на Java и вместе разберём эту задачку: вспомним двоичное счисление, простые операции по работе с Map и работу с пользовательским вводом.

Читать далее

Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)

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

На дворе 2023 год. На хабре до сих пор пишут статьи по созданию телеграмм ботов, скажите вы, но не спешите с выводами. Во-первых, пожалеем студентов, во многих вузах на программистских направлениях до сих пор заставляют писать ботов хотя бы раз в течение обучения. И многие гайды в интернете немножко outdated в плане деплоя (хероку умер, доздравствует... но об этом немного позже). Т.е. основным уклоном данной статьи будет именно этот аспект. Ну и сам бот у нас будет также не скучный и не самый простой, какие часто в гайдах, а с полноценной привязкой к базе данных, т.е. полноценное Spring приложение.

Ну так о чем же бот и как мне пришла в голову такая идея?

Читать далее

Принцип Универсалий: или локальный подход к Dependency Injection

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

Всем хорошо известны интерфейсы то есть контракты, которым должны соответствовать классы, однако мало кто слышал про универсалии, которые являются последним словом в дизайне ПО. С точки зрения философии, откуда это понятие исходит, универсалия это свойство, которое присуще двум или более сущностям определенной категории, например свойство "цветной" присуще всем объектам, у которых может быть цвет: если бы мы моделировали Pencil, то есть карандаш, мы бы сказали, что Pencil implements IColorful, посколько он имеет цвет. Но интерфейсы понятие широкое, которое также используется для описания поведения. Я же предлагаю ввести специальную категорию интерфейсов, называемых универсалиями, у которых есть всего 1 свойство, содержащее конкретный объект, для задачи внедрения зависимостей и уменьшению бойлерплейта.

Читать далее

Вышла Java 21

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели109K
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать дальше →

Protobuf или Reflection в JNI

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

Вы когда нибудь задумывались, на сколько grpc быстрый. Да в сети, ему равных нет. Если вы гоняете маленькие сообщения, которые надо быстро доставить, то лучше grpc попросту не найти ( найти, но по мнению автору protobuf остается движком сериализации, поддерживающим большее кол-во языков ). Но насколько он хорош? Сможет ли он к примеру сравнится просто с нативными вызовами?

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

Читать далее