Getting Started
The learning environment is made of three integrated tools (see figure):
- An Execution platform based on OSGiTM and Apache Felix iPOJO.
This platform supports the dynamic execution of the Java applications.
It also supports the execution of the iCasa simulator mentioned here
after.
- An Integrated Development Environment. This
Eclipse-based IDE provides comprehensive facilities for the development
in OSGi/iPOJO. Specifically, it includes a source code editor, build
automation tools and automated deployment on the execution platform.
- A smart home simulator called iCasa. This simulator
allows you to create a wide range of devices that can be used by your
OSGi/iPOJO applications. It also permits the definition of scenarios
that can be played at various speeds. iCasa GUI can be run on any
browser whereas the server part is run on OSGi (on the execution
platform).

Developing applications in the environment you have downloaded
requires a minimum understanding of OSGi and iPOJO. The following
articles contain some basic points that students should consider :
- Basics about OSGi:
This article reminds you of OSGi fundamentals. Specifically, it
discusses the notions of bundles and services, which are at the heart of
the OSGi dynamism.
- Basics about Felix: This article explains how the Apache Felix OSGi platform can be managed through a terminal or through a Web console.
- Basics about iPOJO:
This article presents the iPOJO component model and the associated
lifecycle. It shows how to create and deploy components with the IDE and
write a basic Hello World component.
The environment also includes an IDE facilitating the development and
deployment of iPOJO applications. The following articles teach you how
to use this IDE effectively :
- Your first iPOJO component: This article shows how to create and deploy a simple “Hello World” component with IDE.
- iPOJO component instances:
This article shows how to improve the “Hello World” component through
the use of configuration properties, which allows to specialize the
behaviour of component instances.
- Providing and using services: This article shows how to implement a multilingual “Hello world” using services.
- Dividing an application into multiple bundles:
This article elaborates on the “Hello World” and separates out the
component providing services from those using services. It defines three
bundles (specification, client and provider) and shows how to configure
the dependencies between these bundles.