Abstract
Interest in Java implementations for resource-constrained environments such as embedded systems has been tempered by concerns regarding its efficiency. Current native compilers for Java offer dramatic increases in efficiency, but have poor support for dynamically-loaded classes, which are typically served by slow interpreters or JIT compilers, the code-size of this latter utterly mismatching the resource constraints of the system.After a brief survey of Ahead-of-Time compilers for Java, we present MoJo --- a new native compiler and the testbed for our proxy compilation scheme, which allows embedded clients to connect to servers and delegate compilation of Java class packages to native code libraries.We also present initial results from experimental testing using MoJo in a resource-constrained, mobile computing environment. We show that MoJo is faster than all surveyed Java implementations for the test platform executing our initial test application. Our proxy compilation scheme results in a 94% speed increase over the fastest tested interpreter system and a 20% speed increase over the fastest tested JIT system.The MoJo-generated binaries for the application are also shown to be 45 times smaller than those required by its nearest iPAQ JRE competitor and 275 times smaller than the Sun JRE v1.3.1 for iPAQ as a direct result of our incremental, on-demand transfer of API classes to the client.
- American National Standards Institute / International Standards Organisation. ISO/IEC 9899:1990, Programming Languages - CGoogle Scholar
- Borland/Inprise. JBuilder Homepage. http://www.borland.com/jbuilder/Google Scholar
- Department of Computer Science and Engineering, University of Washington. Cecil/Vortex Homepage. http://www.cs.washington.edu/research/projects/cecil/www/index.htmlGoogle Scholar
- Stephan Diehl. A Formal Introduction to the Compilation of Java. Software -- Practice and Experience, 28(3):297--327, March 1998 Google ScholarDigital Library
- Robert Fitzgerald, Todd~B. Knoblock, Erik Ruf, Bjarne Steensgaard, and David Tarditi. Marmot: An Optimizing Compiler for Java. Technical Report MSR-TR-99-33, Microsoft Research, June 1999Google Scholar
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification. Addison-Wesley, 2nd edition, 1999 Google ScholarDigital Library
- David Gregg, M. Anton Ertl, and Andreas Krall. A Fast Java Interpreter. In Java Optimization Strategies for Embedded Systems (JOSES), European Joint Conferences on Theory and Practice of Software (ETAPS) 2001 Workshop, April 2001. http://i44w3.info.uni-karlsruhe.de/~josesworkshop/Google Scholar
- Silicomp Group. Turbo-J Homepage. http://www.ri.silicomp.fr/adv-dvt/java/turbo/Google Scholar
- Tao Group. Elate/Insight Homepage. http://www.tao.co.ukGoogle Scholar
- Emin Gün Sirer, Robert Grimm, Arthur J. Gregory, and Brian N. Bershad. Design and Implementation of a Distributed Virtual Machine for Networked Computers. In Symposium on Operating Systems Principles, volume 34, pages 202--216. University of Washington, Department of Computer Science and Engineering, December 1999 Google ScholarDigital Library
- Red Hat Inc. GCJ Homepage. http://sources.redhat.com/java/Google Scholar
- Insignia Solutions plc. Jeode Platform Data Sheet. http://www.insignia.com/product/jeode_ds.htm, November 2000Google Scholar
- Java World. Which Java VM Scales Best? http://www.javaworld.com/javaworld/jw-08-1998/jw-08-volanomark.html, August 1998Google Scholar
- Andreas Krall and Mark Probst. Monitors and Exceptions: How to Implement Java Efficiently. In ACM 1998 Workshop on Java for High-Performance Network Computing, pages 15--24, February 1988Google Scholar
- Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, 2nd edition, 1999 Google ScholarDigital Library
- G. Muller, B. Moura, F. Bellard, and C. Consel, IRISA / INRIA, University of Rennes. Harissa: A Flexible and Efficient Java Environment Mixing Bytecode and Compiled Code. In 3rd Usenix Conference on Object-Oriented Technologies and Systems (COOTS '97), pages 1--20, Portland, Oregon, June 1997 Google ScholarDigital Library
- Gilles Muller and Ulrik Pagh Schultz. Harissa: A Hybrid Approach to Java Execution. IEEE Software, pages 44--51, March/April 1999 Google ScholarDigital Library
- University of Georgia. Introduction to IBM MVS JCL. http://www.uga.edu/ucns/hostsys/mvs/ibm-jcl-intro.html#1Google Scholar
- Michael P. Plezbert. Continuous Compilation for Software Development and Mobile Computing. Master's thesis, Department of Computer Science, Washington University, May 1996Google Scholar
- M.P. Plezbert and R.K. Cytron. Does "Just in Time" = "Better Late than Never". In Proceedings of POPL'97, pages 120--131, Paris, France, January 1997 Google ScholarDigital Library
- J. Postel. RFC 793: Transmission Control Protocol. ftp://ftp.internic.net/rfc/rfc793.txt, September 1981Google Scholar
- Todd A. Proebsting, Gregg Townsend, Patrick Bridges, John H. Hartman, Tim Newsham, and Scott A. Watterson. Toba: Java for Applications: A Way-Ahead-of-Time Compiler. Technical report, University of Arizona, January 1997 Google ScholarDigital Library
- Ramesh Radhakrishnan, Ravi Bhargava, and Lizy K. John. Improving Java Performance Using Hardware Translation. In Proceedings of the ACM International Conference on Supercomputing. ACM Press, 2001 Google ScholarDigital Library
- Silicomp Research Institute. JCod: Dynamic Compilation for Networked Devices. http://www.ri.silicomp.fr/technologies/compilers.html, February 2002Google Scholar
- Govind Seshadri, Editor-in-Chief. The VM Wars: JITs vs. Native Java Compilers. Java Report Online, 1999Google Scholar
- Kazuyuki Shudo. Shujit Homepage. http://www.shudo.net/jit/Google Scholar
- Sun Microsytems. The Java Hotspot Performance Engine Architecture (White Paper). http://www.javasoft.com/pr/1999/04/pr990427-01.html, November 2000Google Scholar
- Transvirtual Technologies. Kaffe Project Homepage. http://www.kaffe.orgGoogle Scholar
- Ronald Veldema. Jcc, A Native Compiler. PhD thesis, Department of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, Netherlands, July 1998Google Scholar
- Michael J. Voss and Rudolf Eigenmann. A Framework for Remote Dynamic Program Optimization. In Jong-Deok Choi, editor, Proceedings of the ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (Dynamo '00), volume 35, pages 32--40, Boston, MA, July 2000. Association of Computing Machinery, ACM Press Google ScholarDigital Library
Index Terms
- Proxy compilation of dynamically loaded Java classes with MoJo
Recommendations
Proxy compilation of dynamically loaded Java classes with MoJo
LCTES/SCOPES '02: Proceedings of the joint conference on Languages, compilers and tools for embedded systems: software and compilers for embedded systemsInterest in Java implementations for resource-constrained environments such as embedded systems has been tempered by concerns regarding its efficiency. Current native compilers for Java offer dramatic increases in efficiency, but have poor support for ...
Design and implementation of a comprehensive real-time java virtual machine
EMSOFT '07: Proceedings of the 7th ACM & IEEE international conference on Embedded softwareThe emergence of standards for programming real-time systems in Java has encouraged many developers to consider its use for systems previously only built using C, Ada, or assembly language. However, the RTSJ standard in isolation leaves many important ...
Trace transitioning and exception handling in a trace-based JIT compiler for java
Trace-based Just-In-Time (JIT) compilation generates machine code for frequently executed paths (so-called traces) instead of whole methods. While this has several advantages, it complicates invocation of compiled traces as well as exception handling, ...
Comments