ACM Transactions on Software Engineering and Methodology · 2009 · 105 citations · 32 references
ComputingComputer ScienceCompilersDistributed SystemsSystems ProgrammingApplication Programming InterfacesOperating System InterfacesBytecode GenerationBytecode InterpretationBytecode RepresentationCompiler DesignObject ConstructionProgram TransformationRemote Method Invocation
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.
32
Implementing remote procedure calls
Andrew Birrell, Bruce Jay Nelson · ACM Transactions on Computer Systems · 1984 · 1.8K citations · Full text
T. Richardson, Quentin Stafford-Fraser, Ken Wood et al. · IEEE Internet Computing · 1998 · 1.1K citations
Robert W. Scheifler, Jim Gettys · ACM Transactions on Graphics · 1986 · 928 citations · Full text
Implementation and performance of Munin
John B. Carter, John K. Bennett, Willy Zwaenepoel · 1991 · 691 citations · Full text