Programmering

Interprocess kommunikation i Java

Spørgsmål: Hvordan kan to Java-processer (to JVM'er) på den samme computer interagere - det vil sige læse hinandens metoder og udveksle objekter? Jeg bruger RMI, men det ser ud til, at der skulle eksistere en enklere løsning.

EN: Interprocess-kommunikation er et vigtigt programmeringsemne, og Java, som ethvert seriøst programmeringsmiljø, løser problemet. En tilgang, som du allerede har lært, er RMI. Et nært beslægtet alternativ er CORBA. CORBA giver dig mulighed for at udveksle objekter og dynamisk påkalde metoder under kørsel. (For en hurtig CORBA-tutorial, se afsnittet Ressourcer nedenfor.)

Ligesom RMI kan CORBA imidlertid være overkill under visse omstændigheder. For enkel interprocess-kommunikation kan du bruge almindelige gamle sockets til at kommunikere mellem Java-applikationer. Objekter kan serieliseres og transmitteres over stikkontakter ved hjælp af ObjectInputStream og ObjectOutputStream klasser. Mens stikkontakter er enklere end RMI eller CORBA, er der ikke defineret noget for dig, så du bliver nødt til at definere alt. Dette betyder, at du bliver nødt til at definere dine egne kommunikationsprotokoller, skrive dine egne opslags- og forbindelsestjenester, tage sig af sikkerheden osv. (Se Ressourcer for en god introduktion til Java-sokkelprogrammering.)

Jeg er næsten bange for at nævne det, men du kunne altid ansætte låse filer til kommunikation. Låsefiler er en primitiv metode til kommunikation mellem processer på det samme system. Begrebsmæssigt er låsefiler enkle: at kommunikere, to eller flere processer læses fra og skriver til en velkendt fil på filsystemet. Fordi dette er sådan en primitiv tilgang, betragtes det ofte som en ugyldig form for interprocess-kommunikation.

Tony Sintes er seniorkonsulent hos ObjectWave Corporation, der har specialiseret sig i telekommunikation. Tony har arbejdet med Java siden 1997 og er en Sun-certificeret Java 1.1 programmør og Java 2-udvikler.

Lær mere om dette emne

  • "Introduktion til CORBA" fra Java Developer Connection

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

  • "Java Programming Language Basics, Part 2Lesson 1Socket Communications", også fra Java Developer Connection, giver en god tutorial om socket-programmering

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

Denne historie, "Interprocess kommunikation i Java" blev oprindeligt udgivet af JavaWorld.