JSense - Prototyping Sensor-Based, Location-Aware Applications in Java Silvia Santini, Robert Adelmann, Marc Langheinrich, Georg Schaetti, and Steven Fluck Inst. for Pervasive Computing, ETH Zurich Creating applications based on data from individual sensor nodes is typically a two-tiered process: Firstly, a (potentially large) number of sensor nodes is deployed in order to gather comprehensive datasets. After analyzing the collected data, algorithms are then installed on the individual nodes and iteratively fine-tuned using a collect-and-analyze procedure. This approach is not only time consuming, but also prone to errors: the two separate steps of data collection and data analysis complicate algorithm development; the absence of programming abstractions in embedded systems programming languages often introduces hard-to-detect runtime errors; and the lack of modern integrated development environments (IDEs) does not allow for quick trial-and-error prototyping. To mitigate those effects, we have developed JSense - a hardware abstraction layer for modern sensor nodes that allows for Java-based access to all sensor and actuator controls. It supports an IDE-based centralized development cycle with real-time debugging of a particular sensor environment, as well as the use of not-yet-available sensor and actuator hardware on each node, such as positioning information. Using JSense, designers of sensor-based environments can quickly try out a combination of situations and observe in real-time the data collection processes of their nodes, while programmers are able to prototype applications in their favorite Java-IDE in a hardware independent fashion, even taking into account not-yet-deployed node hardware.