Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
ACM Transactions on Graphics (TOG)
Implementation and performance of Munin
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
Object distribution in Orca using Compile-Time and Run-Time techniques
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
An orthogonally persistent Java
ACM SIGMOD Record
Performance evaluation of the Orca shared-object system
ACM Transactions on Computer Systems (TOCS)
The Coign automatic distributed partitioning system
OSDI '99 Proceedings of the third symposium on Operating systems design and implementation
Dynamic layout of distributed applications in FarGo
Proceedings of the 21st international conference on Software engineering
A high performance cluster JVM presenting a pure single system image
Proceedings of the ACM 2000 conference on Java Grande
Implementing remote procedure calls
ACM Transactions on Computer Systems (TOCS)
Concurrent Programming in Java: Design Principles and Patterns
Concurrent Programming in Java: Design Principles and Patterns
Reliable Distributed Computing with the ISIS Toolkit
Reliable Distributed Computing with the ISIS Toolkit
AdJava: automatic distribution of Java applications
ACSC '02 Proceedings of the twenty-fifth Australasian conference on Computer science - Volume 4
IEEE Internet Computing
Garf: A Tool for Programming Reliable Distributed Applications
IEEE Parallel & Distributed Technology: Systems & Technology
A Bytecode Translator for Distributed Execution of ``Legacy'' Java Software
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
J-Orchestra: Automatic Java Application Partitioning
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
AOP: Does It Make Sense? The Case of Concurrency and Failures
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
DADO: enhancing middleware to support crosscutting features in distributed, heterogeneous systems
Proceedings of the 25th International Conference on Software Engineering
Transparent Distributed Threads for Java
IPDPS '03 Proceedings of the 17th International Symposium on Parallel and Distributed Processing
cJVM: A Single System Image of a JVM on a Cluster
ICPP '99 Proceedings of the 1999 International Conference on Parallel Processing
A Note on Distributed Computing
A Note on Distributed Computing
Automatic Partitioning: Prototyping Ubiquitous-Computing Applications
IEEE Pervasive Computing
Portable and efficient distributed threads for Java
Proceedings of the 5th ACM/IFIP/USENIX international conference on Middleware
Appletizing: Running Legacy Java Code Remotely from a Web Browser
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Software tools for separating distribution concerns
Software tools for separating distribution concerns
Transparent program transformations in the presence of opaque code
Proceedings of the 5th international conference on Generative programming and component engineering
The development of the Emerald programming language
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Using the strategy design pattern to compose reliable distributed protocols
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
A distributed object model for the javaTM system
COOTS'96 Proceedings of the 2nd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 2
Overcoming JVM HotSwap constraints via binary rewriting
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Remote Batch Invocation for Compositional Object Services
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Classifying Java class transformations for pervasive virtualized access
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Pervasive Load-Time Transformation for Transparently Distributed Java
Electronic Notes in Theoretical Computer Science (ENTCS)
Adaptive application offloading using distributed abstract class graphs in mobile environments
Journal of Systems and Software
Refactoring android Java code for on-demand computation offloading
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2013 ACM workshop on Mobile development lifecycle
Hi-index | 0.01 |
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.