2011-07-06 7 views
4

Google은 C++ (MS VS 6)와 Java (JDK 6)로 작성된 두 가지 코드베이스를 사용합니다. 서로 대화를 나눌 수있는 독창적 인 방법을 찾고 있습니다.Java 앱 및 C++ 앱 통합/통신


상세 정보 :

두 응용 프로그램은 GUI 응용 프로그램입니다.
주요 재 작성 또는 번역은 옵션이 아닙니다.
통신은 양방향이어야합니다. 파일을 디스크에 쓰는 작업을 피하십시오.

지금까지 고려 된 옵션은 다음과 같습니다

  • 제로 MG
  • RPC
  • CORBA
  • JNI
  • 컴파일 네이티브 코드로 자바, 그리고 본질적으로

연결 마지막 항목과 별도로, 이것은 v Java 응용 프로그램과 C++ 응용 프로그램 간의 프로세스 간 통신을 달성하는 방대한 방법. 다른 창조적 인 제안에 아직도 열려 있습니다!

당신은, 교훈, 함정 피하기 위해, 당신의 제안 차임하시기 바랍니다 전에, 또는 유사한 무언가를 시도하는 경우 등


사람은 의심의 여지가 아무도 없다는 것을 곧 지적하지 않습니다 이 질문에 대한 정답. 어쨌든 SO 커뮤니티의 공동 전문 기술을 활용할 것이라고 생각했으며 많은 훌륭한 답변을 얻길 바랍니다.

+1

재 작성이 바람직하지 않은 상황에서 JNI 글루 코드를 작성해야하는 경우 [JNA를 고려하고 JNA 글루 코드를 작성하는 것이 좋습니다] (http://stackoverflow.com/ 질문/2241685/java-native-access-doesnt-do-c-right/2242341 # 2242341), 더 간단합니다. –

+0

SOAP에 대해? –

+0

@bguiz : 어떻게이 일에 동참 했습니까? 어떤 제안이 도움이 되었습니까? –

답변

0

전송할 데이터의 양과 전송하려는 데이터의 유형을 모릅니다. 그러나 방법을 단순화하기 위해 HTTP 프로토콜을 기반으로 XML 또는 Json을 사용하는 것이 좋습니다.

두 응용 프로그램에 대한 라이브러리가 많으므로 구현과 이해에 많은 노력을 기울이지 않을 것입니다.

더 많은 대화를 나눌 응용 프로그램이 있다면 기술이 모두 중요하기 때문에 어렵지 않습니다. 교차 언어입니다.

내가

1

잘 잘못 생각한다면 당신은이 응용 프로그램이 원하는 방법을 긴밀하게 통합에 따라, 저를 수정하고 당신이 그들을 미래에 진화 참조하는 방법. 두 사람 사이에서 데이터를 교환하려는 경우 (예 : 다른 사람이 작성한 파일을 열거 나 다른 사용자가 직접 파일을 읽을 수있게하려는 경우) protocol buffers이 최선의 방법이라고 할 수 있습니다. 이러한 GUI 응용 프로그램 중 하나에서 렌더링 한 창을 실제로 다른 GUI 응용 프로그램의 패널에 포함하려면 JNI 방식을 사용하는 것이 좋습니다. JNI 접근 방식을 사용하면 SWIG을 사용하여 많은 것을 자동화 할 수 있습니다.하지만 위험한 마법을 피할 수 있으며 여러 가지주의 사항이 있습니다 (예 : 함수 오버로딩과 관련하여 잘 수행되지 않음).

CORBA, RMI 및 이와 유사한 원격 프로 시저 호출 구현을 강력히 권장합니다. 주로 내 경험에 비추어 볼 때 매우 무겁고 많은 리소스를 사용하기 때문입니다.RMI와 비슷한 것을 원한다면, 메시지를 전달할 때 가벼운 무게를, RMI의 경우처럼 실제 객체가 아닌 것을 권장합니다. 예를 들어 프로토콜 버퍼를 메시지 형식으로 사용하고 일반 소켓에서 앞뒤로 간단하게 직렬화 할 수 있습니다.

Kit Ho는 XML 또는 JSON에 대해 언급했지만 프로토콜 버퍼는 해당 형식보다 훨씬 효율적이며 정의 언어에 직접 작성된 이전 버전과의 호환성을 갖고 있습니다.

+0

DDS가 무엇입니까 (펍/서브) –

+0

+1 SWIG에 대해 살펴 보겠습니다. – bguiz

1

Windows를 사용하고 있으므로 DDE (Dynamic Data Exchange)을 사용하시기 바랍니다. Java Parts에서 사용할 수있는 Java 라이브러리가 있습니다.

+0

+1 @Ben Jaguar Marshall : 감사합니다. 제안, 나는 그것을 조사 할 것이다. – bguiz