ABSTRACT
The usage of cellular phones, PDAs, and other mobile devices has increased dramatically over the past ten years. Java is targeted to be one of the most popular execution environments on such systems. However, since mobile devices are inherently limited in terms of local storage capacity and Java requires large amounts of library code to be present on each client device, it is crucial to reduce the code and memory footprint to ensure Java's success on such systems. SlimVM's approach eliminates all unnecessary code and meta information on mobile devices.
We present a solution for the next generation of mobile computing environments for persistent connected embedded systems where all code resides on a network server and is requested at run time by the Java virtual machine on the client. All application and library code is analyzed on the server prior to execution on the mobile device, and only code essential for execution is sent to the client on demand. Java bytecode is manipulated and transferred to the client in the form of pre-linked basic blocks. Measurements show a reduction of the memory footprint of up to 70%.
- D. N. Antonioli and M. Pilz. Analysis of the Java class file format. Technical report, Department of Computer Science, University of Zurich, 1998.Google Scholar
- Q. Bradley, R. N. Horspool, and J. Vitek. JAZZ: An efficient compressed format for Java archive files. In Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research, pages 294--302. IBM Press, 1998. Google ScholarDigital Library
- J. M. Bull, L. A. Smith, M. D. Westhead, D. S. Henty, and R. A. Davey. A benchmark suite for high performance Java. Concurrency: Practice and Experience, 12(6):375--388, 2000.Google ScholarCross Ref
- J. A. Butts and G. Sohi. Dynamic dead-instruction detection and elimination. In ASPLOS-X: Proceedings of the 10th international conference on Architectural support for programming languages and operating systems, pages 199--210, New York, NY, USA, 2002. ACM. Google ScholarDigital Library
- L. R. Clausen, U. P. Schultz, C. Consel, and G. Muller. Java bytecode compression for low-end embedded systems. ACM Transactions on Programming Languages and Systems, 22(3):471--489, 2000. Google ScholarDigital Library
- M. Dahm. Byte code engineering with the BCEL API. Technical Report B-17-98, Institut für Informatik, 2001.Google Scholar
- P. Deutsch. GZIP File Format Specification Version 4.3. http://www.ietf.org/rfc/rfc1952.txt.Google Scholar
- J. Ernst, W. Evans, C. W. Fraser, T. A. Proebsting, and S. Lucco. Code compression. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 358--365. ACM Press, 1997. Google ScholarDigital Library
- M. Franz and T. Kistler. Slim binaries. Communications of the ACM, 40(12):87--94, 1997. Google ScholarDigital Library
- GNU Classpath, 2009. http://www.gnu.org/software/classpath/.Google Scholar
- M. Jeckle. Linpack Benchmark -- Java Version, 2004. http://www.jeckle.de/freeStuff/jLinpack/.Google Scholar
- M. Latendresse and M. Feeley. Generation of fast interpreters for Huffman compressed bytecode. In Proceedings of the Workshop on Interpreters, Virtual Machines, and Emulators, pages 32--40. ACM Press, 2003. Google ScholarDigital Library
- S. Liang. The Java Native Interface -- Programer's Guide and Specification. The Java Series. Addison-Wesley, 1999. Google ScholarDigital Library
- T. Lindholm and F. Yellin. The Java Virtual Machine Specification, Second Edition. The Java Series. Addison-Wesley, 1999. Google ScholarDigital Library
- R. Lougher. JamVM, 2009. http://jamvm.sourceforge.net/.Google Scholar
- PKWARE. .ZIP File Format Specification, 1989. http://pkware.com/documents/casestudies/APPNOTE.TXT.Google Scholar
- R. Pozo and B. Miller. SciMark 2.0, 1999. http://math.nist.gov/scimark2/.Google Scholar
- W. Pugh. Compressing Java class files. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 247--258. ACM Press, 1999. Google ScholarDigital Library
- D. Rayside, E. Mamas, and E. Hons. Compact Java binaries for embedded systems. In Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research, pages 1--14. IBM Press, 1999. Google ScholarDigital Library
- Standard Performance Evaluation Corporation. The SPECjvm98 Benchmarks, 1998. http://www.spec.org/jvm98/.Google Scholar
- Sun Microsystems, Inc. The K virtual machine (KVM) white paper, 1999. http://java.sun.com/products/cldc/wp/.Google Scholar
- Sun Microsystems, Inc. JAR File Specification, 2003. http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html.Google Scholar
- Sun Microsystems, Inc. Java ME at a Glance, 2009. http://java.sun.com/javame/.Google Scholar
- B. L. Titzer, J. Auerbach, D. F. Bacon, and J. Palsberg. The ExoVM system for automatic VM and application reduction. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 352--362. ACM press, 2007. Google ScholarDigital Library
- G. Wagner, A. Gal, and M. Franz. SlimVM: Optimistic partial program loading for connected embedded Java virtual machines. In Proceedings of the International Symposium on Principles and Practice of Programming in Java, pages 117--126. ACM Press, 2008. Google ScholarDigital Library
- Y.-S. Yang, M.-S. Jin, S.-I. Jun, and M.-S. Jung. A study on an efficient pre-resolution method for embedded java system. pages 20--24, July 2004.Google Scholar
Index Terms
- SlimVM: a small footprint Java virtual machine for connected embedded systems
Recommendations
The design, implementation, and evaluation of adaptive code unloading for resource-constrained devices
Java Virtual Machines (JVMs) for resource-constrained devices, e.g., hand-helds and cell phones, commonly employ interpretation for program translation. However, compilers are able to produce significantly better code quality, and, hence, use device ...
“Slimming” a Java virtual machine by way of cold code removal and optimistic partial program loading
Embedded systems provide limited storage capacity. This limitation conflicts with the demands of modern virtual machine platforms, which require large amounts of library code to be present on each client device. These conflicting requirements are often ...
Adaptive code unloading for resource-constrained JVMs
LCTES '04Compile-only JVMs for resource-constrained embedded systems have the potential for using device resources more efficiently than interpreter-only systems since compilers can produce significantly higher quality code and code can be stored and reused for ...
Comments