2011-10-20 2 views
5

면접관이 C/C++ 응용 프로그램에 Java 스윙 GUI를 사용한다고 언급 한 것에 약간 놀랐습니다. 나는 호기심이 많았고 어떻게 실제로 이들을 통합하는지 물었다. 그의 대답은 "메시지 전달"이었다. 흥미 롭 군! 글쎄, 나는 이런 종류의 접근법에 익숙하지 않고 궁금한 점이있다. 그렇다면이 디자인에 큰 이점이 있습니까? 참고 자료가 있으면 공유하는 것이 좋을지 모르겠지만이 디자인이 어떻게 효과가 있을지 이해하는 것은 약간 어렵습니다.C++ 응용 프로그램 용 Java GUI - 좋은 디자인입니까?

참고로이 제품은 데이터 백업 기반 응용 프로그램입니다 (Linux/Unix 플랫폼에서 가능). 감사합니다.

CV

+1

나는 그들이 "C/C++ guy"와 "Java guy"가 함께 일할뿐만 아니라 자신의 안락 지대 밖에서 발전하고 싶지 않았기 때문에 이런 식으로 설계 한 유일한 이유라고 생각합니다. 나에게 나쁜 디자인 같아. – hspain

+0

이것이 StackOverflow 질문인지 또는 [programmers.stackexchange] (http://programmers.stackexchange.com)인지 확실하지 않습니다. 필자는 이것이 코더의 전문 지식으로 인한 것일 수 있다고 생각합니다. Java GUI에 익숙 할 수도 있지만 C/C++의 "용기"는 괜찮습니다. 어쨌든이 질문을이 유형의 질문에 더 적합한 사이트로 [programmers.stackexchange] (http://programmers.stackexchange.com)로 옮기겠다고 투표했습니다. –

+2

또는 뾰족한 머리카락을 가진 사람은 Java가 UI/이식성 (아마도 90 년대 후반에!)에 훌륭하다고 들었고 일부 Java를 사용해야했습니다. 또는 백엔드 시스템이 많은 원시 코드에 의존했기 때문에 모든 것을 독립형 C++ 응용 프로그램으로 작성하는 것이 더 쉬웠습니다. – ObscureRobot

답변

3

그것은이 응용 프로그램의 요구 사항에 대한 자세한 내용은없이 좋은 디자인인지 알 어렵다.

고려해야 할 또 다른 사항은 때로는 면접관이 후보자가 어떻게 반응하는지보기 위해 이상한 디자인을 제안 할 것이라는 점입니다. 일반적으로 내 개인적인 역량이 아닌 역할을 위해 고용 할 때이 작업을 수행 할 것입니다. 그러나 경험이있는 곳 (일반적으로 일을하는 일)이 있습니다. 내 목표는 후보자가 저보다 문제를 해결하는 데 더 나은지 확인하는 것입니다. 나쁜 후보자는 나의 가난한 해결책을 노골적으로 받아 들일 것입니다. 더 나은 후보자는 즉시 더 나은 해결책을 제안 할 것입니다. 최우수 지원자는 내 약한 솔루션을 더 나은 솔루션과 비교 및 ​​대조하여 각 옵션의 의미를 파악합니다.

자바 프런트 엔드가 이식성을 위해 선택되었다고 생각합니다. 같은 목표를 달성하기 위해 브라우저 기반 인터페이스에 대해 논 하겠지만 UI/UX 사용자는 실제로 Java를 좋아했습니다.

7

아무 문제가 없습니다. 메시징을 통해 다른 구성 요소를 통합하는 것은 매우 일반적입니다. 필자는 일반적으로 동종 환경 (예 : Java 및 C++이 아닌 Java로 작성된 모든 응용 프로그램)을 사용하는 것이 더 좋다고 생각하지만, 종종 다른 언어로 작성된 레거시 또는 타사 구성 요소와 통합해야하는 경우 비용상의 이유 또는 다른 선택의 여지가 없기 때문입니다.

메시징이 일반적인 방법입니다. 나는 "메시징"의 우산 아래에서 HTTP를 고려하고 있으며, 거의 모든 언어에는 HTTP 라이브러리가있어 공용 메시징 "언어"로서 좋은 선택입니다. 매우 이질적인 시스템을 통합 할 때 구성 요소를 통합 할뿐만 아니라 메시징 시스템을 통합하기위한 전용 도구/프레임 워크가 있습니다 (예 : ESBs).

+3

동의합니다. 작동하는 시스템을 다시 쓰는 이유는 간단히 말할 수있는 GUI를 추가 할 수 있다는 것입니다. 이것은 레거시 백엔드 시스템에 메시지를 통해 백엔드와 통신하는 새로운 GUI (대개 Java)가 제공되는 금융 서비스 업계에서 매우 자주 발생합니다. 사실, 인터넷 뱅킹 솔루션의 상당 부분과 ATM의 작업조차도 이와 똑같습니다. – Ewald

1

왜 C++ 함수를 호출해야하는지, 그런 다음 클라이언트 요구 사항을 분산시킬 수 있었는지에 대한 제약 조건이있을 수 있습니다. 어떻게 솔루션을 개발하면 메시징 시스템을 구축하고 서버 측 C++와 인터페이스 할 수 있습니다. 하루가 끝날 때 작동하는 솔루션입니다. 나는 서버 측이 C++로 작성 되었기 때문에 사용자가 다른 기술을 조합하여 솔루션을 구현해야하는 경우가 있으므로 U ++가 C++로 작성되어야한다는 것을 기대하지는 않습니다.

1

계약자 2005-2006으로 일하면서 작업 가능/OK 접근 방식으로 매우 큰 (존재하는 경우 Fortune 20) 회사에서 사용되는 것을 보았습니다.

나는 내가 들었다 이유를 물었을 때 :
  1. 리눅스 GUI를 필요, 자바/스윙은 존경 선택입니다. 나는 또한 그들에게 일할 필요가있는 몇몇 자바 개발자가 있다고 생각한다.
  2. 그들은 C++/C에서 크고 성능이 중요한 코드베이스를 가지고있었습니다.
  3. 그들은 이미 광범위하게 메시징을 사용했고이를위한 라이브러리를 가지고있었습니다.
  4. 메시징 인터페이스는 개발 비용이 더 비싸지 만 팀이 테스트 GUI를 작성할 수 있습니다 (예 : 프로덕션 GUI를 파이썬 스크립트로 교체).

모두 Qt와 GTK/Gtkmm은 매우 훌륭한 GUI 프레임 워크이며, 그 이유는 무엇입니까?