application development using atlas platform sensor network
DESCRIPTION
Application Development using Atlas Platform Sensor Network. Dr. Sumi Helal Hen-I Yang Jan. 30 , 2007. Eclipse OSGi Atlas Plug-in. Outline. A short tour on Eclipse A short tour on OSGi platform (Knopflerfish) A tour on Atlas plug-in for Eclipse Format - PowerPoint PPT PresentationTRANSCRIPT
Application Development using Atlas PlatformSensor Network
Dr. Sumi HelalHen-I Yang
Jan. 30, 2007EclipseOSGi
Atlas Plug-in
Outline• A short tour on Eclipse • A short tour on OSGi platform (Knopflerfish)• A tour on Atlas plug-in for Eclipse• Format
– A little bit of lecturing– A little bit of hands-on tutorial– 3 exercises– Hopefully a whole lot of discussions Eclipse
OSGiAtlas Plug-in
Download EclipseJava JDK• http://java.sun.com/javase/downloads/index.jsp• Latest Release: JDK 5.0, update 7• It takes about 1.5 minutes and occupies about
64 MB-----------------------------------------------------------Eclipse• http://www.eclipse.org/downloads/• Latest Release: Version 3.2• It takes about 5 minutes and occupies about 120
MB EclipseOSGi
Atlas Plug-in
What is Eclipse?• An extensible, open source IDE (integrated
development environment).• Goals of Eclipse are "to develop a robust, full-
featured, commercial-quality industry platform for the development of highly integrated tools."
• Eclipse is completely platform- and language-neutral
• Strong support in auxiliary tasks such as code refactoring, JUnit testing and Ant build tool
EclipseOSGi
Atlas Plug-in
Plug-ins• Eclipse in its basic configuration is simply an IDE for
developing Java program.• Eclipse is extensible in that you can install plug-ins (from
hundreds of organizations, including heavyweights like IBM, HP and Rational)– With JUnit Plug-in, Eclipse can unit test each class and method
(included)– With CDT Plug-in, Eclipse can be used for C/C++ development
(http://download.eclipse.org/tools/cdt/releases/callisto)– With Maven Plug-in, Eclipse can be used to establish
dependencies, and automatically download necessary files• More plug-ins with different functionalities can be found
at:http://eclipse-plugins.2y.net/eclipse/index.jspEclipse
OSGiAtlas Plug-in
What can Eclipse do for you?• Editing: Provide assistance in syntactic and
semantic checking, auto-complete, tool tips, folding/unfolding of functions
• Navigation: Provide list of projects and files for an overview of available resources, provide outline of classes
• Compilation and Debugging: auto-build, separate source and binary files, breakpoints, variable evaluations
• Team Support: CVS, FTP/SFTP, auto merge and conflict resolution
• Auxiliary: To do list, problems, properties, console, create javadoc automaticallyEclipse
OSGiAtlas Plug-in
Why Do we Talk about Eclipse?• The goal of Atlas platform is to provide an end-
to-end solution. As part of this solution, an OSGi bundle development Plug-in has been developed to help programmers build new applications more effectively
• This OSGi plug-in is built on top of Eclipse• A basic understanding of Eclipse and to provide
a short tutorial to the class can hopefully provide a boost to your term projectEclipse
OSGiAtlas Plug-in
Installation of Eclipse• It’s easy. Just unzip it• The last part of the installation is completed
when you run Eclipse for the first time
EclipseOSGi
Atlas Plug-in
Running Eclipse• Eclipse.exe under eclipse directory• Select a Workspace• Start building your application
EclipseOSGi
Atlas Plug-in
Terminology in Eclipse• Workspace• Project• Directory
– Source Directory– Binary Directory
• Resources------------------------------------------------------------------• Perspectives• Views
EclipseOSGi
Atlas Plug-in
Exercise 1: Running Eclipse• Initiate Eclipse• Create a new project (with name of your
choosing)• Try switching between different perspectives• Implement a “Hello Mobile Computing Class”
java program and execute it• Try debug perspective and play with
breakpoints, use the variables view to monitor the value changes Eclipse
OSGiAtlas Plug-in
EclipseOSGI
Atlas Plug-in
OSGi ™ Platform• A dynamic module system for Java™.
– It provides the standardized primitives that allow applications to be constructed from small, reusable and collaborative components.
– Components can be composed into an application and deployed.
• Allow changing of the composition dynamically on the device of a variety of networks, without requiring restarts.
• A service-oriented architecture that decouples components, and enables these components to dynamically discover each other for collaboration.
• Many standard component interfaces for common functions like HTTP servers, configuration, logging, security, user administration, XML and many more are available and well-tested.
http://www.osgi.org/osgi_technology/index.asp?section=2
OSGi ™ Platform
http://www.osgi.org/osgi_technology/index.asp?section=2
EclipseOSGI
Atlas Plug-in
EclipseOSGI
Atlas Plug-in
OSGi Bundles• Bundles: Basic components in OSGi environment • Standard Bundle Composition:
– Manifest– Code
• Interface class– Methods that will be exposed to other bundles– Defines the visible external behavior of the bundle– Methods that would allow other bundles to invoke
• Activator class– Life cycle management– The class that gets invoked first when an bundle becomes active– Handles details such as a) The starting condition b) The cleanup actions
c) The plan of action when other bundles joins or leaves d) bind the local variables to instances of the bundles that would be used later
• Implementation class– The real deal: the actual implementation of the functionalities/methods
specified in the interface class– Actual usage of the variables specified and bound in the activator class– Where the real application logic is
OSGi Bundles -- Interfacepackage demo.test;
import com.pervasa.atlas.dev.service.AtlasClient;
public interface Demo extends AtlasClient { public void shutdown();}
EclipseOSGI
Atlas Plug-in
EclipseOSGI
Atlas Plug-in
OSGi Bundles -- Activatorpublic class DemoActivator extends AtlasActivator { private DemoImpl service = null; public void start(BundleContext context) throws
Exception { service = new DemoImpl(context, this); new Thread(service).start(); } public void stop(BundleContext context) throws Exception
{ service.shutdown(); } public void serviceAddition(ServiceEvent event) { … } public void serviceModification(ServiceEvent event) { … } public void serviceRemove(ServiceEvent event) { … }}
EclipseOSGI
Atlas Plug-in
OSGi Bundles -- Implementationpublic class DemoImpl extends AtlasImpl implements Demo {
protected InterlinkPressureSensor ps;protected LED led;protected HS322Servo servo;protected boolean running;
public void assignEntity(Object obj) { if (obj instanceof InterlinkPressureSensor) { this.ps = (InterlinkPressureSensor) obj; }else if (obj instanceof HS322Servo){ this.servo = (HS322Servo) obj; }else if (obj instanceof LED){ this.led = (LED) obj; }
} public void unassignEntity(Object obj) { … } public void ReceivedData(String arg0, Properties props) { // Real Application Logic Comes Here }
}
EclipseOSGI
Atlas Plug-in
OSGi Bundles – ManifestBundle-Name: DemoBundle-Activator: demo.test.impl.DemoActivatorDevice-Type: ApplicationImport-Package: org.osgi.framework,com.pervasa.atlas.dev.service,org.sensorplatform.sensors.pressure,org.sensorplatform.actuators.servo.hs322
Bundle-Vendor: ICTABundle-Author: hyangBundle-SymbolicName: DemoBundle-Category: applicationBundle-Version: 1.0.0
EclipseOSGI
Atlas Plug-in
Download Knopflerfish• Knopflerfish is an open source OSGi reference
implementation• The goal with the Knopflerfish project is to
develop and distribute easy to use open source code, build tools and applications, related to the OSGi framework.
• http://www.knopflerfish.org/download.html– Download Knopflerfish 1.3.5– http://www.knopflerfish.org/releases/1.3.5/
knopflerfish_fullbin_osgi_1.3.5.jar– Self extracting and easy installation
Exercise 2: Implementing a Bundle• Work in groups of 2 – 3• Download the sample files to get you started:
http://www.cise.ufl.edu/~hyang/mobile• Implement the interface class• Implement the activator class• Implement the implementation class• Download the make file• Try to compile and deploy the bundle to verify if
they actually work EclipseOSGI
Atlas Plug-in
Bundles, Bundles and More Bundles• Download the following bundles
– http://www.cise.ufl.edu/~hyang/mobile– AtlasDev.jar– HS322Servo.jar– InterlinkPressureSensor.jar
• Download the following bundles that are parts of the OSGi plugin– BundleDownloader.jar– BundleUploader.jar (careful with the placement)Eclipse
OSGIAtlas Plug-in
EclipseOSGI
Atlas Plug-in
What does the OSGi plug-in do?• Browse Available Entities and Services• Provide Information on OSGi bundles• Design by Selection• Semi-automatic Environment Setup• Integrate seamlessly with all the nice
features and assistance provided by Eclipse
• Deploy New Bundles Back to Smart Space
EclipseOSGI
Atlas Plug-in
Assumptions• Physical entities (sensors and actuators) are
already in place, properly configured and represented as bundles
• Programmers can implement new applications remotely based on the available entities in the space
• The dynamic aspects of smart space is handled by two mechanisms– At implementation stage: Snapshot– At runtime: OSGi bundle life cycle management
EclipseOSGI
Atlas Plug-in
Download OSGi Plug-in for EclipseOSGi Plug-in• http://www.cise.ufl.edu/~hyang/update2/
plugins/edu.ufl.icta.jarview2_0.2.1.jar• Latest Release: Version 0.2.1• Can be downloaded directly from the URL
shown aboveOr
• Can be automatically updated using Software Updates Manager in Eclipse (http://www.cise.ufl.edu/~hyang/update2)
Installation of OSGi plug-in• It’s easy.
– If you download using Eclipse Software Update Manager, you don’t need to do a thing except to restart Eclipse (not necessary, but preferred)
– If you download the plug-in manually, you need to manually copy/place the jar file in plugins directory
EclipseOSGI
Atlas Plug-in
Running OSGi plug-in for Eclipse• Download configuration file:
– Can be downloaded from http://www.cise.ufl.edu/~hyang/mobile
– Save to C:\properties.txt– Configure the OSGi Plug-in by modifying the value
• Restart Eclipse• Select a Workspace• Switch to OSGi Perspective
EclipseOSGI
Atlas Plug-in
Components of OSGi plug-in for Eclipse
• OSGi Perspective---------------------------------------------------------------------------• Sensor List View• Actuator List View• Bundle List View• Bundle Manifest Info View---------------------------------------------------------------------------• Download Bundle Action• Refresh Action• Redirect Action• New Bundle Creation Action• Deploy Action
EclipseOSGI
Atlas Plug-in
EclipseOSGI
Atlas Plug-in
How to Develop New Application?• Initiate the OSGi platform if you have not
done so yet• Choose and connect to a OSGi platform• Edit the Manifest File• Select entities from the sensor/actuator
lists that are needed for the application• Edit the template source code files and
implement the logic for the application• Deploy back the application to the actual
environment
Exercise 3: Implementing a Bundle using Atlas plug-in
• Connect to target OSGi platform• Browse through bundles on the remote platform• Design by Selection• Create new project/bundle• Implement the logic of the application• Deploy the new bundle• Test and verify if the new bundle functions
correctly EclipseOSGI
Atlas Plug-in
EclipseOSGi
Atlas Plug-in
Conclusion• By providing tools associated with a mature and
popular IDE, we created the most synergy to the Java programmers.
• Programmers can remotely develop the application, fix all the problems locally before deploy it back to the runtime environment
• Design by Selection Philosophy• Minimize the repetitive portions of the bundle
implementation to – Reduce entry barrier to new OSGi programmers– Reduce cumbersome repetition to experience
programmers
Application Development using Atlas PlatformCEN5531 – Mobile Computing
Dr. Sumi HelalHen-I Yang
Jan. 30, 2007EclipseOSGi
Atlas Plug-in