Может ли серверный компонент обладать UI

Интерфейс компонента — это его «поверхность», которой он соприкасается с внешним миром.

Да, может, хотя на практике это редкость.

Поверхность компонента может принимать любую форму: набор HTTP-эндпоинтов, набор RMI-методов, набор команд, передаваемых через сокет или через разделяемую память (когда два компонента читают и пишут в один файл, который операционная система держит в файловом кеше, в оперативной памяти). Поверхностью компонента может быть и графический интерфейс.

Однако в клиент-серверном взаимодействии поверхность сервера в подавляющем большинстве случаев графическим интерфейсом не является. Даже если сервер возвращает полностью отрендеренные HTML-страницы, нельзя сказать, что его интерфейс — графический. HTTP-эндпоинт отдаёт HTML-код, который предполагается разворачивать на клиенте, и графический интерфейс возникает именно там. Поверхностью самого сервера остаётся набор HTTP-эндпоинтов.

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