Department of Computer Science Institute for System Architecture, Chair for Computer Networks

Application Development for Mobile and Ubiquitous Computing

9. Platforms – Java ME and OSGi

Dr. Ing. Thomas Springer Technische Universität Dresden Chair of Computer Networks JAVA MICRO EDITION Java Micro Edition - Overview

ƒ Creation of Stand-alone applications for resource limited devices • Native programming limits portability and reusability • Java is a widely deployed platform • supports portability and reusability • issues with resource-limited devices for Java SE

ƒ Sun divides today the Java-technology into 3 domains: • Java SE (Standard Edition) ⇨ Desktop applications • Java ME (Micro Edition) ⇨ Resource restricted systems • Java EE (Enterprise Edition) ⇨ Server-side solution

ƒ Goals of Java ME • Portability of applications for large range of resource-limited devices • same (Java) programming model • Comfortable development of applications for mobile devices

ƒ Fast growing distribution of Java Micro Edition • Number of Java ME-enabled mobile phones: o 2002: 31 Mio. o 2003: 88 Mio. o 2008: 592 Mio. (prognosis)

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 3 Application Domains of Java ME

ƒ Designed for devices with restrictions concerning processor power, memory, display size and networking capabilities ƒ Heterogeneous requirements for Java ME devices • Personal, mobile, networked devices o Mobile phones, PDA`s, Smart phones, pagers o Characteristics:• Simple User Interfaces • Memory capacity: 128 – 512 kb • Wireless network connection (low bandwidth)

• Commonly used, stationary, networked devices o Set-Top-Boxes, video-phones, entertainment and navigation systems… o Characteristics:• More complex user interfaces • Memory capacity: 2 – 16 MB • Broadband network connection over TCP/IP

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 4 Modular Architecture – Java ME Contents

Optional Packets

Profiles

Configurations CVM

KVM … Kilo Virtual Machine, CVM … Compact Virtual Machine Ref: [Schmatz, Java 2 Micro Edition]

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 5 Modular Architecture- Details

ƒ CVM/KVM • Kernel of Java ME • CVM for more powerful devices (High-End PDA) • KVM for resource restricted devices (Mobile Phones) o Restrictions compared to JVM (JNI, Class file-Verifier) ƒ Configurations • Horizontal classification of Java ME • Smallest common basis of all devices of that category ƒ Profiles • Vertical classification of Java ME • Adaptation to special devices (different display sizes) • Application development (MIDlets) ƒ Optional packets • Extension by additional functionality (SMS, MMS, Bluetooth) • support for device-specific functionality

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 6 Configurations

ƒ Configuration defines • language support of Java • functionality of Virtual Machine (VM) • basic programming libraries o Usually subset of Java SE used o Alternative/additional functionality defined outside Java SE ƒ Two configurations • Connected, Limited Device Configuration (CLDC) o for personal, mobile, weakly-connected devices • Connected Device Configuration (CDC) o for shared, stationary, network integrated devices ƒ Different versions per configuration • Currently two versions (1.0 and 1.1) for CDC and CLDC

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 7 Configurations - CDC

ƒ Connected Device Configuration (CDC) • Currently available in Version 1.1 (JSR-218) • Characteristics o Powerful CPUs (min. 32 Bit) o High memory resource (min. 4 Mbytes) o Good data transmission rates: permanent network connection ƒ Profiles are subsets of Java SE 1.4.2 • Foundation Profile 1.1 (JSR – 219) o Extension of CDC by security packets o No graphical user interfaces possible • Personal Basis Profile 1.1 (JSR-217) o Graphical User Interfaces by subset of AWT o Only light-weight components (container, component) oUsageofX-lets - Similar to MIDlets, States: Loaded, Active, Paused, Destroyed - Communication by Inter-Xlet-Communication(IXC) • Personal Profile 1.1 (JSR-216) o Supports almost all components of AWT o including Heavy Weight components (Buttons, Lists) Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 8 Configurations - CLDC

ƒ Connected Limited Device Configuration (CLDC) • Currently available in Version 1.1 (JSR-139) • Kilo Virtual Machine o goal: 160 – 512 kb memory used o Subset of Java VM features - no floating point arithmetic (no float and double) (available for CLDC 1.1) - no native functions - no user defined class loaders - no introspection (no serialization, no RMI) - no Thread groups and daemon threads - limited Garbage Collector (no finalize(), no weak references (available for CLDC 1.1))

• Characteristics o Less powerful CPUs with 16-32 Bit o Low memory resources: 192-512 k byte o Short battery life time o Low transmission data rates -> no permanent network connection o Minimal operating system for managing hardware

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 9 Profiles of CLDC

ƒ Mobile Information Device Profile (MIDP) • Timer (delay of activities) • Network connection by Generic Connection Framework (GCF) • Persistent memory (RMS) o Mini database as record store organized o Data operations (add, change, delete of records) o Record store assigned to applications • Application development o Generation of MIDlet-Suites • Grafical User Interfaces o Lowest Common Denominator User Interface (LCDUI) •Security o Trusted MIDlet Suites (MIDP 2.0)

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 10 CLDC Application Development

ƒ Midlets are basic abstraction for application • Lifecycle managed by Application Management Software (AMS) on mobile Device • Deployed as Midlet Suites

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 11 MIDP Applications (2)

ƒ MIDlet-Suites are running in a life cycle ƒ Installation, application cycle, de-installation ƒ Application cycle • MIDlets are in a state: Active, Paused, Destroyed • Paused in case of inactivity (break in case of other activities) • In state Destroyed: used resources are freed in case of ending the application new()

destroyApp()

pauseApp()

startApp()

destroyApp()

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 12 MIDlet – Basic Structure

import javax.microedition.midlet.*; import javax.microedition.lcdui.*;

public class Fligbookingsystem extends MIDlet implements javax.microedition.lcdui.CommandListener {

// Constructor – invocation of method initialize public Flightbookingsystem() { initialize(); } public void startApp() { }

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }

}

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 13 Midlet Descriptions

ƒ Manifest • Part of .jar file • Contains information about the application as attribute assignments • Mandatory attributes: o MIDlet-Name, MIDlet-Version, Midlet-URL, o Configuration and Profile requirements • Optional attributes: o MIDlet-Description, MIDlet-Icon

ƒ Java Application Descriptors (JAD) • External of .jar file • Delivers information about the application before the installation on the device • Verification if available resources are sufficient, integrity of .jar and trustability of vendor • Contains Attributes of Manifest and • Signature of Midlet Suite, certificates of vendor and certification authorities, Access permissions

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 14 Midlet GUI

ƒ No AWT supported in MIDP • Heterogeneous displays - small monochrome screens up to high resolution, high color screens • Lowest Common Denominator (LCDUI) Approach – weakest resources are reference ƒ Two variants for implementing graphical user interfaces • High-level API o Elements for abstract form-based UI elements (button, textbox, date field) o abstract UI elements mapped to native elements o High portability o Look-and-Feel depends on implementation - MIDlets can‘t manipulate visualization of UI elements (shape, color, font) - Simple user interactions handled internally – without notifying the MIDlet (e.g. navigation in dialog larger than display) - Abstraction of input devices and method • Low-level API o Basic graphic functions on Canvas addressing pixels (point, line, rectangle) o handling of physical input elements (e.g. phone buttons) o low level events (e.g. button pressed, button released) oUsed for Game-API

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 15 MIDP classes for GUI creation

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 16 LCDUI - Example

ƒ Usage of High-Level API ƒ Set display to main menu during initialization of MIDlet ƒ For each MIDlet one display is assigned

// This method initializes UI of the application. private void initialize() { getDisplay().setCurrent(get_mainMenu()); }

// This method should return an instance of the display.

public javax.microedition.lcdui.Display getDisplay () { return javax.microedition.lcdui.Display.getDisplay(this); }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 17 LCDUI – Example – Screens und Items

public javax.microedition.lcdui.Form createInputForm() {

Item items[]=new Item[5]; items[0] = new javax.microedition.lcdui.Spacer(1000, 1); items[1] = new javax.microedition.lcdui.Spacer(1000, 1); items[2] = new javax.microedition.lcdui.TextField("*Name", null, 120, 0x0); items[3] = new javax.microedition.lcdui.TextField("*Flug", null, 120, 0x0); items[4] = new javax.microedition.lcdui.TextField("*Sitz", null, 120, 0x0);

FlightRequest_Storn_InputForm = new javax.microedition.lcdui.Form("Flug – Stornierung", items);

/* Commands of Formular */ FlightRequest_Storn_InputForm.addCommand(createStornCommand()); FlightRequest_Storn_InputForm.addCommand(createBackCommand()); FlightRequest_Storn_InputForm.setCommandListener(this);

return FlightRequest_Storn_InputForm; }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 18 LCDUI – Example – Create Command

ƒ Create Navigation Command /*** Commands ***/

/* Storn */ public javax.microedition.lcdui.Command createStornCommand() {

stornCommand = new javax.microedition.lcdui.Command("Stornierung", javax.microedition.lcdui.Command.OK, 1);

return stornCommand; }

ƒ Handle input events public class Fligbookingsystem extends MIDlet implements javax.microedition.lcdui.CommandListener { … // called, if command was performed public void commandAction(javax.microedition.lcdui.Command command, javax.microedition.lcdui.Displayable displayable) { } }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 19 Midlet network communication

ƒ No adoption of “java.net“ due to: • 27 classes in J2SE 1.4 >200 kB (> min. requirement for CLDC) • No consistent usage of protocols (Socket, InetAddress, URLConnection) • Not flexible, because of direct class use, i.e. directly bound to protocol implementation - no interfaces

ƒ Generic Connection Framework (GCF) • functional comparable alternative to „java.net“ • Homogenous API for all network types • Contained in “javax.microedition.io“ • Communication Protocols represented by o generic Connection interface implemented by Connector class o Connection provides homogeneous interface for accessing all types of connections o particular connection/protocol implementation is subclass of Connection

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 20 Generic Connection Framework (2)

Mandatory

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 21 Generic Connection Framework (3)

ƒ Producing a connecting object through : “Connector.open(String arg)“ arg=scheme:target[;parameters]

Protokolltyp Beispielparameter für arg Interface

HTTP http://java.sun.com HttpConnection HTTPS https://java.sun.com HttpsConnection Sockets (TCP) socket://time-a.nist.gov:13 SocketConnection Serial comm:0;baudrate=2400; CommConnection Datagrams (UDP) datagram://127.0.0.1 UDPDatagramConnection ƒ HTTP and HTTPS are suported by all MIDP 2.0 devices, all other types are optional

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 22 Generic Connection Framework (4)

ƒ Example: HTTP- Connection

try { HttpConnection con = (HttpConnection)Connector.open("http://www.tu-dresden.de"); } catch (ConnectionNotFoundException ex) { // connection with server can not be established

catch (IOException ex) { // general I/O error } catch (SecurityException ex) { // no rights for network access }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 23 Midlet data management

ƒ For MIDP min. 8kB persistent memory required

ƒ Record Management System (RMS) • Simple mechanism for storing persistent data • Device independent API • Not comparable to data base • Simple data store consisting of a set of non-typed data • Data sets are name, value pairs while name=id, variable size

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 24 RMS – Example

// Create record store if it does not exist RecordStore rs = RecordStore.openRecordStore(REC_STORE, true);

// read record

// Allocate space to hold each record byte[] recData = new byte[50];

// Get data into the byte array rs.getRecord(id, recData, 0);

//write record

// Write data into an internal byte array ByteArrayOutputStream strmBytes = new ByteArrayOutputStream();

// Get stream data into byte array and write record byte[] record = strmBytes.toByteArray(); rs.addRecord(record, 0, record.length);

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 25 MIDP2.0 Security (1)

ƒ Concept of Trusted MIDlet-Suites ƒ Check trustability of vendor and integrity of .jar • Signature contains checksum signed by vendor • .jad contains certificate of vendor and certificate authorities • Root certificates on mobile device • certificate = public key – signed by certificate authority ƒ No guaranty for secure transmissions

Development Environment Mobile Device

signing checksum using checksum MIDlet-Suite vendors private key .JAR

add signature to .JAD descriptor MIDlet-Suite validate signature .JAD

root certificate validate vendors of certificate public key authority Midlet provisioning

ƒ Over-the-air Provisioning (OTA) • Initiated by user • Controlled by AMS (Application Management Software) ƒ Installation process: •.JAD-Server ⇨ with .jad-file (application descriptor) •.JAR-Server ⇨ with .jar-archive • Notification Server ⇨ Gets feedback about installation success

- Often all 3 roles provided by one server

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 27 OTA User Initiated Provisioning

AMS = Application Management Software, part of Java Runtime on mobile device

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 28 Java ME - Integration

[Ref: java.sun.com]

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 29 Development Tools

ƒ Toolkits • Sun Wireless Toolkit 2.3 Beta (WTK) • Carbide (formerly Nokia Developer Suite) • Siemens Mobile Toolkit 3.0 (SMTK) • Motorola iDEN SDK for J2ME (MSDK)

ƒ Integrated Developement Environments (IDE) • EclipseME 1.1.0 • Sun NetBeans5.0 Mobility Pack5.0 (NMP) • JBuilder 2005 MobileSet3.0.1

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 30 Java ME Summary

ƒ Application Development for mobile devices with Java ƒ Several Platforms specified • CDC development similar to Java SE • CLDC development varies significantly

ƒ Pro: • Configurable platform • Supports large variety of mobile devices • Java development and portability • Web Service support ƒ Contra: • Limited portability cased by large variety of configurations, profiles and optional packets • Lowest common denominator approach limites use of device features

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 31 OSGI OSGi - Overview

ƒ OSGi = Open Service Gateway Initiative ƒ Founded in 1999 ƒ Large consortium, BMW, German Telecom, IBM, Siemens, VW

ƒ Definition of a specification of a open, standardized, component-based service platform

ƒ Initial Application Domains • home and building automation • telematic platform ƒ Increasing number of application areas • application platform for mobile devices • platform for dekstop applications (e.g. ) • embedded systems, e.g. entertainment systems by Philips

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 33 What is OSGi

ƒ Local component plattform based on Java • bundles as components • runtime environment for bundles Applications/Bundles • allows multiple applications running on one Java VM Base Services • sharing of components and resources between applications Service Registry

ƒ Additional Features on top of Java Life Cycle Platform • management of bundle-lifecycle at Class Loading runtime o Installation, Start, Stop, Update, Deinstallation of Bundles Java VM • Provision of basic services • Service registry Operating System • Dynamic deployment and binding for bundles • Remote bundle management (Remote Management Architecture) • Packet and version management

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 34 Overview about OSGi Components

OSGi Framework ƒ Components in OSGi are called Bundles • interface definition • java classes and further resources Bundle A • bundle description - manifest file {…} Bundle B ƒ Unit of composition is service {…} ƒ Unit of deployment is bundle

ƒ Bundle compiled into JAR • Class files • resources Bundle C •Manifest o describes contents of JAR {…} o deployment information, e.g. import and export of java packages for shared use o Description of dependencies = service, defined by = bundle java interface OSGi – Bundle dependencies

ƒ The dependencies of a bundle are: • Package dependencies, • Service dependencies, and bundle • Runtime environment dependencies.

bundle bundle

bundle bundle

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 36 OSGi – Package Dependencies

Dependencies are defined through the manifest file Framework • Import-Package: org..framework org.osgi.framework • Export-Package: org.osgi.service.http de.vpe.firstservice ƒ The framework resolves these Bundle A dependencies, statically, before Export org.osgi.service.log starting the bundle. com.ibm.service.log • This is the difference between com.ibm.j9 INSTALLED and RESOLVED states. Import org.osgi.service.http javax.servlet.http

Bundle B Export ericsson.osgi javax.servlet javax.servlet.http org.osgi.service.log Import org.osgi.service.http

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 37 OSGi – Bundle Dependencies

ƒ Service Dependencies • The dependencies are expressed by bundle to service. • The dependencies can be declared in the manifest file. • A bundle manages dynamic connections between services. • At any time a bundle may display/remove a service interface or require/release the use of a service interface. • The OSGi specification does not mention if every service must handle the complexity about the dynamic addition or removal of external services.

ƒ Run-time Environment Dependencies • The framework commonly publishes events associated with: o Insertion of a new bundle, or o Publication of a new service. • Bundles constantly keep listening to these events. • Can take appropriate actions whenever an event happens.

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 38 Bundle – Lifecycle

ƒ Bundle lifecycle managed by OSGi runtime environment ƒ Bundles my be installed and updated anytime

Install • Evaluation of manifest file • Checking availability of bundle classes and resources • Persistent saving

Resolve • Resolution of static dependencies to external bundles and java packages Uninstall • Must take place explicitly through the OSGi platform • Removal of all persistently saved parts of the bundle

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 39 Example Bundle

ƒ 1. Step: Service Interface

package Connector; public interface ConnectorService { public String request(String url,char type,int flnr,int snr,String name, boolean s, boolean sdc,boolean w, boolean wdc); }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 40 Example Bundle Implementation package Connector; 2. Step: import java.io.IOException; Implementation of Service import Connector.EndToEndClient; Interface in Java public class ConnectorServiceImpl implements ConnectorService{ Class

EndToEndClient client;

public String request(String url, char type,int flnr,int snr,String name,boolean s,boolean sdc,boolean w, boolean wdc) { client = new EndToEndClient(url); String FlightRequest_returnValue=""; try { FlightRequest_returnValue = client.ejb_OfficeServlet_processFlightRequest( type,flnr,snr,name,s,sdc,w,wdc); } catch (IOException e) { e.printStackTrace(); } return(FlightRequest_returnValue); } }

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 41 Example Bundle

Manifest-Version: 1.0 „ 3.Step: Manifest Bundle-Name: Connector Bundle-Activator: Connector.Activator Bundle-SymbolicName: Connector Bundle-ClassPath: /j2me.jar,. Bundle-Version: 1.0 Export-Package: Connector, ConnectorService

exports packets Connector, ConnectorService to be available for other bundles

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 42 Example Bundle

package Connector; import org.osgi.framework.BundleActivator; „ 4. Step: import org.osgi.framework.BundleContext; Bundle-Activator import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration;

public class Activator implements BundleActivator { public static BundleContext bc=null;

public void start(BundleContext bc) throws Exception { System.out.println(bc.getBundle().getHeaders().get(Constants.BUNDLE_NAME)+" starting...");

Activator.bc=bc; ConnectorService connect=new ConnectorServiceImpl(); ServiceRegistration registration=bc.registerService( ConnectorService.class.getName(), connect, new Hashtable()); System.out.println("Service registered: ConnectorService"); }

public void stop(BundleContext bc) throws Exception { System.out.println(bc.getBundle().getHeaders().get( Constants.BUNDLE_NAME)+" stopping..."); Activator.bc=null; } } Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 43 OSGi – Assemblage

ƒ At a given point in time, an OSGi system looks like the figure below:

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 44 Overview of Service Registry

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 45 Example Bundle – Importing a service

package Client; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import org.osgi.util.tracker.ServiceTrackerCustomizer; import Connector.ConnectorService; public class Activator implements BundleActivator {

public static BundleContext bc=null; public ServiceTrackerCustomizer customizer; public ServiceTracker tracker; public FlightBookingClient fbc=null;

public void start(BundleContext bc) throws Exception { Activator.bc=bc; fbc=new FlightBookingClient(); customizer=new MyServiceTrackerCustomizer(bc,fbc); tracker=new ServiceTracker(bc,ConnectorService.class.getName(),customizer); tracker.open(); }

public void stop(BundleContext bc) throws Exception { this.tracker.close(); this.customizer=null; this.tracker=null; Activator.bc=null; }

Dr.} Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 46 package Client; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTrackerCustomizer; import Connector.ConnectorService; public class MyServiceTrackerCustomizer implements ServiceTrackerCustomizer{

private BundleContext bc=null; private FlightBookingClient fbc=null;

public MyServiceTrackerCustomizer(BundleContext bc,FlightBookingClient fbc){ this.bc=bc; this.fbc=fbc; If tracked service is } registered bind to public Object addingService (ServiceReference reference) { service ConnectorService connect=(ConnectorService)bc.getService(reference); fbc.handservice(connect); fbc.getSendRequestButton().setEnabled(true); fbc.getResultArea().setText(""); return connect; rebind if tracked } service is modified public void modifiedService (ServiceReference reference, Object service) { ConnectorService connect=(ConnectorService)bc.getService(reference); fbc.handservice(connect); unbind if tracked } service is public void removedService (ServiceReference reference, Object service) { deregistered fbc.getSendRequestButton().setEnabled(false); fbc.getResultArea().setText("Der Service ist zur Zeit nicht verfügbar!"); ConnectorService connect=null; fbc.handservice(connect); } } OSGi Plaform Services

ƒ Service registry ƒ Lifecycle management

ƒ Log Service (message logging) ƒ HTTP Service ƒ UPnP Service ƒ Event Admin Service ƒ Monitoring Service ƒ Service Tracker ƒ XML Parser ƒ IO Connector Service (basic comm. Infrastructure)

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 48 OSGi Platforms

ƒ Open Source • Equinox (Eclipse's OSGi console) • • Knopflerfish • Oscar ƒ Commercial • mbedded Server (Prosyst) • AveLink (Atinav) • Service Management Framework (IBM) ƒ Extensions • R-OSGi (ETH Zurich, Swiss) o provides a transparent way to access services on remote OSGi platforms • SFelix (INRIA, France) o secure Version of Felix o supports the publication of signed bundles

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 49 Example Equinox (Eclipse's OSGi console)

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 50 Example Equinox (Eclipse's OSGi console)

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 51 Example Knopflerfish

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 52 OSGi Summary

ƒ Local, component-based Platform

ƒ Unique features • Multiple applications in one Java Environment • Configurable framework with services as bundles • Dynamic installation, update and discovery of bundles

ƒ Application areas • Home automation • Embedded systems • Mobile applications

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 53 References

ƒ Java ME • http://java.sun.com/javame/index.jsp • http://today.java.net/pub/a/today/2005/02/09/j2me1.ht ml • http://developers.sun.com/learning/javaoneonline/j1onli ne.jsp?track=4&yr=2007 ƒ OSGi • http://www.osgi.org/ • http://wiki.easybeans.org/xwiki/bin/pdf/Main/OSGi • http://www.osgi.org/documents/ • http://www.knopflerfish.org/osgi_service_tutorial.html • http://www.aqute.biz/OSGi/Tutorial • http://felix.apache.org/site/apache-felix-osgi- tutorial.html

Dr. Thomas Springer Application Development - Lecture 9. Platforms - Java ME and OSGi 54