Dec. 3, 1998
http://www.jaist.ac.jp/ kaiya/ 1??...? : Java RMI
http://www.jaist.ac.jp/ kaiya/ 2 ( ) [1] [2] Bertrand Meyer. The Next Software Breakthrough. COMPUTER, Vol. 30, No. 7, pp. 113 114, Jul. 1997. Jean-Marc Jezequel and Bertrand Meyer. Design by Contract: The Lessons of Ariane. COMPUTER, Vol. 30, No. 1, pp. 129 130, Jan. 1997.
http://www.jaist.ac.jp/ kaiya/ 3 : ( ) public static Remote lookup(string name) throws... : Design by Contract(DBC) : : :
http://www.jaist.ac.jp/ kaiya/ 4? ( ) & : ( ) autoconf configure : OS [3] ( ) Java (OS) Java VM Tommy Thorn. p.231, Programming languages for mobile code. ACM Computing Surveys, Vol. 29, No. 3, pp. 213 239, Sep. 1997.
http://www.jaist.ac.jp/ kaiya/ 5 : / Java RMI : Z OO : Meyer DBC /
http://www.jaist.ac.jp/ kaiya/ 6? Java : ( or )? :? :? : [4] Drew Dean, Edward W. Felten, and Dan S. Wallach. Java Security: From HotJava to Netscape and Beyond. In Proceedings 1996 IEEE Symposium on Security and Privacy, 1996.
http://www.jaist.ac.jp/ kaiya/ 7 RMI Naming Naming (rmiregistry) RPC
http://www.jaist.ac.jp/ kaiya/ 8 : (http, ftp )
http://www.jaist.ac.jp/ kaiya/ 9 (1/2) LoadPlace ::= Local Network impl, skel : LoadPlace ( )
http://www.jaist.ac.jp/ kaiya/ 10 (2/2) pre.. ;? ;. ;?;! Ξ;
http://www.jaist.ac.jp/ kaiya/ 11 A B readfile(string f) writefile(string f, s)
http://www.jaist.ac.jp/ kaiya/ 12 : class MyManager extends RMISecurityManager{ public synchronized void checkread(string file){} public synchronized void checkwrite(string file){ super.checkwrite(file); } } : public class MyRObject extends UnicastRemoteObject implements MyInterface{ public MyRObject() throws RemoteException{ super(); } public String readfile(string s) throws RemoteException{ return new String(SimpleIO.readfile(s)); } public boolean writefile(string f, String s) throws RemoteException{ return SimpleIO.writefile(f, s); } }
http://www.jaist.ac.jp/ kaiya/ 13 (1/2) MyManager checktable : B InitMyManager MyManager checktable = true checktable = false.
http://www.jaist.ac.jp/ kaiya/ 14 (2/2) MyRObject serverfs : MyRObject.writefile f?: ; s? : ; rep! :Report; MyRObject; ΞMyManager checktable serverfs f?=s? dom serverfs {f?} = dom serverfs ; rep! =OK checktable θmyrobject = θmyrobject ; rep! =Exception
http://www.jaist.ac.jp/ kaiya/ 15 MyRObject.write serverfs f? s? serverfs = serverfs : RMI
http://www.jaist.ac.jp/ kaiya/ 16 LoadPlace ::= Local Network LoadMap impl, skel : LoadPlace pre.myrobject.writefile MyRObject; MyManager; LoadMap impl = skel = Local (impl = Network skel = Network) chaktable MyRObject.writefile f?: ; s? : MyRObject; ΞMyManager; ΞLoadMap serverfs f?=s?; dom serverfs {f?} = dom serverfs
http://www.jaist.ac.jp/ kaiya/ 17 MyRObject.write impl = skel = Local serverfs f? s? serverfs serverfs MyRObject.write skel = Network serverfs f? s? serverfs = serverfs
http://www.jaist.ac.jp/ kaiya/ 18 Java RMI
http://www.jaist.ac.jp/ kaiya/ 19 : ( ) RMI Java
http://www.jaist.ac.jp/ kaiya/ 20 REFERENCES [1] Bertrand Meyer. The Next Software Breakthrough. COM- PUTER, Vol. 30, No. 7, pp. 113 114, Jul. 1997. IEEE/CS. [2] Jean-Marc Jezequel and Bertrand Meyer. Design by Contract: The Lessons of Ariane. COMPUTER, Vol. 30, No. 1, pp. 129 130, Jan. 1997. [3] Tommy Thorn. Programming languages for mobile code. ACM Computing Surveys, Vol. 29, No. 3, pp. 213 239, Sep. 1997. [4] Drew Dean, Edward W. Felten, and Dan S. Wallach. Java Security: From HotJava to Netscape and Beyond. In Proceedings 1996 IEEE Symposium on Security and Privacy, 1996. http://www.jaist.ac.jp/ kaiya/ html, pdf, ps