Был ли опыт работы с аппаратным обеспечением из Java кода: сканеры, контроллеры, устройства
Что проверяют
Есть ли у вас опыт на стыке Java и железа и насколько он настоящий. Вопрос обычно задают, когда в проекте есть склад, касса, производство или терминалы, так что следом спросят, через что шло подключение и как вы разбирались со сбоями устройства.
Как отвечать
Если опыт был, расскажите по слоям, так сразу видно понимание:
- транспорт: последовательный порт (RS-232 или USB с эмуляцией COM), USB напрямую, сеть. Для COM сейчас берут
jSerialCommили поддерживаемый форкjSSC. Java Communications API (javax.comm) и RXTX давно не развиваются, называть их текущим выбором не стоит; - протокол: сканеры штрихкода часто работают в режиме эмуляции клавиатуры, и тогда кода почти нет. В промышленности встречаются Modbus RTU и Modbus TCP, OPC UA (Eclipse Milo), MQTT (Eclipse Paho). Для кассового оборудования есть стандарт JavaPOS;
- нативный код: если у производителя только библиотека на C, её вызывают через JNA, JNI или Foreign Function & Memory API, который стал стабильным в Java 22;
- надёжность: таймауты чтения, переподключение при обрыве, сборка пакетов, пришедших по частям, отдельный поток на чтение порта, чтобы не блокировать приложение;
- тестирование: эмулятор устройства или виртуальная пара COM-портов, запись реального обмена и его прогон в тестах без железа.
Результаты называйте свои и только проверяемые: сколько устройств, какая частота опроса, что изменилось после внедрения.
Если опыта не было, так и скажите, но не останавливайтесь на «нет». Покажите, с чего бы начали: документация протокола, выбор библиотеки, эмулятор для разработки. Уместно вспомнить смежное: интеграцию по бинарному протоколу или работу с сокетами.
Где спотыкаются
Называют javax.comm как актуальное решение. Это выдаёт знание по старым статьям, а не по реальному проекту.
Не могут ответить, что делали при потере связи. Устройства отваливаются постоянно, и именно эта часть интересует интервьюера больше всего.
Придумывают опыт. Два уточнения про скорость порта и формат кадра быстро это покажут, а честное «не работал, но знаю, как подойти» выглядит сильнее.