2009-05-06 4 views
2

각각 자체 JVM 인스턴스에서 실행되는 두 개의 Java 프로그램이 있습니까? 공유 메모리 또는 파이프와 같은 IPC 기술을 사용하여 서로 통신 할 수 있습니까? 그것을 할 수있는 방법이 있습니까?Java에서 InterProcess 통신이 가능합니까?

답변

3

예; D-BUSPipes은 사용하기 쉽고 크로스 플랫폼입니다. D-BUS는 일반적인 메시지 전달 IPC 및 대량 데이터 전송을위한 파이프에 유용합니다.

중앙 서버에 연결하는 여러 클라이언트를 지원해야하는 경우 localhost에서 TCP 또는 UDP 소켓을 열 수도 있습니다.

또한 JNI가 필요하지만 implementation of UNIX sockets in Java도 있습니다.

2

http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp

Java 원격 메소드 호출 (Java RMI)는 분산 자바 원격 자바 객체의 메소드를 다른 Java 가상 머신에서 호출 할 수있는 자바 기술 기반 애플리케이션에 기술을 기반으로 만들 수있는 프로그래머를 할 수 *, 아마도 다른 호스트에. RMI는 객체 직렬화를 사용하여 매개 변수를 마샬링 및 비 정렬 화하고 유형을 자르지 않으며 진정한 객체 지향 다형성을 지원합니다.

1

확실히. Java Spaces과 같은 RMI 또는 공유 메모리 개념을 살펴보십시오.

0

프로세스 간 메모리 공유를 위해 Java NIO의 MemoryMappedByteBuffer를 사용하십시오.

0

Plasma이라는 아파치의 컬럼 기반 (즉, 배열 기반) 데이터의 언어 독립적 IPC에 대한 새로운 시도가 있습니다.

아직 (9 월 17 일) JVM 바인딩이 없지만 프로젝트가 Spark의 지원을 받으면서 구현을 보게 될 때까지 그리 오래 걸리지 않을 것이라고 생각합니다.

하지만 일반적인 과학적 계산을 위해서 double, long과 같은 프리미티브 배열을 공유하기 위해 일반적인 IPC 시스템이 없다는 것을 이해합니다. 나는 여기서 잘못 될 수 있지만. 플러스 측면에서는 언어에 구애받지 않기 때문에 다른 JVM 런타임과 통신 할 때 사용할 수 있습니다. 그러나 OP는 Java IPC를 요구했기 때문에 이것이 중요하지 않을 수 있습니다.

관련 문제