Programavimas

Tarpusavio ryšiai „Java“

Klausimas: Kaip du „Java“ procesai (du JVM) tame pačiame kompiuteryje gali sąveikauti, ty skaityti vienas kito metodus ir keistis objektais? Aš naudoju RMI, bet atrodo, kad turėtų būti paprastesnis sprendimas.

A: Tarpprocesinis bendravimas yra svarbi programavimo tema, o „Java“, kaip ir bet kuri rimta programavimo aplinka, sprendžia šį klausimą. Vienas iš būdų, kaip jau sužinojote, yra RMI. Glaudžiai susijusi alternatyva yra CORBA. CORBA leidžia jums keistis objektais ir dinamiškai pasinaudoti metodais vykdymo metu. (Norėdami pamatyti greitą CORBA pamoką, žr. Toliau pateiktą skyrių „Ištekliai“.)

Tačiau, kaip ir RMI, CORBA tam tikromis aplinkybėmis gali būti per didelis. Norėdami bendrauti tarp procesų, galite naudoti paprastus senus lizdus, ​​kad bendrautumėte tarp „Java“ programų. Objektai gali būti nuoseklūs ir perduoti per lizdus naudojant ObjectInputStream ir ObjectOutputStream klasės. Nors lizdai yra paprastesni nei RMI ar CORBA, nieko jums nėra apibrėžta, todėl turėsite viską apibrėžti. Tai reiškia, kad jums reikės apibrėžti savo ryšio protokolus, parašyti savo paieškos ir prisijungimo paslaugas, pasirūpinti saugumu ir pan. (Norėdami gerai susipažinti su „Java“ lizdo programavimu, žr. Ištekliai.)

Aš beveik bijau tai paminėti, bet jūs visada galėtumėte įdarbinti užrakinti failus bendravimui. Užrakto failai yra primityvus būdas bendrauti tarp tos pačios sistemos procesų. Konceptualiai užrakto failai yra paprasti: norint bendrauti, du ar daugiau procesų nuskaitomi ir rašomi į gerai žinomą failų sistemą. Kadangi tai yra toks primityvus požiūris, jis dažnai menkinamas ir nelaikomas teisėta tarpprocesinio bendravimo forma.

Tony Sintesas yra „ObjectWave Corporation“ vyresnysis konsultantas, kurio specializacija yra telekomunikacijos. Tony dirba su „Java“ nuo 1997 m. Ir yra „Sun“ sertifikuotas „Java 1.1“ programuotojas ir „Java 2“ kūrėjas.

Sužinokite daugiau apie šią temą

  • „Įvadas į CORBA“ iš „Java Developer Connection“

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

  • „Java programavimo kalbos pagrindai, 2 dalis„ 1Socket Communications “, taip pat iš„ Java Developer Connection “, suteikia gerą pamoką apie lizdų programavimą.

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

Šią istoriją „Interprocess communication in Java“ iš pradžių paskelbė „JavaWorld“.