skip to main content
research-article

J-Orchestra: Enhancing Java programs with distribution capabilities

Published:04 August 2009Publication History
Skip Abstract Section

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

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Birman, K. P. and Van Renesse, R. 1994. Reliable Distributed Computing with the Isis Toolkit. IEEE Computer Society Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Birrell, A. D. and Nelson, B. J. 1984. Implementing remote procedure calls. ACM Trans. Comput. Syst. 2, 1, 39--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  12. Dahm, M. 1999. Byte code engineering. In Proceedings of JIT.Google ScholarGoogle ScholarCross RefCross Ref
  13. Dahm, M. 2000. Doorastha: A step towards distribution transparency. In Proceedings of JIT.Google ScholarGoogle Scholar
  14. Dijkstra, E. 1982. On the role of scientific thought. In Selected Writings on Computing: A Personal Perspective, 60--66.Google ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. Goldberg, A. and Robson, D. 1983. Smalltalk-80: The Language and its Implementation. Addison-Wesley series in computer science. Addison-Wesley, Reading. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jones, R. and Lins, R. 1996. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. Lea, D. 1997. Concurrent Programming in Java: Design Principles and Patterns. Addison Wesley, Reading. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. Lopes, C. 1997. D: A language framework for distributed programming. Ph.D. thesis, Northeastern University.Google ScholarGoogle Scholar
  28. Philippsen, M. and Zenger, M. 1997. JavaParty: Transparent remote objects in Java. Concurrency: Pract. Exper. 9, 11, 1225--1242.Google ScholarGoogle ScholarCross RefCross Ref
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. Scheifler, R. 1987. RFC 1013 X Window System Protocol, Version 11. http://www.faqs.org/ftp/rfc/pdf/rfc1013./txt.pdf. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Scheifler, R. W. and Gettys, J. 1986. The X window system. ACM Trans. Graph. 5, 2, 79--109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  33. Spiegel, A. 2000. Automatic distribution in Pangaea. In Proceedings of the Copenhagen Business School (CBS).Google ScholarGoogle ScholarCross RefCross Ref
  34. Spiegel, A. 2002. Automatic distribution of object-oriented programs. Ph.D. thesis, FB Mathematik und Informatik FU Berlin.Google ScholarGoogle Scholar
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. Tilevich, E. 2005. Software tools for separating distribution concerns. Ph.D. thesis, College of Computing, Georgia Institute of Technology. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. Waldo, J., Wollrath, A., Wyant, G., and Kendall, S. 1994. A note on distributed computing. Tech. rep., Sun Microsystems. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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).Google ScholarGoogle Scholar
  44. Weyns, D., Truyen, E., and Verbaeten, P. 2004. Serialization of distributed threads in Java. Scalable Comput. Pract. Exper. 6, 1, 81--98.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. Yu, W. and Cox, A. 1997. Java/DSM: A platform for heterogeneous computing. Concurrency: Pract. Exper. 9, 11, 1213--1224.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. J-Orchestra: Enhancing Java programs with distribution capabilities

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Transactions on Software Engineering and Methodology
          ACM Transactions on Software Engineering and Methodology  Volume 19, Issue 1
          August 2009
          118 pages
          ISSN:1049-331X
          EISSN:1557-7392
          DOI:10.1145/1555392
          Issue’s Table of Contents

          Copyright © 2009 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 4 August 2009
          • Revised: 1 March 2008
          • Accepted: 1 March 2008
          • Received: 1 November 2007
          Published in tosem Volume 19, Issue 1

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader