Обновить
198.55

Java *

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

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

Передаём данные с мобильных устройств в сервисы через каналы радиосвязи

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

Привет, Хабр! На связи Рафис Гатауллин, ведущий эксперт отдела фронт-энд, и Рамис Закиев, ведущий эксперт отдела аналитики в «Татнефть Цифровые Технологии». В этой статье по мотивам нашего доклада на Industrial++ расскажем, об опыте внедрения мобильного решения, которое позволило оптимизировать процессы в цехах нефтедобычи, где нет условий для работы обычных сетей связи.

Поговорим о том, как мы реализовали передачу данных с мобильных устройств к сервисам по каналу радиосвязи стандарта TETRA. Об опыте подключения и взаимодействия с SDK, написанном на Java, в мобильном приложении на Xamarin. И о подходах, которые использовали для оптимизации трафика при передаче данных приложения и данных геопозиционирования.

Читать далее

Spring Reactor. Эволюция сервисов. На пути к реактивности

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

Это статья описывает опыт миграции традиционного приложения java spring на Spring reactor стек. О специфике разрабатываемой информационной системы, уже подробно рассказывал. Кратко о системе - смешанная сервисно-микросервисная архитектура. Чтобы получить бизнес результат, требуется вызвать микросервис, который вызывает сервис, который вызывает набор микросервисов для формирования ценностного набора данных. Получается цепочка вызовов. Сервисы и микросервисы разрабатывались на традиционном технологическом стеке, без использования реактивного подхода.

Мое знакомство с реактивным подходом произошло в 2022 году. Плюсы и минусы я осознавал, как мог. В рамках разрабатываемой системы мне было сложно найти ему точку применения. Тогда сложилось понимание, что в существующих рамках реактивный подход не даст возможности эволюционных изменений. Если его применять, то применять ко всему и сразу, как постулирует реактивный манифест.  Даешь революцию! Это было заблуждение. Его я не смог разрушить, даже изучая документацию и статьи. Чего-то релевантного моей ситуации в открытых источниках я найти не мог. Этой статьей постараюсь предложить путь и убедить сомневающихся, что долго раздумывать не стоит. Делайте смелый шаг на пути к реактивному стеку.

Читать далее

Кофе и крабы. Вызов Rust-кода из Java

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

Java — один из наиболее часто используемых языков программирования, который мы еще не обсуждали в нашем Rust Interop Guide. В этой статье мы рассмотрим три различных метода вызова кода Rust из Java: JNI, JNR-FFI и Project Panama. Мы покажем различия между этими методами и проведем базовый бенчмаркинг для сравнения их производительности. Эти методы работают не только для Java, но и для других языков JVM, таких как Kotlin. Здесь мы в основном сосредоточимся на Java, но примеры Kotlin доступны в ветке Kotlin нашего репозитория GitHub.

Эта статья является частью нашего Rust Interop Guide.

Читать далее

Задолженности в Mireapay

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

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

Продолжить наступление

Судоку: моя попытка в новый алгоритм решения. Часть 2. Заполнение латинского квадрата

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

Итак, это продолжение моих попыток в новый алгоритм решения Судоку. Начало было тут, на текущий мой взгляд довольно глупое и неудачное.

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

Читать далее

Эволюция экосистемы Java под интеграцию ИИ

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

Новый перевод от команды Spring АйО расскажет вам, как новые библиотеки и фреймворки расширяют экосистему Java, делая возможной интеграцию ИИ-решений в приложения, написанные на Java.

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

Читать далее

Hot reload секретов под нагрузкой в Java-сервисах на Spring

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

Привет, Хабр! На связи Андрей Чернов, Java‑архитектор в СберТехе. В прошлой своей статье я рассказал про особенности работы с секретами в Java‑сервисах на Spring Boot — где их брать и как применять к вашему сервису, на примере того, как мы делаем это в Platform V Sessions Data.

Работа с секретами в современных реалиях, где ни с чем не интегрированных сервисов почти не осталось, очень важна. Она помогает снизить риски утечек и атак, а значит, сохранить деньги, время и репутацию компании. Секретами могу быть, например, сертификаты и учётные данные (имя пользователя, пароль и т. п.).

Как я уже говорил, файлы с секретами по разным причинам меняются, поэтому сервису нужно вовремя реагировать на это и применять новые секреты. В своём сервисе Platform V Sessions Data мы решили применять обновления секретов прямо «на горячую», не останавливая, не перезапуская сервисы, и даже не снимая с них нагрузку. Мы называем это hot reload.

Читать далее

Как запустить защищенные сервисы в Entaxy ION

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

Представьте ситуацию, когда у вас есть файл с описанием сервиса – это может быть json или yaml, описанный по спецификации OpenAPI или xml с WSDL описанием SOAP сервиса. Вам требуется оперативно запустить сервис по этому описанию, чтобы системы-источники могли начать отправлять данные. А ещё этот сервис надо как-то обезопасить. А ещё… Но обо всё по порядку – расскажем и научим в этой статье.

Читать далее

Как за 15 минут превратить таблицы БД в JPA-сущности (и не облажаться)

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

Новый гайд от команды Amplicode придётся по душе тем, кто предпочитает разрабатывать схему базы данных перед реализацией JPA-модели или создаёт приложение на основе уже существующей БД.

За 15 минут вы узнаете, как можно легко преобразовать таблицы базы данных в JPA-сущности, учитывая ограничения, индексы, свойства столбцов, а также ассоциативные связи (1:1, 1:M, M:1, M:M).

Читать далее

Реальный кейс: 22 вопроса на техническом интервью на вакансию Java Lead в JP Morgan в 2025 году

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

Аудитории Хабра наверняка интересно, какие вопросы задают на техинтервью в мультинациональных корпорациях. Ведь ИТ-индустрия была и остается глобальной, несмотря на геополитику и разные другие сложности. Как минимум, такая информация об интервью «из первых рук» — это ориентир по уровню сложности собеседования на позицию Java Lead в любых других компаниях, включая крупные российские банковские и промышленные структуры. Именно поэтому эта статья в нашем блоге SSP SOFT.

Читать далее

Практика использования классов Socket и ServerSocket в Java

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

В этой статье будет показан пример создания небольшого многопользовательского чата с помощью сокетов. Для его реализации вам понадобиться Java и Maven.

Читать далее

Мой Maven plugin для IDEA часть 2. Easy Maven — Перезагрузка или импорт проектов в IDEA без ошибок

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

Всем привет. Более года назад я публиковал на Хабр статью, где рассказывал о проблемах IDEA Maven плагина, о том что с этим можно сделать и представил свою версию плагина. Основная проблема которую он решает - это импорт проектов в IDEA. На тот момент это был прототип решения. За это время у меня появилось ~300 активных пользователей, добавлена поддержка MVND и WSL. И спустя год, хотел бы рассказать о изменениях которые произошли в моем плагине более подробно, а ближе к концу статьи о свежих примерах ошибок импорта проектов в IDEA, которые смог решить мой плагин.

Читать далее

Valhalla — эпичный рефакторинг Java. Часть 2: проблемы проекта и их решения

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

Команда Spring АйО перевела и адаптировала доклад Брайана Гоетца «Valhalla — эпичный рефакторинг Java», и сегодня мы публикуем вторую часть из трех. В первой части серии было рассказано об истории и причинах появления проекта Valhalla. Во второй части подробно разбирается вопрос о том, с какими фундаментальными сложности команда столкнулась на пути к решению поставленных задач.

Читать далее

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

PAL видеоадаптер на FPGA с буфером кадра

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

Наверное, каждый второй разработчик на ПЛИС в начале своего пути пытался визуализировать работу своих схем. Кто-то подключал TFT-дисплей, кто-то — VGA монитор. А у меня под рукой оказался только телевизор с композитным входом. Ну что ж, работаем с тем, что есть!

Читать далее

JPackage в gradle для Java17

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

В этой статье я расскажу вам, как создать исполняемое приложение на Java, используя инструмент jpackage и gradle.

Читать далее

Секреты JVM: что происходит с ошибками под капотом

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

Новый перевод от команды Spring АйО расскажет вам (с примерами кода), как JVM обрабатывает исключения на низком уровне, что такое таблица исключений и какие сценарии используются для вариантов try-catch и try-finally.

Читать далее

MongoDB: магия вне Хогвартса в IT

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

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

Меня зовут Алена Метенева, я работаю старшим инженером по обеспечению качества в компании SM Lab в проекте «Кассы». Я тестирую бэкенд и интеграции и там, где это возможно, автоматизирую тесты на Java. Сегодня я хочу рассказать вам о том, как MongoDB помогает мне с этим процессом.

Что такое MongoDb

Думаю, многие работали с MongoDB (Монга) и знают, что это нереляционная СУБД, которая использует для хранения данных JSON-структуру: вместо таблиц и строк, как в реляционных базах данных, в MongoDB есть коллекции (набор документов, эквивалент таблицы реляционной базы данных) и документы (внутри коллекции они могут отличаться друг от друга размером, содержанием и количеством полей), которые состоят из пар «ключ–значение».

Для чего Монга тестировщику 

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

Что я имею в виду?

Представьте, что вы тестируете интеграцию с другой системой. Если все работает стабильно, то пройти позитивные сценарии будет проще всего. А если вы хотите протестировать кейс, в котором смежная система выдает ошибку 503 (Service Unavailable) – это будет уже сложнее. Хорошо, если вы управляете обеими системами и можете просто перезагрузить одно приложение и попытаться достучаться до него через второе. А если система не ваша? В таком случае принято использовать моки. Но есть и третий вариант: если ваше приложение для подключения к другому берет ссылку из MongoDB, то эту ссылку можно просто подменить, добавив в нее лишние символы, чтобы получить ту самую ошибку 503 или 404 (Not Found), например.

Читать далее

Через тернии к рок-звездам: рассказываем, как прошел Java Rock Stars Meetup

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

Привет, Хабр! На связи Рустам, Developer Advocate в Axiom JDK.

В сфере зарубежного IT-рекрутинга существует термин “rockstar” и речь здесь не о музыкантах и безумных вечеринках. Это титул для лучших из лучших талантов в разработке.

Мы подготовили обзор первого Java Rock Stars Meetup — эксклюзивной встречи звезд индустрии с сообществом разработчиков, которая прошла в Москве. Под катом — погружение в атмосферу и записи докладов. Смотрим как это было!

Читать далее

Новый формат собеседований в Яндекс

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

Недавно Яндекс изменил процесс отбора кандидатов, теперь перед алгоритмической секцией добавилась секция Advanced Code. Секция заявлена как более близкая к практике, в статье я расскажу правила нового формата.

Читать далее

Как ускорить Maven сборку без переезда на Gradle

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

С ростом размера Maven проекта встает вопрос скорости сборки и выполнения тестов. Один из самых очевидных способов оптимизации - переезд на другую систему сборки (например, Gradle). Однако перед тем как переезжать (что неизбежно создаст новые проблемы - об этом в конце) давайте поговорим о том, что мы можем сделать для ускорения, оставаясь на Maven. Тем более что многие советы нам пригодятся в любом случае, даже если переезд в итоге и состоится.

Мы начнем с простого, поговорим про кеши и build-сканы и затем заглянем под капот Maven, чтобы понять, как найти и устранить узкие места, а также детально сравним с Gradle. Эффект от каждого совета по отдельности может быть и не такой заметный, но в совокупности ускорение может быть в разы!

В рамках этой статьи мы поговорим в основном про оптимизацию компиляции.

Погнали

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