Programování

Meziprocesová komunikace v Javě

Otázka: Jak mohou dva procesy Java (dva JVM) na stejném počítači interagovat - to znamená navzájem číst metody a vyměňovat si objekty? Používám RMI, ale zdá se, že by mělo existovat jednodušší řešení.

A: Meziprocesová komunikace je důležitým programovacím tématem a Java, stejně jako každé vážné programovací prostředí, tento problém řeší. Jedním z přístupů, jak jste se již naučili, je RMI. Úzce související alternativou je CORBA. CORBA umožňuje vyměňovat objekty a dynamicky vyvolávat metody za běhu. (Rychlý výukový program CORBA najdete v části Zdroje níže.)

Stejně jako RMI však může být CORBA za určitých okolností přehnaná. Pro jednoduchou meziprocesovou komunikaci můžete ke komunikaci mezi aplikacemi Java použít staré prosté zásuvky. Objekty lze serializovat a přenášet přes sokety pomocí ObjectInputStream a ObjectOutputStream třídy. Zatímco zásuvky jsou jednodušší než RMI nebo CORBA, nic pro vás není definováno, takže budete muset definovat vše. To znamená, že budete muset definovat své vlastní komunikační protokoly, napsat své vlastní vyhledávací a připojovací služby, postarat se o zabezpečení atd. (Dobrý úvod do programování soketů Java najdete v článku Zdroje.)

Skoro se bojím zmínit, ale vždy se dalo zaměstnat zamknout soubory pro komunikaci. Soubory zámku jsou primitivní metodou komunikace mezi procesy ve stejném systému. Koncepčně jsou zamykací soubory jednoduché: komunikovat, dva nebo více procesů číst a zapisovat do dobře známého souboru v souborovém systému. Protože se jedná o takový primitivní přístup, je často odsuzován a není považován za legitimní formu meziprocesové komunikace.

Tony Sintes je senior konzultant v ObjectWave Corporation, který se specializuje na telekomunikace. Tony pracuje s Javou od roku 1997 a je programátorem Java 1.1 a vývojářem Java 2.

Další informace o tomto tématu

  • „Introduction to CORBA,“ from the Java Developer Connection

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

  • „Základy programovacího jazyka Java, část 2, lekce 1Socket Communications“, také z prostředí Java Developer Connection, poskytuje dobrý návod k programování soketů

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

Tento příběh, „Meziprocesová komunikace v Javě“, byl původně publikován společností JavaWorld.