This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
NRMI: Natural and Efficient Middleware
February 2008 (vol. 19 no. 2)
pp. 174-187
We present Natural Remote Method Invocation(NRMI): a middleware mechanism that provides a fully-generalimplementation of call-by-copy-restore semantics for arbitrarylinked data structures, used as parameters in remote procedurecalls. Call-by-copy-restore offers a more natural programmingmodel for distributed systems than traditional call-by-copy middleware,enabling remote calls to behave much like local calls. Wediscuss in depth the effects of calling semantics for middleware,describe when and why NRMI is more convenient to use thanstandard middleware, and present three implementations ofNRMI in distinct settings, showing the generality of the approach.

[1] E. Tilevich and Y. Smaragdakis, “NRMI: Natural and Efficient Middleware,” Proc. 23rd Int'l Conf. Distributed Computer Systems (ICDCS '03), pp. 252-261, 2003.
[2] A.S. Tanenbaum and M. van Steen, Distributed Systems: Principles and Paradigms. Prentice Hall, 2002.
[3] A.S. Tanenbaum, Distributed Operating Systems. Prentice Hall, 1995.
[4] Distributed Computing Systems Course Notes, http://www.cs.wpi. edu/cs4513/b01/week3-comm week3-comm.html, 2007.
[5] Open Group, DCE 1.1 RPC Specification, http://www.open group.org/onlinepubs009629399 /, 1997.
[6] F. Reverbel and M. Fleury, “The JBoss Extensible Server,” Proc. ACM/IFIP/Usenix Int'l Middleware Conf. (Middleware), 2003.
[7] Sun Microsystems, Java 2 Enterprise Ed., http://java.sun.comj2ee/, 2007.
[8] D. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. John Wiley & Sons, 2000.
[9] A. Stevens et al., Xdoclet, http:/xdoclet.sourceforge.net/, Apr. 2007.
[10] E. Tilevich and Y. Smaragdakis, “J-Orchestra: Automatic Java Application Partitioning,” Proc. 16th European Conf. Object-Oriented Programming (ECOOP '02), pp. 178-204, 2002.
[11] E. Tilevich and Y. Smaragdakis, “Portable and Efficient Distributed Threads for Java,” Proc. ACM/IFIP/Usenix Int'l Middleware Conf., pp. 478-492, Oct. 2004.
[12] D. Weyns, E. Truyen, and P. Verbaeten, “Distributed Threads in Java,” Proc. Int'l Symp. Distributed and Parallel Computing (ISDPC), 2002.
[13] Sun Microsystems, Remote Method Invocation Specification, http://java.sun.com/products/jdkrmi/, 1997.
[14] V. Krishnaswamy, D. Walther, S. Bhola, E. Bommaiah, G. Riley, B. Topol, and M. Ahamad, “Efficient Implementations of Java Remote Method Invocation (RMI),” Proc. Fourth Usenix Conf. Object-Oriented Technologies and Systems (COOTS), 1998.
[15] M. Philippsen, B. Haumacher, and C. Nester, “More Efficient Serialization and RMI for Java,” Concurrency: Practice and Experience, vol. 12, no. 7, pp. 495-518, May 2000.
[16] J. Maassen, R. van Nieuwpoort, R. Veldema, H.E. Bal, and A. Plaat, “An Efficient Implementation of Java's Remote Method Invocation,” Proc. ACM SIGPLAN Symp. Principles and Practice of Parallel Programming (PPOPP '99), May 1999.
[17] J. Maassen, R. van Nieuwpoort, R. Veldema, H.E. Bal, T. Kielmann, C. Jacobs, and R. Hofman, “Efficient Java RMI for Parallel Programming,” ACM Trans. Programming Languages and Systems, vol. 23, no. 6, pp. 747-775, Nov. 2001.
[18] G.K. Thiruvathukal, L.S. Thomas, and A.T. Korczynski, “Reflective Remote Method Invocation,” Concurrency: Practice and Experience, vol. 10, nos. 11-13, pp. 911-926, Sept.-Nov. 1998.
[19] Object Management Group, Objects by Value Specification, http://www.omg.org/cgi-bin/doc?orbos98-01-18.pdf , Jan. 1998.
[20] J.B. Carter, J.K. Bennett, and W. Zwaenepoel, “Implementation and Performance of Munin,” Proc. 13th ACM Symp. Operating Systems Principles (SOSP '91), pp. 152-164, Oct. 1991.
[21] H.E. Bal, R. Bhoedjang, R. Hofman, C. Jacobs, K. Langendoen, T. Ruhl, and M.F. Kaashoek, “Performance Evaluation of the Orca Shared-Object System,” ACM Trans. Computer Systems, vol. 16, no. 1, pp. 1-40, Feb. 1998.
[22] Y. Aridor, M. Factor, and A. Teperman, “cJVM: A Single System Image of a JVM on a Cluster,” Proc. Int'l Conf. Parallel Programming (ICPP), 1999.
[23] M. Surdeanu and D.I. Moldovan, “Design and Performance of a Distributed Java Virtual Machine,” IEEE Trans. Parallel and Distributed Systems, vol. 13, no. 6, pp. 611-627, June 2002.
[24] W. Yu and A. Cox, “Java/DSM: A Platform for Heterogeneous Computing,” Concurrency: Practice and Experience, vol. 9, no. 11, pp.1213-1224, 1997.
[25] M. Tatsubori, T. Sasaki, S. Chiba, and K. Itano, “A Bytecode Translator for Distributed Execution of Legacy Java Software,” Proc. 15th European Conf. Object-Oriented Programming (ECOOP '01), June 2001.
[26] A. Spiegel, “Automatic Distribution of Object-Oriented Programs,” PhD dissertation, FB Mathematik und Informatik, Freie Univ. Berlin, Dec. 2002.
[27] B. Haumacher, J. Reuter, and M. Philippsen, JavaParty: A Distributed Companion to Java, http://wwwipd.ira.uka.deJava Party/, 2007.
[28] M. Philippsen and M. Zenger, “JavaParty—Transparent Remote Objects in Java,” Concurrency: Practice and Experience, vol. 9, no. 11, pp. 1125-1242, 1997.
[29] M. Dahm, “Doorastha—A Step toward Distribution Transparency,” Proc. Java Informations Tage/Net.ObjectDays Conf. (JIT), 2000.
[30] J. Waldo, G. Wyant, A. Wollrath, and S. Kendall, “A Note on Distributed Computing,” Technical Report SMLI TR-94-29, Sun Microsystems Laboratories, Nov. 1994.

Index Terms:
Middleware, RPC, Java, call-by-copy-restore,programming model.
Citation:
Eli Tilevich, Yannis Smaragdakis, "NRMI: Natural and Efficient Middleware," IEEE Transactions on Parallel and Distributed Systems, vol. 19, no. 2, pp. 174-187, Feb. 2008, doi:10.1109/TPDS.2007.70717
Usage of this product signifies your acceptance of the Terms of Use.