SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Java RMI, 17 November 2011
 Methods can be called by another JVM on a
  different host
 Interface is remote if it extends Remote
 Remote object implements a remote
  interface and extends UnicastRemoteObject




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   2
    Primitive types are passed by value
    Objects (that are not remote)
      They are serialized and then passed by value.
      At the other end the objects are deserialized
      Any references inside the object are also
         serialized
    Remote Objects
      Passed as remote references (stubs)


Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   3
    Obtain a reference for the remote object
    URL for the remote object is specified as
      rmi://host:port/name




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   4
public class HiDunia {
  public String sayHalo() {
    return "Halo dunia!";
  }

    public static void main (String args[]) {
      String response = this.sayHalo();
      System.out.println(response); }
}




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   5
public class Halo {
  public String sayHalo() {
    return "Hello, world!";
  }
}

public class HaloDunia {
  public static void main (String args[]) {
    Halo kelas = new Halo();
    String response = kelas.sayHalo();
    System.out.println(response); }
}




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   6
    Satu address space
      Code segment
      Data segment
      Stack segment




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   7
    Proses berbeda
      class Halo
      class HaloDunia
      mungkin berjalan di node yang sama
      atau node berbeda
    Different address space
    stub method
    Remote object

Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   8
    Mendefinisikan remote interface
    Mengimplementasikan interface (server)
      Buat dan ekspor remote object
      Registrasi remote object dengan Java RMI
         registry
    Mengimplementasikan client
    Jalankan server
    Jalankan client

Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   9
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote {
    String sayHello() throws RemoteException;
}




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   10
import     java.rmi.Remote;
import     java.rmi.registry.Registry;
import     java.rmi.registry.LocateRegistry;
import     java.rmi.RemoteException;
import     java.rmi.server.UnicastRemoteObject;

public class Server implements Hello {
    public Server() {}
    public String sayHello() {
        return "Hello, world!";
    }




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   11
public static void main(String args[]) {
         try {
             Server obj = new Server();
             Hello stub = (Hello)
    UnicastRemoteObject.exportObject(obj, 0);

             // Bind the remote object's stub in the registry
             Registry registry = LocateRegistry.getRegistry();
             registry.bind("Hello", stub);
             System.err.println("Server ready");
         } catch (Exception e) {
             System.err.println("Server exception: " +
    e.toString());
             e.printStackTrace();
         }
     }
}


Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)        12
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
    private Client() {}
    public static void main(String[] args) {
        String host = (args.length < 1) ? null : args[0];
        try {
            Registry registry = LocateRegistry.getRegistry(host);
            Hello stub = (Hello) registry.lookup("Hello");
            String response = stub.sayHello();
            System.out.println("response: " + response);
        } catch (Exception e) {
            System.err.println("Client exception: " +
   e.toString());
            e.printStackTrace();
        }
    }
}
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)           13
javac –d destDir Server.java
javac –d destDir Client.java

start rmiregistry

java –Djava.rmi.server.codebase=file:destDir/ Server

java –Djava.rmi.server.codebase=file:destDir/ Client




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   14
    Default pada port 1099
    start rmiregistry 2011
    Registry reg =
     LocateRegistry.getRegistry(2011);




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   15
    Implementasikan sebuah aplikasi kalkulator
     sederhana dengan RMI
      Client menerima ekspresi matematika (+, x, /, -)
      Server mengimplementasikan method-method
         yang sesuai
    Parsing ekspresi matematika dengan
     StringTokenizer
      untuk menentukan method apa yang dipanggil


Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   16
    Kerangka program Client
      Baca ekspresi matematika
      Tokenize, untuk mendapatkan ekspresi
       matematik yang digunakan
      Jika operatornya +, panggil method RMI
       penjumlahan()
      Jika operatornya x, panggil method RMI
       perkalian()
      dst
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   17
    Program Server
      Implementasikan method-method untuk operasi
         dasar matematika
        int perkalian(int a, int b);
        int pembagian(int a, int b);
        int penjumlahan(int a, int b);
        int pengurangan(int a, int b);



Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   18
    Waktu pengerjaan
      Dua pekan (30 November 2011, pukul 12.00 WIB)
      By e-mail barliant@gmail.com
      Subject "IKH331 RMI"
    Bonus
      Evaluasi ekspresi yang lebih kompleks
      3+4x2
      (3 + 4) x 2
      Pengumpulan sebelum tenggat waktu
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   19
 Java RMI Hello World,
  http://download.oracle.com/javase/6/docs/tec
  hnotes/guides/rmi/hello/hello-world.html
 Vijay Garg, "Concurrent and Distributed
  Programming in Java"
 Source code
  http://users.ece.utexas.edu/~garg/jbk.html
 http://tjerdastangkas.blogspot.com/search/la
  bel/ikh331
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   20
Kamis, 17 November 2011

Mais conteúdo relacionado

Mais procurados

Refactoring Jdbc Programming
Refactoring Jdbc ProgrammingRefactoring Jdbc Programming
Refactoring Jdbc Programming
chanwook Park
 
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, TuningJava 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
Carol McDonald
 
망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19
종인 전
 

Mais procurados (19)

OSGi Puzzlers
OSGi PuzzlersOSGi Puzzlers
OSGi Puzzlers
 
Chat Room System using Java Swing
Chat Room System using Java SwingChat Room System using Java Swing
Chat Room System using Java Swing
 
Java PRACTICAL file
Java PRACTICAL fileJava PRACTICAL file
Java PRACTICAL file
 
Ejb3 Dan Hinojosa
Ejb3 Dan HinojosaEjb3 Dan Hinojosa
Ejb3 Dan Hinojosa
 
Jersey Guice AOP
Jersey Guice AOPJersey Guice AOP
Jersey Guice AOP
 
Oracle 10g
Oracle 10gOracle 10g
Oracle 10g
 
Java RMI
Java RMIJava RMI
Java RMI
 
Refactoring Jdbc Programming
Refactoring Jdbc ProgrammingRefactoring Jdbc Programming
Refactoring Jdbc Programming
 
Advanced Java - Praticals
Advanced Java - PraticalsAdvanced Java - Praticals
Advanced Java - Praticals
 
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, TuningJava 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
 
망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19망고100 보드로 놀아보자 19
망고100 보드로 놀아보자 19
 
JDBC - JPA - Spring Data
JDBC - JPA - Spring DataJDBC - JPA - Spring Data
JDBC - JPA - Spring Data
 
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
 
Leveraging Completable Futures to handle your query results Asynchrhonously
Leveraging Completable Futures to handle your query results AsynchrhonouslyLeveraging Completable Futures to handle your query results Asynchrhonously
Leveraging Completable Futures to handle your query results Asynchrhonously
 
Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*
 
Java
JavaJava
Java
 
Clojure: a LISP for the JVM
Clojure: a LISP for the JVMClojure: a LISP for the JVM
Clojure: a LISP for the JVM
 
Art of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code qualityArt of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code quality
 
NIO and NIO2
NIO and NIO2NIO and NIO2
NIO and NIO2
 

Destaque

Dinamiche evolutive del settore agrituristico in Italia
Dinamiche evolutive del settore agrituristico in ItaliaDinamiche evolutive del settore agrituristico in Italia
Dinamiche evolutive del settore agrituristico in Italia
Jacopo Zurlo
 
ikd312-04-aljabar-relasional
ikd312-04-aljabar-relasionalikd312-04-aljabar-relasional
ikd312-04-aljabar-relasional
Anung Ariwibowo
 
Investorguide Eng
Investorguide EngInvestorguide Eng
Investorguide Eng
tanriverdi
 
Science World Board Presentation
Science World Board PresentationScience World Board Presentation
Science World Board Presentation
Danny Robinson
 
Visita de plastichín 2015
Visita de plastichín 2015Visita de plastichín 2015
Visita de plastichín 2015
XXX XXX
 
Charlotte, Ben And Chisanga
Charlotte, Ben And ChisangaCharlotte, Ben And Chisanga
Charlotte, Ben And Chisanga
guest7dd83
 
Cyberpolitics W12 Part Ii
Cyberpolitics W12 Part IiCyberpolitics W12 Part Ii
Cyberpolitics W12 Part Ii
oiwan
 

Destaque (20)

Dinamiche evolutive del settore agrituristico in Italia
Dinamiche evolutive del settore agrituristico in ItaliaDinamiche evolutive del settore agrituristico in Italia
Dinamiche evolutive del settore agrituristico in Italia
 
Как найти, заполучить и удержать CTO
Как найти, заполучить и удержать CTOКак найти, заполучить и удержать CTO
Как найти, заполучить и удержать CTO
 
ikd312-04-aljabar-relasional
ikd312-04-aljabar-relasionalikd312-04-aljabar-relasional
ikd312-04-aljabar-relasional
 
PROYECTO WorkCentre
PROYECTO WorkCentrePROYECTO WorkCentre
PROYECTO WorkCentre
 
ikh323-01
ikh323-01ikh323-01
ikh323-01
 
Focus 1 - construirea unui software functional, utilizabil si intuitiv
Focus 1 - construirea unui software functional, utilizabil si intuitivFocus 1 - construirea unui software functional, utilizabil si intuitiv
Focus 1 - construirea unui software functional, utilizabil si intuitiv
 
Mcm ottobre 11
Mcm ottobre 11Mcm ottobre 11
Mcm ottobre 11
 
Investorguide Eng
Investorguide EngInvestorguide Eng
Investorguide Eng
 
Science World Board Presentation
Science World Board PresentationScience World Board Presentation
Science World Board Presentation
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Visita de plastichín 2015
Visita de plastichín 2015Visita de plastichín 2015
Visita de plastichín 2015
 
Small Business Owners' Work-Life Balance
Small Business Owners' Work-Life BalanceSmall Business Owners' Work-Life Balance
Small Business Owners' Work-Life Balance
 
Bill haley
Bill haleyBill haley
Bill haley
 
Introductie Havana Orange
Introductie Havana OrangeIntroductie Havana Orange
Introductie Havana Orange
 
Charlotte, Ben And Chisanga
Charlotte, Ben And ChisangaCharlotte, Ben And Chisanga
Charlotte, Ben And Chisanga
 
Cyberpolitics W12 Part Ii
Cyberpolitics W12 Part IiCyberpolitics W12 Part Ii
Cyberpolitics W12 Part Ii
 
Global Conferencing Trends
Global Conferencing TrendsGlobal Conferencing Trends
Global Conferencing Trends
 
ikp213-unifikasi
ikp213-unifikasiikp213-unifikasi
ikp213-unifikasi
 
Sql Server Optimizer Screenshots
Sql Server Optimizer ScreenshotsSql Server Optimizer Screenshots
Sql Server Optimizer Screenshots
 
Science world
Science worldScience world
Science world
 

Semelhante a IKH331-07-java-rmi

ikh331-06-distributed-programming
ikh331-06-distributed-programmingikh331-06-distributed-programming
ikh331-06-distributed-programming
Anung Ariwibowo
 
Hibernate Import.Sql I18n
Hibernate Import.Sql I18nHibernate Import.Sql I18n
Hibernate Import.Sql I18n
yifi2009
 
Distributed Objects and JAVA
Distributed Objects and JAVADistributed Objects and JAVA
Distributed Objects and JAVA
elliando dias
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoin
knight1128
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
elliando dias
 

Semelhante a IKH331-07-java-rmi (20)

ikh331-06-distributed-programming
ikh331-06-distributed-programmingikh331-06-distributed-programming
ikh331-06-distributed-programming
 
Java rmi
Java rmiJava rmi
Java rmi
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
Silicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM MechanicsSilicon Valley JUG: JVM Mechanics
Silicon Valley JUG: JVM Mechanics
 
Demystifying Reactive Programming
Demystifying Reactive ProgrammingDemystifying Reactive Programming
Demystifying Reactive Programming
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9
 
E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on Android
 
Network
NetworkNetwork
Network
 
Hibernate Import.Sql I18n
Hibernate Import.Sql I18nHibernate Import.Sql I18n
Hibernate Import.Sql I18n
 
Distributed Objects and JAVA
Distributed Objects and JAVADistributed Objects and JAVA
Distributed Objects and JAVA
 
Hibernate
Hibernate Hibernate
Hibernate
 
RMI Java Programming Lab Manual 2019
RMI Java Programming Lab Manual 2019RMI Java Programming Lab Manual 2019
RMI Java Programming Lab Manual 2019
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoin
 
GDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache BeamGDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache Beam
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Next generation message driven systems with Akka
Next generation message driven systems with AkkaNext generation message driven systems with Akka
Next generation message driven systems with Akka
 
Painless Persistence with Realm
Painless Persistence with RealmPainless Persistence with Realm
Painless Persistence with Realm
 
Multithreading in Java
Multithreading in JavaMultithreading in Java
Multithreading in Java
 

Mais de Anung Ariwibowo (20)

isd314-06-association-mining
isd314-06-association-miningisd314-06-association-mining
isd314-06-association-mining
 
ikp213-06-horn-clause
ikp213-06-horn-clauseikp213-06-horn-clause
ikp213-06-horn-clause
 
ikp213-01-pendahuluan
ikp213-01-pendahuluanikp213-01-pendahuluan
ikp213-01-pendahuluan
 
ikd312-05-sqlite
ikd312-05-sqliteikd312-05-sqlite
ikd312-05-sqlite
 
ikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasionalikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasional
 
ikd312-03-design
ikd312-03-designikd312-03-design
ikd312-03-design
 
ikd312-02-three-schema
ikd312-02-three-schemaikd312-02-three-schema
ikd312-02-three-schema
 
ikp213-02-pendahuluan
ikp213-02-pendahuluanikp213-02-pendahuluan
ikp213-02-pendahuluan
 
ikh311-08
ikh311-08ikh311-08
ikh311-08
 
ikh311-07
ikh311-07ikh311-07
ikh311-07
 
ikh311-06
ikh311-06ikh311-06
ikh311-06
 
ikh311-05
ikh311-05ikh311-05
ikh311-05
 
ikp321-svn
ikp321-svnikp321-svn
ikp321-svn
 
ikh311-04
ikh311-04ikh311-04
ikh311-04
 
ikp321-05
ikp321-05ikp321-05
ikp321-05
 
imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09
 
ikh311-03
ikh311-03ikh311-03
ikh311-03
 
ikp321-04
ikp321-04ikp321-04
ikp321-04
 
ikp321-03
ikp321-03ikp321-03
ikp321-03
 
ikh311-02
ikh311-02ikh311-02
ikh311-02
 

Último

Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Último (20)

SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 

IKH331-07-java-rmi

  • 1. Java RMI, 17 November 2011
  • 2.  Methods can be called by another JVM on a different host  Interface is remote if it extends Remote  Remote object implements a remote interface and extends UnicastRemoteObject Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 2
  • 3. Primitive types are passed by value  Objects (that are not remote)  They are serialized and then passed by value.  At the other end the objects are deserialized  Any references inside the object are also serialized  Remote Objects  Passed as remote references (stubs) Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 3
  • 4. Obtain a reference for the remote object  URL for the remote object is specified as  rmi://host:port/name Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 4
  • 5. public class HiDunia { public String sayHalo() { return "Halo dunia!"; } public static void main (String args[]) { String response = this.sayHalo(); System.out.println(response); } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 5
  • 6. public class Halo { public String sayHalo() { return "Hello, world!"; } } public class HaloDunia { public static void main (String args[]) { Halo kelas = new Halo(); String response = kelas.sayHalo(); System.out.println(response); } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 6
  • 7. Satu address space  Code segment  Data segment  Stack segment Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 7
  • 8. Proses berbeda  class Halo  class HaloDunia  mungkin berjalan di node yang sama  atau node berbeda  Different address space  stub method  Remote object Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 8
  • 9. Mendefinisikan remote interface  Mengimplementasikan interface (server)  Buat dan ekspor remote object  Registrasi remote object dengan Java RMI registry  Mengimplementasikan client  Jalankan server  Jalankan client Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 9
  • 10. import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 10
  • 11. import java.rmi.Remote; import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class Server implements Hello { public Server() {} public String sayHello() { return "Hello, world!"; } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 11
  • 12. public static void main(String args[]) { try { Server obj = new Server(); Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0); // Bind the remote object's stub in the registry Registry registry = LocateRegistry.getRegistry(); registry.bind("Hello", stub); System.err.println("Server ready"); } catch (Exception e) { System.err.println("Server exception: " + e.toString()); e.printStackTrace(); } } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 12
  • 13. import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Client { private Client() {} public static void main(String[] args) { String host = (args.length < 1) ? null : args[0]; try { Registry registry = LocateRegistry.getRegistry(host); Hello stub = (Hello) registry.lookup("Hello"); String response = stub.sayHello(); System.out.println("response: " + response); } catch (Exception e) { System.err.println("Client exception: " + e.toString()); e.printStackTrace(); } } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 13
  • 14. javac –d destDir Server.java javac –d destDir Client.java start rmiregistry java –Djava.rmi.server.codebase=file:destDir/ Server java –Djava.rmi.server.codebase=file:destDir/ Client Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 14
  • 15. Default pada port 1099  start rmiregistry 2011  Registry reg = LocateRegistry.getRegistry(2011); Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 15
  • 16. Implementasikan sebuah aplikasi kalkulator sederhana dengan RMI  Client menerima ekspresi matematika (+, x, /, -)  Server mengimplementasikan method-method yang sesuai  Parsing ekspresi matematika dengan StringTokenizer  untuk menentukan method apa yang dipanggil Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 16
  • 17. Kerangka program Client  Baca ekspresi matematika  Tokenize, untuk mendapatkan ekspresi matematik yang digunakan  Jika operatornya +, panggil method RMI penjumlahan()  Jika operatornya x, panggil method RMI perkalian()  dst Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 17
  • 18. Program Server  Implementasikan method-method untuk operasi dasar matematika  int perkalian(int a, int b);  int pembagian(int a, int b);  int penjumlahan(int a, int b);  int pengurangan(int a, int b); Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 18
  • 19. Waktu pengerjaan  Dua pekan (30 November 2011, pukul 12.00 WIB)  By e-mail barliant@gmail.com  Subject "IKH331 RMI"  Bonus  Evaluasi ekspresi yang lebih kompleks  3+4x2  (3 + 4) x 2  Pengumpulan sebelum tenggat waktu Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 19
  • 20.  Java RMI Hello World, http://download.oracle.com/javase/6/docs/tec hnotes/guides/rmi/hello/hello-world.html  Vijay Garg, "Concurrent and Distributed Programming in Java"  Source code http://users.ece.utexas.edu/~garg/jbk.html  http://tjerdastangkas.blogspot.com/search/la bel/ikh331 Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 20