Komunikacja międzyprocesowa w Javie

P: W jaki sposób dwa procesy Java (dwie maszyny JVM) na tym samym komputerze mogą współdziałać - to znaczy czytać nawzajem swoje metody i wymieniać obiekty? Używam RMI, ale wydaje się, że powinno istnieć prostsze rozwiązanie.

Odp .: Komunikacja międzyprocesowa jest ważnym tematem programowania, a Java, jak każde poważne środowisko programistyczne, rozwiązuje ten problem. Jedną z metod, jak już się nauczyłeś, jest RMI. Blisko spokrewnioną alternatywą jest CORBA. CORBA umożliwia wymianę obiektów i dynamiczne wywoływanie metod w czasie wykonywania. (Aby zapoznać się z krótkim samouczkiem dotyczącym CORBA, zobacz sekcję Zasoby poniżej).

Jednak, podobnie jak RMI, CORBA może być przesadą w pewnych okolicznościach. Do prostej komunikacji międzyprocesowej można używać zwykłych starych gniazd do komunikacji między aplikacjami Java. Obiekty mogą być serializowane i przesyłane przez gniazda za pomocą klas ObjectInputStreami ObjectOutputStream. Chociaż gniazda są prostsze niż RMI lub CORBA, nic nie jest zdefiniowane dla Ciebie, więc będziesz musiał zdefiniować wszystko. Oznacza to, że będziesz musiał zdefiniować własne protokoły komunikacyjne, napisać własne usługi wyszukiwania i połączeń, zadbać o bezpieczeństwo i tak dalej. (Dobre wprowadzenie do programowania w gniazdach Java można znaleźć w sekcji Zasoby).

Prawie boję się o tym wspomnieć, ale zawsze możesz użyć plików blokujących do komunikacji. Pliki blokady są prymitywną metodą komunikacji między procesami w tym samym systemie. Pod względem koncepcyjnym pliki blokujące są proste: aby się komunikować, dwa lub więcej procesów odczytuje i zapisuje do dobrze znanego pliku w systemie plików. Ponieważ jest to takie prymitywne podejście, często jest źle widziane i nie jest uważane za uprawnioną formę komunikacji międzyprocesowej.

Tony Sintes jest starszym konsultantem w ObjectWave Corporation, który specjalizuje się w telekomunikacji. Tony pracuje z Javą od 1997 roku i jest certyfikowanym przez Sun programistą Java 1.1 i programistą Java 2.

Dowiedz się więcej na ten temat

  • „Wprowadzenie do CORBA” z Java Developer Connection

    //developer.java.sun.com/developer/onlineTraining/corba

  • „Podstawy programowania w języku Java, część 2 Lekcja 1 Komunikacja przez gniazdo”, również z witryny Java Developer Connection, zawiera dobry samouczek dotyczący programowania za pomocą gniazd

    //developer.java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html

Artykuł „Komunikacja międzyprocesowa w Javie” został pierwotnie opublikowany przez JavaWorld.