Как стать автором
Обновить
78.61

Java *

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

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

Паттерны Singleton и Multiton в Java: когда и какой лучше?

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

Привет, Хабр!

Паттерн Singleton гарантирует существование лишь одного экземпляра класса и предоставляет к нему глобальную точку доступа. Этот паттерн стал почти синонимом чистоты кода в многих сценариях работы с Java, где требуется строго один экземпляр объекта. Но не менее интересный и гибкий паттерн - это Multiton. Менее известный, но не менее мощный, он позволяет создавать множество экземпляров класса и контролировать их число и жизненный цикл через предопределенные ключи.

В этой статье мы рассмотрим эти паттерны и их различия.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 2

Новости

Выпущена версия Jmix 2.2

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 581

Данная статья описывает важные обновления, представленные в только что вышедшем релизе платформы Jmix 2.2.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Как облегчить жизнь программисту при написании тестов

Время на прочтение 6 мин
Количество просмотров 4K

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

Привет, Хабр! Меня зовут Николай Пискунов — ведущий разработчик в подразделении Big Data. И сегодня в блоге beeline cloud поговорим о Spring boot и интеграционном тестировании. Расскажу, как упростить жизнь при написании тестов.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 2

Разработка высоконагруженного игрового WebSocket сервера на Kotlin, Webflux с поддержкой BattleRoyale/Matchmaking

Уровень сложности Сложный
Время на прочтение 20 мин
Количество просмотров 4.7K

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

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 1

Истории

Систему модулей в Java для новичков

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

Привет, Хабр!

Система модулей в Java 9, известная как Project Jigsaw, была задумана и реализована для решения ряда проблем, включая «Ад JAR‑файлов» и сложностей с обеспечением сильной инкапсуляции.

И вот с Java 9 можно явно контролировать, какие части их модулей доступны внешнему миру, а какие скрыты и защищены от несанкционированного доступа.

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

Рассмотрим, как выглядит работы с системой модулей в Java.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 3

Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Время на прочтение 12 мин
Количество просмотров 9.7K

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

— POST и PUT-запросы, использующие requestBody для передачи параметров.
— GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее
Всего голосов 19: ↑14 и ↓5 +9
Комментарии 10

Автодокументация Doxygen и её развертывание на GitHub Pages

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

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

Документация будет создаваться на основе исходного кода, она будет обновляться при каждом коммите и при этом будет доступна через интернет. Документирование происходит через Doxygen, в качестве хостинга выступает GitHub, а за обновление документации отвечает GitHub Pages.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 1

Spring Security 6. Авторизация и аутентификация на основе Базы данных

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

Привет. Меня зовут Кирилл, я Java-разработчик. Несмотря на то, что уже год я работаю в компании, по прежнему стараюсь находить время для собственных проектов, с помощью которых осваиваю интересующие меня технологии и подходы. Именно на таком проекте я решил разобраться, как работает авторизация и аутентификация на основе базы данных в Spring Security 6. Изменений, по сравнению с предыдущими версиями немало. Примеры из документации не отвечают на все вопросы в полной мере, а материалов на русском языке по этой теме я, как ни старался, не нашел. Информацию собирал из разных иностранных источников по кусочкам. Теперь поделюсь с вами найденным.

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

Основная проблема заключается в том, что с версии Spring Security 5.7.0 класс WebSecurityConfigurerAdapter признан устаревшим и в дальнейших версиях его использование невозможно. Большинство же существующих на данный момент гайдов опираются на наследование этого класса.

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

Читать далее
Всего голосов 13: ↑8 и ↓5 +3
Комментарии 5

Погубит ли Java 22 сборочные инструменты?

Время на прочтение 6 мин
Количество просмотров 10K

Вступление


Я Николай Парлог, представитель отдела разработки Java в Oracle, и, отвечу на вопрос, вынесенный в заголовок — нет, конечно же, нет! Как вы могли только подумать о таком!
Но она немного снижает их актуальность, и в правильных обстоятельствах это очень хорошо. Позже я объясню, что я имею в виду. Сначала давайте разберемся, как работает эта новая функция. Готовы? Тогда давайте окунемся с головой!

Версия Java 22 обогатилась возможностью выполнения исходного кода сразу из нескольких файлов. В таком случае простой команды java достаточно, чтобы выполнять программы, состоящие из нескольких исходных файлов и даже содержащие зависимости. Для опытных разработчиков это упростит поиск и эксперименты, но для тех, кто только осваивает Java или просто программирует, это настоящая революция: теперь можно писать код Java как из одного, так и из нескольких исходных файлов и даже добавлять зависимости, безотносительно IDE или сборочных инструментов.
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 14

Java Digest # 10

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

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

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

🌼В этот весенний период, наполненный свежестью и обновлениями, ждите обзоров состояния jextract и новых функций терминала в JetBrains IDEs, включая его бета-версию. Готовьтесь к версии 0.8.0 Spring AI, где есть новые функции и улучшения. Вдохните аромат цветущей весны, пока мы погружаемся в обзор различных Java Enhancement Proposals (JEP), включая поддержку Markdown в JavaDoc, новые возможности для компиляции и выполнения Java-кода, а также превью функций Java 22. Вдохновляйтесь, ведь весна в мире Java приносит с собой обновления и новые возможности для всех нас. Stay tuned! 🌼

Читать десятый выпуск
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 0

Apache Flink: динамическое определение выходного топика в Kafka

Время на прочтение 7 мин
Количество просмотров 2.3K

Всем привет, меня зовут Александр Бобряков. Я техлид в команде МТС Аналитики, занимаюсь Real-Time обработкой данных. Мы начали использовать фреймворк Apache Flink, и я решил поделиться на Хабре своим опытом внедрения этой технологии в цикле статей.

В предыдущей статье — «Apache Flink. Как работает дедупликация данных в потоке Kafka-to-Kafka?» — я рассказывал про построение пайплайна Kafka-to-Kafka с промежуточным разделением потока и дедупликацией событий. Также разобрались, что такое состояние оператора и зачем оно нужно.

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Микросервисы прагматика: как построить большую систему с помощью пачки монолитов

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

...

Попробую, попытаюсь объяснить. Наверное, для кого-то это будет оправданием, но я просто объясняю.

Как быстро зафейлить новый проект Java? Просто взять и применить все, что ты услышал на последней Java конференции;) Как быстро сделать энтерпрайзный проект минимальной командой в короткие сроки? Верно — подобрать оптимальную архитектуру и правильные инструменты. Senior Developer из команды Jmix Дмитрий Черкасов рассказывает о компромиссном варианте между хайповыми (все еще) микросервисами и монолитами, который называется Self-Contained Systems. Кажется, он выпьет меньше крови и сохранит ваши нервы. Дальше — рассказ от первого лица.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 9

Асинхронная работа с файловой системой в Vert.x

Время на прочтение 8 мин
Количество просмотров 1.9K

Vert.x – это экосистема для создания реактивных приложений на JVM, которые могут масштабироваться и обрабатывать огромные объемы данных в реальном времени. Это полиглоттная платформа, поддерживающая не только Java, но и Kotlin, Groovy, Scala, и еще js. В контексте статьи работать будем на java

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

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 7

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Изоляция в тестах с Kafka

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

Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов. В этой статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep().

Этот метод подходит как для использования с Testcontainers, так и для Embedded Kafka или других способов запуска сервиса Kafka (например, локального инстанса).

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Юнит-тесты: чек-лист методик проектирования

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

Привет, Хабр! Меня зовут Василий Косарев, я Java‑разработчик в CDEK. Много раз мы слышали о необходимости писать модульные тесты, о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.

Я задумался: есть ли чек‑лист/ руководство, который облегчил бы генерацию тестовых сценариев и помог выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.

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

Читать далее
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 9

Использование resilience4j со Spring Boot

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

resilience4j библиотека, предоставляющая набор инструментов для повышения надежности и отказоустойчивости java приложений прежде всего в микросервисной архитектуре

Рассмотрим какие в ней есть инструменты, как их использовать в Spring Boot приложении с помощью аннотаций, как настраивать и есть ли в них подводные камни

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 0

Настройка CI/CD глазами разработчика

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

Тема, которая будет сегодня освещена, рассказывается от лица backend разработчика. На нашем проекте нет devops'а, который бы мог подсказать, направить. Поэтому нам пришлось выходить из зоны комфорта.

Тут кое-что интересное...
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 24

Отладка Spring-микросервиса в контейнере

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

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

Иногда для оперативной локализации ошибки проще всего воспользоваться отладчиком. Я думаю, каждый разработчик так или иначе применял подход DDD (DDD - шут. Debug Driven Development) при локальной разработке или в поисках бага на удаленном стенде. Но что делать, если удаленное приложение в контейнере? В этой заметке я бы хотел поделиться Dockerfile-ом, к которому пришел в свое время, решая проблему отладки контейнеризированного приложения.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 6

Spring MVC REST API: автономная конфигурация при написании модульных тестов

Время на прочтение 8 мин
Количество просмотров 1.6K

Создание и настройка необходимых компонентов без дублирования кода

Отправка HTTP-запросов в тестируемую систему без дублирования кода

Настройка Spring MVC Test framework, при написании модульных тестов для Spring MVC REST API с помощью JUnit 5.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 1

Что работодатели ожидают от джуниор Java-разработчиков

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

Привет! Я Анастасия Рагозина, продакт-менеджер на курсе «Java-разработчик». Сейчас рынок труда в IT-сфере переживает не самый простой период, и новичкам на нём особенно тяжело. Поэтому мы с коллегами в конце 2023 года провели исследование и выяснили, какие навыки и инструменты нужны начинающим Java-разработчикам. А также — к чему стоит готовиться при устройстве на работу.

Читать далее
Всего голосов 12: ↑7 и ↓5 +2
Комментарии 25

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

Работа

Java разработчик
344 вакансии