|
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
 |
2
|
Y. Aridor , M. Factor , A. Teperman , T. Eilam , A. Schuster, A high performance cluster JVM presenting a pure single system image, Proceedings of the ACM 2000 conference on Java Grande, p.168-177, June 03-04, 2000, San Francisco, California, United States
[doi> 10.1145/337449.337543]
|
 |
3
|
|
 |
4
|
Henri E. Bal , Raoul Bhoedjang , Rutger Hofman , Ceriel Jacobs , Koen Langendoen , Tim Rühl , M. Frans Kaashoek, Performance evaluation of the Orca shared-object system, ACM Transactions on Computer Systems (TOCS), v.16 n.1, p.1-40, Feb. 1998
[doi> 10.1145/273011.273014]
|
 |
5
|
|
| |
6
|
|
 |
7
|
|
 |
8
|
Andrew P. Black , Norman C. Hutchinson , Eric Jul , Henry M. Levy, The development of the Emerald programming language, Proceedings of the third ACM SIGPLAN conference on History of programming languages, p.11-1-11-51, June 09-10, 2007, San Diego, California
[doi> 10.1145/1238844.1238855]
|
 |
9
|
John B. Carter , John K. Bennett , Willy Zwaenepoel, Implementation and performance of Munin, Proceedings of the thirteenth ACM symposium on Operating systems principles, p.152-164, October 13-16, 1991, Pacific Grove, California, United States
|
| |
10
|
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.
|
| |
11
|
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.
|
| |
12
|
Dahm, M. 1999. Byte code engineering. In Proceedings of JIT.
|
| |
13
|
Dahm, M. 2000. Doorastha: A step towards distribution transparency. In Proceedings of JIT.
|
| |
14
|
Dijkstra, E. 1982. On the role of scientific thought. In Selected Writings on Computing: A Personal Perspective, 60--66.
|
| |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
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).
|
| |
19
|
|
| |
20
|
|
 |
21
|
Ophir Holder , Israel Ben-Shaul , Hovav Gazit, Dynamic layout of distributed applications in FarGo, Proceedings of the 21st international conference on Software engineering, p.163-173, May 16-22, 1999, Los Angeles, California, United States
[doi> 10.1145/302405.302462]
|
| |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
|
| |
26
|
Nikitas Liogkas , Blair MacIntyre , Elizabeth D. Mynatt , Yannis Smaragdakis , Eli Tilevich , Stephen Voida, Automatic Partitioning: Prototyping Ubiquitous-Computing Applications, IEEE Pervasive Computing, v.3 n.3, p.40-47, July 2004
[doi> 10.1109/MPRV.2004.1321027]
|
| |
27
|
Lopes, C. 1997. D: A language framework for distributed programming. Ph.D. thesis, Northeastern University.
|
| |
28
|
Philippsen, M. and Zenger, M. 1997. JavaParty: Transparent remote objects in Java. Concurrency: Pract. Exper. 9, 11, 1225--1242.
|
| |
29
|
|
| |
30
|
|
 |
31
|
|
| |
32
|
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.
|
| |
33
|
Spiegel, A. 2000. Automatic distribution in Pangaea. In Proceedings of the Copenhagen Business School (CBS).
|
| |
34
|
Spiegel, A. 2002. Automatic distribution of object-oriented programs. Ph.D. thesis, FB Mathematik und Informatik FU Berlin.
|
| |
35
|
|
| |
36
|
|
| |
37
|
|
| |
38
|
|
| |
39
|
|
 |
40
|
|
| |
41
|
|
| |
42
|
|
| |
43
|
Weyns, D., Truyen, E., and Verbaeten, P. 2002. Distributed Threads in Java. In Proceedings of the International Symposium on Distributed and Parallel Computing (ISDPC).
|
| |
44
|
Weyns, D., Truyen, E., and Verbaeten, P. 2004. Serialization of distributed threads in Java. Scalable Comput. Pract. Exper. 6, 1, 81--98.
|
| |
45
|
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.
|
| |
46
|
|
| |
47
|
Ann Wollrath , Roger Riggs , Jim Waldo, A distributed object model for the javaTM system, Proceedings of the 2nd conference on USENIX Conference on Object-Oriented Technologies (COOTS), p.17-17, June 17-21, 1996, Toronto, Ontario, Canada
|
| |
48
|
Yu, W. and Cox, A. 1997. Java/DSM: A platform for heterogeneous computing. Concurrency: Pract. Exper. 9, 11, 1213--1224.
|
|