В настоящее время я разрабатываю графический интерфейс для созданного Java-приложения. Я хотел бы сохранить графический интерфейс в отдельном процессе от остальной части клиента. Обоснование этого:
- Уменьшен риск сбоя. Например. OutOfMemoryError в графическом интерфейсе не приведет к сбою остальной части клиента.
- Я получаю API "бесплатно". Если позже я захочу позволить другим людям программно получить доступ к клиенту, я могу просто позволить им использовать тот же API, который использует графический интерфейс.
- Я пишу графический интерфейс в SWT, и клиент создается с использованием IntelliJ. Так как Eclipse имеет гораздо лучшую поддержку SWT, имеет смысл держать их отдельно, так что я могу использовать Eclipse для GUI-кода и IntelliJ для остальных.
Теперь у меня вопрос: какую технологию я должен использовать, чтобы выставить клиентский интерфейс в GUI? RMI - это то, что пришло в голову первым. Однако это имеет недостатки, заключающиеся в том, что API ограничивается только Java. Я также не уверен, насколько хорошо RMI подходит для крупномасштабного развертывания (например, как он обрабатывает локальные брандмауэры?). Однако я пока не хочу это исключать.
Я должен также упомянуть, что у меня есть некоторые требования к развертыванию:
- Должен быть в состоянии работать от имени администратора.
- Должен иметь возможность обрабатывать ограничительные локальные ограничения брандмауэра.
- Развертывание должно быть автоматическим (это крупномасштабное потребительское приложение) и работать в Windows, Mac OS X и Linux.
Учитывая эти ограничения, какое решение вы бы использовали?