As a result of the rapid advances in wireless technology and the emergence of a new generation of wireless devices which are cheaper and smaller, many objects in our daily lives are becoming wirelessly interoperable by having tiny and low-powered or even passive wireless devices attached to them (e.g. Passive RFID tags).
The Wireless World Research Forum predicts that by 2017, there will be 7 trillion wireless devices serving 7 billion people. This means one thousand devices per person. Imagine a world where you can interact with most of your daily objects, such as a cup of coffee, shoes, books, etc.
What makes this environment different from other domains of ubiquitous computing is its much larger scale in terms of the number of things it involves and the massive number of events that can be generated spontaneously by these things.
The characteristics of the Internet of Things bring new challenges in developing applications and make the existing challenges in the area of ubiquitous computing considerably tougher.
Some of them are new challenges which only appear in the environment of the Internet of Things, and some are old challenges which have been addressed to some extent in current solutions, except that those solutions are inadequate for the environment of the Internet of Things.
In a ubiquitous computing environment, it is not possible to impose standards and make everyone comply. We therefore need a system to join heterogeneous components together and to ensure interoperability between them.
In this paper we argue that a middleware together with suitable linguistic abstractions is a proper solution. We also point out the challenges in developing this middleware.
Such middleware offers common services for applications and eases application development. Moreover, it provides transparency with regard to the heterogeneous components for the application layer. Complementary to middleware are programming language approaches for mobile ad hoc networks and wireless sensor networks.
These approaches attempt to tackle some of the challenges (such as discovery, network disconnections, and group communication) posed by the Internet of Things environments. However, they miss out on an important characteristic of context-awareness (e.g., context-aware service discovery) and have not been applied to a massive number of devices.
In this paper we discuss some of the existing middleware and programming language approaches and identify their shortcomings. These shortcomings justify our position that new middleware and language abstractions are needed for addressing the challenges posed by the Internet of Things.
To read this external content in full, download the article from the author archives.