System architecture directions for networked sensors
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
Java Virtual Machine Specification
Java Virtual Machine Specification
Contiki - A Lightweight and Flexible Operating System for Tiny Networked Sensors
LCN '04 Proceedings of the 29th Annual IEEE International Conference on Local Computer Networks
Virtual machine showdown: stack versus registers
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
VMSTAR: synthesizing scalable runtime environments for sensor networks
Proceedings of the 3rd international conference on Embedded networked sensor systems
MANTIS OS: an embedded multithreaded operating system for wireless micro sensor platforms
Mobile Networks and Applications
Run-time dynamic linking for reprogramming wireless sensor networks
Proceedings of the 4th international conference on Embedded networked sensor systems
Protothreads: simplifying event-driven programming of memory-constrained embedded systems
Proceedings of the 4th international conference on Embedded networked sensor systems
An optimising compiler for generated tiny virtual machines
EmNets '05 Proceedings of the 2nd IEEE workshop on Embedded Networked Sensors
A virtual machine for sensor networks
Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
Minimal yet effective reconfiguration infrastructures in component-based embedded systems
Proceedings of the 2009 ESEC/FSE workshop on Software integration and evolution @ runtime
A component-based run-time evolution infrastructure for resource-constrained embedded systems
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Threads2Events: an automatic code generation approach
Proceedings of the 6th Workshop on Hot Topics in Embedded Networked Sensors
Proceedings of the 7th International Workshop on Middleware Tools, Services and Run-Time Support for Sensor Networks
Science of Computer Programming
Hi-index | 0.01 |
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.