de leukste bug
DESCRIPTION
The Bug is a device with which you can build your own mobile system by combining certain modules. Each module delivers a specific piece of functionality, such as camera, video output, GPS location, etc. The fun part of this device is that both the hardware and the software are completely modular and dynamic. That means that you can easily, with Eclipse and an SDK, write your own software for it. This session will introduce the Bug and the OSGi based software stack and will build and deploy a whole application.TRANSCRIPT
luminis
De leukste BugMarcel Offermans
luminis
Introduction
• Marcel Offermans
• .
• IT solutions from idea toimplementation
• experts in Java, OSGi, .NET,Agile/Scrum
Enschede
image © 2008 Google Earth
ApeldoornArnhem
luminis
Agenda
• The BUG hardware
• The software stack, from kernel to application
• OSGi overview
• Concierge, R3 and the SDK
• Live demos
• Hello world on the BUG
• Developing and deploying a camera application
• Wrapping up
luminis
Agenda
• The BUG hardware
• The software stack, from kernel to application
• OSGi overview
• Concierge, R3 and the SDK
• Live demos
• Hello world on the BUG
• Developing and deploying a camera application
• Wrapping up
luminis
BUG
• Electronic building blocks to build personalized devices
• Open platform for custom hardware and software development
• Based on proven technologies:
• Linux
• Java
• OSGi
• 100% open source ((L)GPL, BSD and EPL)
luminis
BUG elements
• BUGbase
• mobile linux computer
• BUGmodules
• video, audio, GPS, sensors, general I/O, ...
• SDK
• based on Eclipse
• BUGnet
• community application repository
luminis
BUGbase
• Mobile Linux computer
• Freescale ARM SoC at 532 MHz
• 128 MB RAM, 32 MB flash, 2 GB SD storage, USB 2.0
• LCD menu system with navigation buttons and LEDs
• battery powered
• BUG Module Interface with 4 slots
• I2C, I2S, UART, ...
• hot pluggable
• kernel subsystem
luminis
BUG camera
• 2 megapixel camera
• flash LED
• 3 buttons
luminis
BUG LCD
• QVGA (320x240) resolution
• touchscreen
• (simple) accelerometer
luminis
BUG GPS
• GPS device
• internal or external antenna
luminis
BUG motion and accelerometer
• IR motion detector
• 3 axis accelerometer
luminis
BUG von Hippel
• named after MIT professor Eric von Hippel
• exposes most hardware interfaces
• suited for rapid prototyping of modules, and as general I/O device
Democratizing Innovation
In this book I explain in detail how the emerging process of user-centric, democratized innovation works. I also explain how innovation by users provides a very necessary complement to and feedstock for manufacturer innovation.
luminis
BUG audio
• audio in and out
• mic, headphone, line-in, line-out
• 2 hardware buttons
luminis
Third party and planned
• Zigbee
• Wifi
• 3G
luminis
Agenda
• The BUG hardware
• The software stack, from kernel to application
• OSGi overview
• Concierge, R3 and the SDK
• Live demos
• Hello world on the BUG
• Developing and deploying a camera application
• Wrapping up
luminis
BUG software stack
• Linux 2.6 kernel
• CDC JVM (phoneME advanced)
• OSGi R3 framework (Concierge)
• BUG applications are collections of OSGi bundles Linux Kernel
Java VM
OSGi
AppAppApp
luminis
OSGi history
• Started as an embedded platform for the “home gateway”
• Originally under the JCP as JSR-8 (1999)
• OSGi alliance, large consortium, with a mission:
• maintaining and publicizing the OSGi specification
• certifying implementations
• organising events
• OSGi R3: march 2003
• Current version: OSGi Release 4.1 (JSR-291)
luminis
OSGi today
OSGi technology is the dynamic module system for Java™
OSGi technology is Universal Middleware.
OSGi technology provides a service-oriented, component-based environment for developers and offers standardized ways to manage the software lifecycle. These capabilities greatly increase the value of a wide range of computers and devices that use the Java™ platform.
luminis
OSGi Alliance
• Expert Groups:
• core platform (CPEG)
• mobile (MEG)
• vehicle (VEG)
• enterprise (EEG)
• residential (REG)
• Working Groups:
• marketing
• requirements
luminis
OSGi specification
OSGi Service PlatformService CompendiumThe OSGi Alliance
Release 4, Version 4.1April 2007
OSGi Alliance
Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:44:10 + 01'00'
Signatu re Not Verified
OSGi Service PlatformCore SpecificationThe OSGi Alliance
Release 4, Version 4.1April 2007
OSGi Alliance
Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:45:47 + 01'00'
Signatur e Not Verified
luminis
OSGi Framework Layering
L3 - Provides a publish/find/bind service model to decouple bundles
L2 - Manages the life cycle of a bundle in a framework without requiring the vm to be restarted
L1 - Creates the concept of a module (aka. bundles) that use classes from each other in a controlled way according to system and bundle constraints
L0 - well defined profiles that define the environment in which bundles can work, ie:* CDC/Foundation* JavaSE-6
SERVICE MODEL
MODULE
LIFE-CYCLE
ExecutionEnvironment
luminis
Module Layer
• Unit of deploymentis the bundle i.e., a JAR
• Separate class loaderper bundle
• Class sharing at the Java package level
• Supports multiple versions of packages
Module
ModuleBundle Bundle Bundle
org.apache.utils 1.0
org.apache.utils 1.1org.apache.log 2.3
org.apache.db 1.4
Bundle
exports
imports
exports
imports
exports
exports
luminis
Manifest
Bundle-Name: Example BundleBundle-SymbolicName: net.luminis.example.bundleBundle-Version: 1.0.0DynamicImport-Package: net.luminis.jdbc.*Import-Package: org.osgi.framework;version=“1.3“, org.osgi.service.event;version=“[1.0,2.0)“, net.luminis.foo;resolution:=“optional“Export-Package: org.osgi.service.event;version=“1.1“Bundle-ManifestVersion: 2
luminis
Life-cycle Layer
• Managed life cycle
• States for each bundle;
• Allows updates of existing bundles
• Dynamically install, start, update, and uninstall
Life-cycle
Life-cycle
start
end
installedinstall
startingstart
stopping stop
activeresolved
uninstalled
uninstall
Module
luminis
Life-cycle Example
Bundle
OSGi Framework
luminis
Life-cycle Example
Bundle
OSGi Framework
Provided Package
luminis
Life-cycle Example
Bundle
OSGi Framework
Bundle
Install
Bundle
luminis
Life-cycle Example
Bundle
OSGi Framework
Bundle
Resolve
Bundle
luminis
Service Layer
• OSGi framework promotes service oriented interaction pattern among bundles
Service
Service
Log Database
Bundle Bundle Bundle
publish useuse
publish
Bundle
Prefs
publish
use
Service Provider
Service Requester
Service Registry
interact
publish find
Life-cycle
Module
luminis
Service Example
Bundle
OSGi Framework
luminis
Service Example
Bundle
OSGi Framework
Provided Package
Provided Service
luminis
Service Example
Bundle
OSGi Framework
Bundle
Install
Bundle
luminis
Service Example
Bundle
OSGi Framework
Bundle
Resolve
Bundle
luminis
Service Example
Bundle
OSGi Framework
Bundle
Resolve
Service
luminis
Security Concepts Overview
• Codebased security of the Java Security Model
• Makes use of Protection Domain
• The stack walk based Permission Check
• Signed bundles
• User based security is supported by the UserAdmin service but not integrated in the standard permission check as with JAAS
• PermissionAdmin and ConditionalPermissionAdmin servicesprovide management infrastructure
Security
Module
Life-cycle
Service
luminis
Leveraging standard services
• Specification:
• OSGi compendium – catalog of standard service descriptions
• Implementations:
• OBR repository at bundles.osgi.org – over 1400 bundles, implement compendium and other services
• Maven repository and third party OBR’s
• Springsource has a repository
• More and more projects are made OSGi compatible, for example: Apache Commons OSGi, Jetty, ...
luminis
OSGi compendium
Log
HTTP
Device Access
Configuration AdminPreferences
Metatype
Wire AdminUser Admin
IO Connector
Initial Provisioning
UPnP™ Device
Declarative Services
Event Admin Service Tracker
XML Parser
Position
Measurement and State
Execution Environment Spec
OSGi Service PlatformService CompendiumThe OSGi Alliance
Release 4, Version 4.1April 2007
OSGi Alliance
Digitally signed by OSGi Alliance DN: cn=OSGi Alliance, c=US Date: 2007.02.22 14:44:10 + 01'00'
Signatu re Not Verified
luminis
Concierge
• implements OSGi R3 specification
• small footprint: 80 kB
• optimized for embedded environments
• low resource consumption
• tuned for VM’s that interpret bytecode
• tested on many platforms
• iPAQ, Zaurus, Nokia 9300, LinkSys NSLU, iMote2, ...
• Homepage: http://concierge.sourceforge.net/
luminis
OSGi R3
• no bundle symbolic names
• no require-bundle
• only one version of a package
• a somewhat smaller compendium
OSGi Service Platform
Release 3March 2003
luminis
Dragonfly BUG SDK
• software development kit to build applications
• Eclipse plug-ins, open source
• includes a virtual BUG, an emulator to test applications without hardware
luminis
SDK interfaces with hardware
luminis
Agenda
• The BUG hardware
• The software stack, from kernel to application
• OSGi overview
• Concierge, R3 and the SDK
• Live demos
• Hello world on the BUG
• Developing and deploying a camera application
• Wrapping up
luminis
Hello World on the BUG
• Register ourselves as a listener for button events
• When an event comes in, blink all LEDs for half a second
• Deploy the code to the BUG
luminis
Adding modules
• at the OSGi level, adding a module means new services appearing
• applications can track these services and become active once all required services are present
• BUG SDK has a convenient project wizard to help you with that
• internally, Service Trackers are used to track OSGi services
luminis
Developing and deploying a camera application
• Use the camera, LCD and accelerometer to:
• wait until you hold the device still for a little while
• take a picture
• display the picture on the LCD
• Use the project wizard to depend on the right services
• Deploy to the BUG
• Test the application
luminis
Agenda
• The BUG hardware
• The software stack, from kernel to application
• OSGi overview
• Concierge, R3 and the SDK
• Live demos
• Hello world on the BUG
• Developing and deploying a camera application
• Wrapping up
luminis
Wrapping up
• We’ve looked at the open software and hardware stack of the BUG
• After a brief look at OSGi, we developed and deployed a couple of applications to the BUG
• Before you ask, a new version of the BUG, which supports WiFi is scheduled for June and will ship to europe (you need a US address now)
• The BUG community is very supportive, check it out on their site and go to #buglabs on Freenode IRC
luminis
Links
• Slides, docs and code:http://opensource.luminis.net/
• Buglabs:http://buglabs.net/
• OSGi:http://www.osgi.org/
• Marcel Offermans: [email protected]
luminis
Questions?!
? & !