ABSTRACT
The Java programming language enjoys widespread popularity on platforms ranging from servers to mobile phones. While efforts have been made to run Java on microcontroller platforms, there is currently no feature-rich, open source virtual machine available. In this paper we present Darjeeling, a system comprising offline tools and a memory efficient runtime. The offline post-compiler tool analyzes, links and consolidates Java class files into loadable modules. The runtime implements a modified Java VM that supports multithreading and is designed specifically to operate in constrained execution environments such as wireless sensor network nodes. Darjeeling improves upon existing work by supporting inheritance, threads, garbage collection, and loadable modules while keeping memory usage to a minimum. We have demonstrated Java running on AVR128 and MSP430 micro-controllers at speeds of up to 70,000 JVM instructions per second.
- Bhatti, S. et al. (2005): MANTIS OS: an embedded multithreaded operating system for wireless micro sensor platforms. Mob. Netw. Appl. 10(4):563--579. Google ScholarCross Ref
- Butters, A. M. (2007): Total Cost of Ownership: A Comparison of C/C++ and Java. Evans Data Corp, www.evansdata.comGoogle Scholar
- P. Corke, P. Sikka, W. Hu, S. Sen, P. Valencia, C. Crossman (Feb. 2007): a Sensor Network Architecture for Software Environments, CSIRO ICT Centre Technical ReportGoogle Scholar
- Dunkels, A. et al. (2006): 'Run-time dynamic linking for reprogramming wireless sensor networks'. In SenSys '06: Proceedings of the 4th international conference on Embedded networked sensor systems, pp. 15--28, New York, NY, USA. ACM. Google ScholarDigital Library
- Dunkels, A. et al. (2006): 'Protothreads: simplifying event-driven programming of memory-constrained embedded systems'. In SenSys '06: Proceedings of the 4th international conference on Embedded networked sensor systems, pp. 29--42, New York, NY, USA. ACM. Google ScholarDigital Library
- Hill J. et al (2000): System Architecture Directions for Networked Sensors. In Architectural Support for Programming Languages and Operating Systems, pages 93--104, 2000. Google ScholarDigital Library
- Koshy, J., Pandey, R. (2005): VMSTAR: synthesizing scalable runtime environments for sensor networks. In SenSys '05: Proceedings of the 3rd international conference on Embedded networked sensor systems, pp. 243--254, New York, NY, USA. ACM. Google ScholarDigital Library
- Levis, P., Culler, D. (2002): 'Maté: a tiny virtual machine for sensor networks'. SIGOPS Oper. Syst. Rev. 36(5):85--95. Google ScholarDigital Library
- Lindholm T., Yellin F. (1999): The Java(TM) Virtual Machine Specification (2nd Edition). Prentice Hall PTR. Google ScholarDigital Library
- Lindholm, T., Yellin, F. (March 2006): Virtual Machine Specification, Java CardTM Platform, Version 2.2.2., Sun Microsystems Inc. Google ScholarDigital Library
- http://www.harbaum.org/till/nanovmGoogle Scholar
- D. Palmer, et al. (2005). An Optimising Compiler for Generated Tiny Virtual Machines. Embedded Networked Sensors, 2005. EmNetS-II. The Second IEEE Workshop on pp. 161--162. Google ScholarDigital Library
- Porthouse, C., Butcher, D. (August 2004): Multitasking JavaTM on ARM platforms. Whitepaper, ARM Limited, http://www.arm.com/pdfs/MVMWhitePaper.pdfGoogle Scholar
- B. Saballus et. al.: Towards a Distributed Java VM in Sensor Networks using Scalable Source RoutingGoogle Scholar
- Sen, S. & Oliver, C. R. (2006): A Rule-Based Language for Programming Wireless Sensor Actuator Networks using Frequency and Communication. EmNetS-III. The Third IEEE Workshop on Embedded Networked Sensors.Google Scholar
- Shi, Y. et al. (2005): Virtual machine showdown: stack versus registers. In VEE '05: Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments, pp. 153--163, New York, NY, USA. ACM. Google ScholarDigital Library
- Sun Microsystems (2002): Java Card#8482; 2.2 Off-Card Verifier. Whitepaper, Sun Microsystems, June 2002Google Scholar
- http://tinyvm.sourceforge.net/Google Scholar
- http://www.tiobe.comGoogle Scholar
- Voigt (16--18 Nov. 2004): Contiki - a lightweight and flexible operating system for tiny networked sensors. Local Computer Networks, 2004. 29th Annual IEEE International Conference on pp. 455--462. Google ScholarDigital Library
Index Terms
- Darjeeling, a Java compatible virtual machine for microcontrollers
Recommendations
Darjeeling, a feature-rich VM for the resource poor
SenSys '09: Proceedings of the 7th ACM Conference on Embedded Networked Sensor SystemsThe programming and retasking of sensor nodes could benefit greatly from the use of a virtual machine (VM) since byte code is compact, can be loaded on demand, and interpreted on a heterogeneous set of devices. The challenge is to ensure good programming ...
Evaluating the Java Native Interface JNI: Leveraging Existing Native Code, Libraries and Threads to a Running Java Virtual Machine
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. ...
A java virtual machine architecture for very small devices
Special Issue: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool support for embedded systems (San Diego, CA).The smallest complete Java™ virtual machine implementations in use today are based on the CLDC standard and are deployed in mobile phones and PDAs. These implementations require several tens of kilobytes. Smaller Java-like implementations also exist, ...
Comments