Графический интерфейс Java для приложения C ++ - это хороший дизайн? - PullRequest
5 голосов
/ 21 октября 2011

Да, я был немного удивлен, когда интервьюер упомянул, что они используют графический интерфейс Java-swing для приложения C / C ++. Мне было любопытно и спросил его, как они на самом деле объединяют их, его ответ был «через обмен сообщениями». Интересно! Ну, я новичок в этом подходе, и мне любопытно, действительно ли компании используют этот вид дизайна. Если да, то есть ли большое преимущество для этого дизайна? Мне немного сложно понять, как этот дизайн будет работать хорошо, если у вас есть какие-либо ссылки, пожалуйста, поделитесь.

К вашему сведению, продукт представляет собой приложение для резервного копирования данных (возможно, на платформе Linux / Unix). Спасибо.

CV

Ответы [ 4 ]

7 голосов
/ 21 октября 2011

Я не вижу в этом ничего плохого. Очень распространено объединять различные компоненты через обмен сообщениями. Я считаю, что в целом лучше иметь однородную среду (например, все приложения, написанные на Java, а не на Java и C ++), однако часто бывает так, что вы должны интегрироваться с устаревшими или сторонними компонентами, написанными на других языках, из соображений стоимости или потому что другого выбора нет.

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

3 голосов
/ 21 октября 2011

Трудно сказать, хороший ли это дизайн без дополнительной информации о требованиях приложения.

Еще одна вещь, которую следует учитывать, - это то, что иногда интервьюеры предлагают странные схемы, чтобы увидеть реакцию кандидатов.Обычно я делаю это, когда нанимаю на роль, которая не является моей личной компетенцией, но там, где у меня был опыт (обычно это выясняется).Моя цель - узнать, сможет ли кандидат решить проблему лучше меня!Плохие кандидаты будут рабски принимать мое плохое решение.Лучшие кандидаты немедленно предложат лучшее решение.Лучшие кандидаты будут сравнивать и сопоставлять мое слабое решение с их лучшим решением и исследовать, когда каждый вариант имеет смысл.

Я бы предположил, что интерфейс Java был выбран по причинам переносимости.Я бы поспорил за браузерный интерфейс для достижения тех же целей, но, возможно, их UI / UX люди действительно любили Java.

1 голос
/ 21 октября 2011

Это работоспособный / ОК подход, я видел его в очень крупной (Fortune 20, если есть такая) компания, когда я работал там в качестве подрядчика 2005-2006.

Когда я спросил, почему, мне сказали:

  1. Нужен графический интерфейс Linux, java / SWING - респектабельный выбор.Я также думаю, что у них были некоторые Java-разработчики, которым требовалась работа.
  2. У них была большая база кода, критически важная для производительности на C ++ / C.
  3. Они уже широко использовали обмен сообщениями и имели для этого библиотеки.
  4. Интерфейс обмена сообщениями, хотя и более дорогой в разработке, позволяет команде писать тестовые программы (например, заменить производственный GUI скриптом Python).

Все это говорит о Qt и GTK /Gtkmm - очень хорошие графические фреймворки, почему бы их не использовать?

1 голос
/ 21 октября 2011

Могут быть ограничения относительно того, почему они должны сначала вызывать функции C ++, а затем, помимо этого, они могли бы распределить требования клиента. Как бы вы разработали решение, чтобы вы создали систему обмена сообщениями, которая взаимодействует с C ++ на стороне сервера. Это рабочее решение в конце дня. Я не ожидал бы, что пользовательский интерфейс должен быть встроен в C ++, потому что сторона сервера написана на C ++, иногда вам нужно собирать различные технологии вместе, чтобы достичь своего решения.

...