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

Java *

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

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

ScyllaDB: как настраивать метрики в java-драйвере и параметры запросов для измерения их характеристик

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

Привет, Хабр! Это Александр Коваль, я разработчик IoT-сервисов в МТС Web Services. При работе с данными часто возникает вопрос: как быстро система может вернуть результат по определенным параметрам? Не является исключением и ScyllaDB.

Для ответа нужны инструменты измерения и возможность настраивать систему. Java-драйвер для ScyllaDB умеет передавать информацию о своей внутренней работе, и ему можно настроить отдельные компоненты. Звучит как отличный план — в этом материале я поделюсь результатами экспериментов с java-драйвером для ScyllaDB при различных запросах к данным.

Код, ссылки и ресурсы располагаются в GitHub.

Читать далее

Используйте Camunda как удобный REST-движок для оркестрации и workflow — без необходимости работать с Java

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

Я много общаюсь о микросервисных архитектурах с «не-Java-людьми» — будь то разработчики на C#, энтузиасты Node.JS/JavaScript или GoLang. Все они сталкиваются с необходимостью оркестрации в микросервисной архитектуре — или просто хотят использовать workflow, упорядочивание действий, обработку таймаутов, Saga и компенсации, а также другие полезные возможности.

Open Source BPM-платформа Camunda отлично подходит для этих задач. Ориентированность на разработчиков — один из ключевых принципов продукта, но при изучении документации может показаться, что она рассчитана в основном на Java-разработчиков. Платформа предоставляет множество точек расширения и интеграции, но всё это реализуется на Java. Значит ли это, что другим разработчикам путь закрыт?

Нет! На самом деле, запустить Camunda и работать с ней без знания Java очень просто — архитектуру можно выстроить так, чтобы писать код на любом удобном языке. В этом посте:

Читать далее

Мониторинг «здесь и сейчас»: используем потоки событий JDK Flight Recorder

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


JDK Flight Recorder (JFR) — это диагностическая подсистема, встроенная в JVM. В основе JFR лежит очень простая идея, но вокруг нее выросла разнообразная экосистема решений, позволяющих решать широкий спектр задач.
В данной статье я хочу сфокусироваться на одном аспекте технологии JFR — потоковой обработке событий. Потоковая обработка появилась в JDK 14 в виде Flight Recorder Event Streaming API и позволяет прикладному коду обрабатывать события JFR с минимальной задержкой.

Читать дальше →

Метапрограммирование 2.0: макросы и генерация кода в современном мире

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

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки. 

В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом.
Читать дальше →

С приветом по спекам: ENUM. Часть 1

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

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

Основой моего анализа станет спецификация Java, а именно раздел, касающиеся ENUM
(Java Language Specification SE 24). Я постараюсь превратить сложные формулировки в понятное и доступное изложение с кучей примеров. Цель - сделать статью интересной и легко читаемой, убрав лишнюю техническую сложность.

Читать далее

var в java, так долго ждали, чтобы стрельнуть себе в ногу

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

Появление var в java - хорошо или плохо? Небольшое субъективное рассуждение на тему где это применять, а где нет.

Читать далее

Кто быстрее? Тестируем скорость языков программирования на Эльбрусе

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

Приветствую! Я разработчик в компании НИЦ ЦТ. Мы разрабатываем операционную систему, адаптированную под российские процессоры Эльбрус. Процессоры Эльбрус работают на своей оригинальной архитектуре, которая имеет свои преимущества и недостатки. В частности, интерпретируемые языки программирования не блещут производительностью. Вот мы и решили провести сравнительное тестирование различных языков, компиляторов и интерпретаторов чтобы выяснить, что лучше использовать для разработки под Эльбрус.

В статье представлены результаты бенчмарка Programming language benchmark, основанного на решении набора задач идентичными алгоритмами, реализованными на разных языках. Это позволяет оценить эффективность генерируемого компиляторами (или интерпретаторами) кода для выбранной архитектуры, поскольку скорость выполнения напрямую зависит от архитектурных особенностей процессора. Учитывая использование одного ядра процессора в тестах, результаты отражают потенциал оптимизации кода на низком уровне для каждого языка программирования в рамках заданной аппаратной платформы. Полученные данные позволят разработчикам делать более обоснованный выбор языка программирования для задач, критичных к производительности, с учетом специфики целевой архитектуры.

Читать далее

Новая фича в Java 21: Виртуальные потоки: новые возможности для I/O bound микросервисов

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

Привет, Хабр! Я Иван Попов, ведущий инженер ЦК платформенных и интеграционных решений РСХБ-Интех. Java — мой самый любимый язык программирования, я всю жизнь работал только на нём. Сейчас я работаю в банке и хочу разрушить стереотип  о том, что в банках все работают на Vegas. На java мы очень много работаем, тем более если видим, что новая технология позволяет нам оптимизировать процессы разработки (а количество интеграций огромное). 

Расскажу о новой фиче виртуальных потоков в Java 21, которая призвана повысить эффективность многопоточного кода.  

Читать далее

Оверинжиниринг в луковичной и гексагональной архитектурах

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

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

Читать далее

Часть 2: Как я реализовал взаимодействие микросервисов — Kafka и gRpc

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

Привет! Меня зовут Бромбин Андрей, и сегодня я продолжаю цикл статей о создании микросервисного приложения с нуля. В этом выпуске мы сосредоточимся на взаимодействии между микросервисами, используя два подхода: асинхронный с помощью Kafka и синхронный через gRPC.

Независимо от вашего опыта, этот туториал предоставит вам готовые решения и ценные знания для создания Java Spring Microservices. Начинающие разработчики получат чёткое пошаговое руководство, а опытные специалисты — новые идеи, практические примеры и возможности для обмена опытом с коллегами. Разрабатывайте микросервисы эффективно и достигайте отличных результатов!
Читать далее

Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 1

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

Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка «Performance oriented Spring Data JPA & Hibernate», в котором на наглядных примерах рассказывается, как существенно улучшить производительность приложения, оптимизировав его взаимодействие с БД. 

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

Читать далее

Думает ли искусственный интеллект о коте Шрёдингера? История о том, как я внедрял в алгоритм идею параллельных вселенных

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

Представьте алгоритм, который моделирует параллельные реальности: как изменятся системы, если мы чуть сдвинем входные параметры? Какие последствия окажутся важными, а какие — потеряют значение? Какие метрики перестанут работать?

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

Читать далее

Рекомендации Oracle по выбору между ArrayList и LinkedList

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

В Java существует две реализации интерфейса List: ArrayList и LinkedList. Какая из них лучше? Как выбрать подходящую для вашего приложения? В данной статье мы сравним их различия, производительность и потребление памяти, чтобы помочь вам определиться с выбором.

Читать далее

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

DevOps Tutorials — Ansible: разворачиваем веб-приложение на виртуальном сервере

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



Привет, друзья!


В этой серии статей я делюсь с вами своим опытом решения различных задач из области веб-разработки и не только.


В этой статье мы научимся разворачивать Angular+Java веб-приложение на виртуальном сервере Ubuntu Linux с помощью Ansible.


Интересно? Тогда прошу под кат.

Читать дальше →

Организация API-first подхода, используя OpenAPI generator и Gitlab CI

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

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

Читать далее

Создание form login с помощью Spring Security 6

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

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

Читать далее

Интеграция API-тестов с Jenkins Pipeline: с чего начать?

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

Вы написали серию интеграционных API-тестов на Java (с использованием TestNG и RestAssured) и хотите, чтобы они сами запускались при каждом изменении кода? Отличная идея! Настроив Continuous Integration/Continuous Delivery (CI/CD), вы избавитесь от рутины ручного прогона тестов и получите быстрый фидбэк о качестве системы. В этой статье я в живой манере расскажу, как шаг за шагом встроить ваши API-тесты в Jenkins Pipeline на локальном сервере. Вас ждёт установка Jenkins, подключение Maven-проекта, написание Jenkinsfile (Groovy Pipeline скрипта), настройка красивых Allure-отчётов, интеграция с GitHub и даже автоматический деплой при успешном прохождении тестов. Поехали!

Читать далее

Одноклассовый энтерпрайз

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

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

Читать далее

От конфигурации к динамике. Новый API по созданию бинов в Spring

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

В Spring Framework 7 появился новый API — BeanRegistry, который упрощает и расширяет возможности по динамической регистрации бинов. Это особенно актуально, когда невозможно заранее предсказать, сколько компонентов потребуется, как в случае со Spring Data. В новой статье от эксперта сообщества Spring АйОМихаила Поливахи, вы узнаете:

– Как Spring Data справлялась с динамической регистрацией раньше;

– Какие подходы регистрации существовали до BeanRegistrar, как они работали;

– Как новый API связан со Spring AOT.

Читать далее

Java Digest #25

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

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

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

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

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