Ohjelmointi

Prosessien välinen viestintä Java-tilassa

K: Kuinka kaksi Java-prosessia (kaksi JVM: ää) samassa tietokoneessa voivat olla vuorovaikutuksessa - toisin sanoen lukea toistensa menetelmiä ja vaihtaa objekteja? Käytän RMI: tä, mutta näyttää siltä, ​​että pitäisi olla olemassa yksinkertaisempi ratkaisu.

A: Prosessien välinen viestintä on tärkeä ohjelmointiaihe, ja Java, kuten mikä tahansa vakava ohjelmointiympäristö, käsittelee asiaa. Yksi tapa, kuten olet jo oppinut, on RMI. Läheinen vaihtoehto on CORBA. CORBA: n avulla voit vaihtaa esineitä ja käyttää menetelmiä dynaamisesti ajon aikana. (Katso nopea CORBA-opetusohjelma alla olevasta Resurssit-osiosta.)

Kuitenkin, kuten RMI, CORBA voi olla ylivoimainen joissakin olosuhteissa. Yksinkertaisessa prosessienvälisessä viestinnässä voit käyttää tavallisia vanhoja pistorasioita kommunikoimaan Java-sovellusten välillä. Objektit voidaan sarjoittaa ja lähettää pistorasioiden kautta käyttämällä ObjectInputStream ja ObjectOutputStream luokat. Vaikka pistorasiat ovat yksinkertaisempia kuin RMI tai CORBA, mitään ei ole määritelty sinulle, joten sinun on määriteltävä kaikki. Tämä tarkoittaa, että sinun on määriteltävä omat yhteyskäytännöt, kirjoitettava omat haku- ja yhteyspalvelut, huolehdittava turvallisuudesta ja niin edelleen. (Jos haluat hyvän johdannon Java-socket-ohjelmointiin, katso Resurssit.)

Pelkään melkein mainita sen, mutta voisit aina käyttää lukitse tiedostot viestintään. Lukitustiedostot ovat primitiivinen tapa kommunikoida saman järjestelmän prosessien välillä. Käsitteellisesti lukitustiedostot ovat yksinkertaisia: kommunikoida, kaksi tai useampi prosessi luetaan tiedostojärjestelmän tunnetusta tiedostosta ja kirjoitetaan siihen. Koska tämä on niin alkeellinen lähestymistapa, sitä paheksutaan usein eikä pidetä laillisena prosessienvälisen viestinnän muotona.

Tony Sintes on ObjectWave Corporationin vanhempi konsultti, joka on erikoistunut tietoliikenteeseen. Tony on työskennellyt Javan kanssa vuodesta 1997 lähtien ja on Sun-sertifioitu Java 1.1 -ohjelmoija ja Java 2 -kehittäjä.

Lisätietoja tästä aiheesta

  • "Johdatus CORBA: han" Java-kehittäjäyhteydestä

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

  • "Java-ohjelmointikielen perusteet, osa 2Tunti 1Socket Communications", myös Java-kehittäjäyhteydestä, tarjoaa hyvän opetusohjelman socket-ohjelmoinnista

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

Tämän tarinan "Interprocess communication in Java" julkaisi alun perin JavaWorld.