Abstract
J-Orchestra is a system that enhances centralized Java programs with distribution capabilities. Operating at the bytecode level, J-Orchestra transforms a centralized Java program (i.e., running on a single Java Virtual Machine (JVM)) into a distributed one (i.e., running across multiple JVMs). This transformation effectively separates distribution concerns from the core functionality of a program. J-Orchestra follows a semiautomatic transformation process. Through a GUI, the user selects program elements (at class granularity) and assigns them to network locations. Based on the user's input, the J-Orchestra backend automatically partitions the program through compiler-level techniques, without changes to the JVM or to the Java Runtime Environment (JRE) classes. By means of bytecode engineering and code generation, J-Orchestra substitutes method calls with remote method calls, direct object references with proxy references, etc. It also translates Java language features (e.g., static methods and fields, inheritance, inner classes, new object construction, etc.) for efficient distributed execution.
We detail the main technical issues that J-Orchestra addresses, including its mechanism for program transformation in the presence of unmodifiable code (e.g., in JRE classes) and the translation of concurrency and synchronization constructs to work correctly over the network. We further discuss a case study of transforming a large, commercial, third-party application for efficient execution in a client server environment and outline the architectural characteristics of centralized programs that are amenable to automated distribution with J-Orchestra.
- Aridor, Y., Factor, M., and Teperman, A. 1999. cJVM: A single system image of a JVM on a cluster. In Proceedings of the International Conference on Parallel Processing (ICPP'99). IEEE Computer Society, 4. Google Scholar
Digital Library
- Aridor, Y., Factor, M., Teperman, A., Eilam, T., and Schuster, A. 2000. A high-performance cluster JVM presenting a pure single system image. In Proceedings of the ACM Conference on Java Grande (JAVA'00). ACM Press, 168--177. Google Scholar
Digital Library
- Atkinson, M. P., Daynés, L., Jordan, M. J., Printezis, T., and Spence, S. 1996. An orthogonally persistent Java. SIGMOD Rec. 25, 4, 68--75. Google Scholar
Digital Library
- Bal, H. E., Bhoedjang, R., Hofman, R., Jacobs, C., Langendoen, K., Rühl, T., and Kaashoek, M. F. 1998. Performance evaluation of the Orca shared-object system. ACM Trans. Comput. Syst. 16, 1, 1--40. Google Scholar
Digital Library
- Bal, H. E. and Kaashoek, M. F. 1993. Object distribution in Orca using compile-time and run-time techniques. SIGPLAN Not. 28, 10, 162--177. Google Scholar
Digital Library
- Birman, K. P. and Van Renesse, R. 1994. Reliable Distributed Computing with the Isis Toolkit. IEEE Computer Society Press. Google Scholar
Digital Library
- Birrell, A. D. and Nelson, B. J. 1984. Implementing remote procedure calls. ACM Trans. Comput. Syst. 2, 1, 39--59. Google Scholar
Digital Library
- Black, A. P., Hutchinson, N. C., Jul, E., and Levy, H. M. 2007. The development of the Emerald programming language. In Proceedings of the 3rd ACM SIGPLAN Conference on History of Programming Languages (HOPL III). 11--1--11--51. Google Scholar
Digital Library
- Carter, J. B., Bennett, J. K., and Zwaenepoel, W. 1991. Implementation and performance of Munin. In Proceedings of the 13th ACM Symposium on Operating Systems Principles (SOSP'91). ACM Press, 152--164. Google Scholar
Digital Library
- Chatterjee, A. 1992. The class is an abstract behaviour type for resource allocation of distributed object-oriented programs. ACM SIGPLAN OOPS Messenger 4, 2, 63--69.Google Scholar
- Craig, G., Bellur, U., Shank, K., and Lea, D. 1993. Clusters: A pragmatic approach towards supporting a fine grained active object model in distributed systems. In Proceedings of the 9th International Conference on Systems Engineering.Google Scholar
- Dahm, M. 1999. Byte code engineering. In Proceedings of JIT.Google Scholar
Cross Ref
- Dahm, M. 2000. Doorastha: A step towards distribution transparency. In Proceedings of JIT.Google Scholar
- Dijkstra, E. 1982. On the role of scientific thought. In Selected Writings on Computing: A Personal Perspective, 60--66.Google Scholar
- Fuad, M. M. and Oudshoorn, M. J. 2002. AdJava: Automatic distribution of Java applications. In Proceedings of the 25th Australasian Conference on Computer Science (ACSC'02). Australian Computer Society, 65--75. Google Scholar
Digital Library
- Garbinato, B. and Guerraoui, R. 1997. Using the strategy design pattern to compose reliable distributed protocols. In Proceedings of the 3rd Conference on USENIX Conference on Object-Oriented Technologies (COOTS'97). USENIX Association, 17. Google Scholar
Digital Library
- Goldberg, A. and Robson, D. 1983. Smalltalk-80: The Language and its Implementation. Addison-Wesley series in computer science. Addison-Wesley, Reading. Google Scholar
Digital Library
- Guccione, S., Levi, D., and Sundararajan, P. 1999. JBits: A Java-based interface for reconfigurable computing. In Proceedings of the 2nd Annual Military and Aerospace Applications of Programmable Devices and Technologies Conference (MAPLD).Google Scholar
- Guerraoui, R., Garbinato, B., and Mazouni, K. 1997. Garf: A tool for programming reliable distributed applications. IEEE Parall. Distrib. Technol. 5, 4, 32--39. Google Scholar
Digital Library
- Haumacher, B., Moschny, T., Reuter, J., and Tichy, W. F. 2003. Transparent distributed threads for Java. In Proceedings of the Parallel Distributed Processing Symposium (IPDPS'03). Google Scholar
Digital Library
- Holder, O., Ben-Shaul, I., and Gazit, H. 1999. Dynamic layout of distributed applications in FarGo. In Proceedings of the 21st International Conference on Software Engineering (ICSE'99). IEEE Computer Society Press, 163--173. Google Scholar
Digital Library
- Hunt, G. C. and Scott, M. L. 1999. The Coign automatic distributed partitioning system. In Proceedings of the 3rd Symposium on Operating Systems Design and Implementation (OSDI'99). USENIX Association, 187--200. Google Scholar
Digital Library
- Jones, R. and Lins, R. 1996. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley. Google Scholar
Digital Library
- Kienzle, J. and Guerraoui, R. 2002. AOP: Does it make sense? The case of concurrency and failures. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Springer, 37--61. Google Scholar
Digital Library
- Lea, D. 1997. Concurrent Programming in Java: Design Principles and Patterns. Addison Wesley, Reading. Google Scholar
Digital Library
- Liogkas, N., MacIntyre, B., Mynatt, E. D., Smaragdakis, Y., Tilevich, E., and Voida, S. 2004. Automatic partitioning: Prototyping ubiquitous-computing applications. IEEE Pervasive Comput. 03, 3, 40--47. Google Scholar
Digital Library
- Lopes, C. 1997. D: A language framework for distributed programming. Ph.D. thesis, Northeastern University.Google Scholar
- Philippsen, M. and Zenger, M. 1997. JavaParty: Transparent remote objects in Java. Concurrency: Pract. Exper. 9, 11, 1225--1242.Google Scholar
Cross Ref
- Richardson, T., Stafford-Fraser, Q., Wood, K. R., and Hopper, A. 1998. Virtual network computing. IEEE Internet Comput. 2, 1, 33--38. 1089-7801. Google Scholar
Digital Library
- Scheifler, R. 1987. RFC 1013 X Window System Protocol, Version 11. http://www.faqs.org/ftp/rfc/pdf/rfc1013./txt.pdf. Google Scholar
Digital Library
- Scheifler, R. W. and Gettys, J. 1986. The X window system. ACM Trans. Graph. 5, 2, 79--109. Google Scholar
Digital Library
- Shapiro, M. 1986. Structure and encapsulation in distributed systems: The proxy principle. In Proceedings of the 6th International Conference on Distributed Computing Systems, 198--204.Google Scholar
- Spiegel, A. 2000. Automatic distribution in Pangaea. In Proceedings of the Copenhagen Business School (CBS).Google Scholar
Cross Ref
- Spiegel, A. 2002. Automatic distribution of object-oriented programs. Ph.D. thesis, FB Mathematik und Informatik FU Berlin.Google Scholar
- Tatsubori, M., Sasaki, T., Chiba, S., and Itano, K. 2001. A bytecode translator for distributed execution of “Legacy” Java software. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Google Scholar
Digital Library
- Tilevich, E. 2005. Software tools for separating distribution concerns. Ph.D. thesis, College of Computing, Georgia Institute of Technology. Google Scholar
Digital Library
- Tilevich, E. and Smaragdakis, Y. 2002a. Automatic application partitioning: The J-Orchestra approach. In Proceedings of the Workshop on Mobile Object Systems (ECOOP'02). Google Scholar
Digital Library
- Tilevich, E. and Smaragdakis, Y. 2002b. J-Orchestra: Automatic Java application partitioning. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Springer-Verlag. Lecture Notes in Computer Science, vol. 2374, 178--204. Google Scholar
Digital Library
- Tilevich, E. and Smaragdakis, Y. 2004. Portable and efficient distributed threads for Java. In Proceedings of the ACM/IFIP/USENIX Middleware Conference. Springer-Verlag, 478--492. Google Scholar
Digital Library
- Tilevich, E. and Smaragdakis, Y. 2006. Transparent program transformations in the presence of opaque code. In Proceedings of the Generative Programming and Component Engineering (GPCE) Conference, 89--94. Google Scholar
Digital Library
- Tilevich, E., Smaragdakis, Y., and Handte, M. 2005. Appletizing: Running legacy Java code remotely from a Web browser. In Proceedings of the International Conference on Software Maintenance (ICSM). Google Scholar
Digital Library
- Waldo, J., Wollrath, A., Wyant, G., and Kendall, S. 1994. A note on distributed computing. Tech. rep., Sun Microsystems. Google Scholar
Digital Library
- Weyns, D., Truyen, E., and Verbaeten, P. 2002. Distributed Threads in Java. In Proceedings of the International Symposium on Distributed and Parallel Computing (ISDPC).Google Scholar
- Weyns, D., Truyen, E., and Verbaeten, P. 2004. Serialization of distributed threads in Java. Scalable Comput. Pract. Exper. 6, 1, 81--98.Google Scholar
- Wohlstadter, E. and Devanbu, P. 2006. Aspect-oriented development of crosscutting features in distributed, heterogeneous systems. Trans. Aspect-Oriented Softw. Devel. II. Springer-Verlag, 69--100.Google Scholar
- Wohlstadter, E., Jackson, S., and Devanbu, P. 2003. DADO: Enhancing middleware to support crosscutting features in distributed, heterogeneous systems. In Proceedings of the 25th International Conference on Software Engineering (ICSE'03). IEEE Computer Society, 174--186. Google Scholar
Digital Library
- Wollrath, A., Riggs, R., and Waldo, J. 1996. A distributed object model for the Java#8482; system. In Proceedings of the 2nd Conference on USENIX Conference on Object-Oriented Technologies (COOTS'96). USENIX Association, 17. Google Scholar
Digital Library
- Yu, W. and Cox, A. 1997. Java/DSM: A platform for heterogeneous computing. Concurrency: Pract. Exper. 9, 11, 1213--1224.Google Scholar
Cross Ref
Index Terms
J-Orchestra: Enhancing Java programs with distribution capabilities
Recommendations
Program transformations for portable CPU accounting and control in Java
PEPM '04: Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulationIn this paper we introduce a novel scheme for portable CPU accounting and control in Java, which is based on program transformation techniques at the bytecode level and can be used with every standard Java Virtual Machine. In our approach applications, ...
Experiments with multi-protocol RMI in Java
JGI '02: Proceedings of the 2002 joint ACM-ISCOPE conference on Java GrandeRemote Method Invocation is an adaptation of the remote procedure call paradigm for object-oriented environments. RMI allows clients to seamlessly invoke methods of objects within remote servers. Communication between the client and server is based upon ...
A java toolkit for teaching distributed algorithms
ITiCSE '02: Proceedings of the 7th annual conference on Innovation and technology in computer science educationWe present a toolkit for developing and visualizing distributed algorithms in Java. This toolkit consists of a Java class library with a simple programming interface that allows to develop distributed algorithms in a message passing model. The resulting ...





Comments