Platinum Sponsors

SUN

ELCA

Gold Sponsors

Silver Sponsors

Partners

Partner events

Olivier Liechti

Olivier Liechti

Benoît Garbinato

Benoît Garbinato

(4100) Location-Based Services in Java: the inTrack Platform

Technical long talk 50 min

Tuesday, 2008-06-24, 15:00 - 15:50, Arena 9

Topics

Download the presentation

Abstract

Ubiquitous computing, context awareness and location-based services
----------------------------------------------------------------
Context awareness is a key design principle in ubiquitous computing (also 
referred to as pervasive computing). The idea is simple: to be more efficient, 
the user interface of an application should dynamically adapt itself to the 
current "context". Defining and modeling the current 
"context" is actually a challenge and has been a research topic for 
many years. Nevertheless, it has been realized early that location is one aspect 
of the context that is both very meaningful and relatively easy to capture.

For this reason, many context-aware systems developed in research labs have 
exploited user location as an implicit input to improve human-computer 
interaction. Such systems are now commonly referred to as Location-Based 
Services (LBS). The market potential for LBS is huge, and is still largely 
untapped. A number of factors now concur to increase the adoption rate. A sure 
sign of this trend is the strong emphasis put on LBS by leading and emerging 
mobile platforms (Nokia S60, Apple iPhone, Google Android, etc.).

Location-Based Services in Java: JSR 179 and beyond
---------------------------------------------------
In the context of the Java platform, Location-Based Services are closely related 
to the JSR 179, entitled "Location API for J2ME". This API is used to 
retrieve the current location of the client device in a standard way. The 
specification does not specify how the location data is obtained, and it is up 
to the implementation to provide a mechanism for this (by communicating with a 
GPS tracker, by processing information provided by the telco operator, etc.). 
The Location API for J2ME is a fairly low-level API, with a limited scope: it 
only addresses (some of) the issues faced by application developers. In 
particular, it does not address the sharing of location information, which is 
requirement for collaborative and social applications.

In this session, we look at Location-Based Services in Java beyond the scope of 
JSR 179. We consider the general problem of tracking a large volume of mobile 
entities, and of giving efficient and appropriate access to the collected 
information. We look at this problem both from a "location information 
provider" point of view (How do we ensure that location can be captured, 
stored and accessed in efficient and appropriate ways?) and from an 
"application developer" point of view (How do we make location easy to 
exploit? What kind of abstractions do we need to write location-based 
applications?).

With this goal, we present "inTrack", a platform that provides a 
complete solution for building and hosting Location-Based Services. We review 
the services offered by the inTrack middleware layer and the forces that have 
driven their design. We also present the developer API exposed by inTrack, which 
extends the JSR 179 programming model with higher-level constructs. In 
particular, we introduce the notion of Location-based Publish-Subscribe (LPS) 
and show how this programming model is well suited for collaborative mobile 
applications.

inTrack: an integrated platform for Location Based Services
------------------------------------------------------------
Developed jointly by the University of Applied Sciences of Western Switzerland 
(HES-SO) and the University of Lausanne (UNIL), inTrack is an integrated LBS 
platform. Its layered architecture consists of several subsystems, which support 
the end-to-end creation and execution of location-aware services.

At the bottom layer, different location tracking modules implement a standard 
interface. While standard technologies can be used (e.g. GPS), inTrack also 
provides two original indoor tracking modules. The middle layer provides an 
abstraction layer on top of the tracking modules and decouples the applications 
from the tracking technologies. A rich domain model is used to maintain the 
state of mobile entities and to manage access to collected information. Also in 
the middle layer, the flow of events associated to the movements of tracked 
entities is processed continuously by a special engine. The upper layer provides 
different interfaces: an API is provided to application developers, an 
administrative interface is provided to users managing the platform and the 
applications.

In the session, we will take a close look at all of these components and share 
our experiences with a number of technologies. For instance, we will describe 
Esper, an Open Source Event Stream Processing (ESP) and Complex Event Processing 
(CEP) engine. After introducing the notions of ESP and CEP, we will show that 
they are very well suited for Location-Based Services. We will provide some 
examples and show how business rules can be expressed with a special query 
language (Event Query Language). Also, we will spend some time on the issue of 
privacy and security, which are critical of context-aware computing platforms. 
We will present our approach and explain how the Acegi Security Framework has 
provided a foundation for the implementation.

Outline of the talk
-------------------
1.    Introduction to location based services (motivations, scenarios, etc)
1.1.  Ubiquitous computing & context awareness
1.2.  Location based services: examples and classification
2.    Location Based Services in Java: JSR 179 and beyond
2.1.  Scope of the JSR 179
2.2.  Current implementations
3.    The In-Track LBS Platform
3.1.  System architecture
3.2.  Domain model & services layer
3.3.  Event Stream Processing & Complex Event Processing
3.4.  Security & privacy
3.5.  Programming API: Location-based Publish-Subscribe
4.    Conclusions

Media Partners

APRESS
inside-it
netzwoche
developpez
MokaByte