Export page to Open Document format View page as slide show

Wireless devices software and software development

Differences of system software

  • Operating systems
  • Available applications
  • Development tools
  • Support for programming languages (or language support for platform)
  • Access to device features
  • Ecosystem

OSs on mobile devices: linux and linux kernel based

  • Laptops, notebooks, netbooks, minipc, PDAs, mobile phones
  • Many other embedded devices also use Linux - APs, routers etc
    • Plenty of projects porting linux in other environments
  • Most desktop apps are ported for ARM linux architectures
  • Sailfish and Tizen (both based on MeeGo that was collaboration of Nokia (MaeMo) and Intel (Moblin))
  • Bada from Samsung
  • Android software stack by google
  • OpenMoko linux → hardware + OS
  • Firefox OS
  • Ubuntu Mobile

OSs on mobile devices: Windows family

  • Windows 8, Windows RT for laptops tablets PDAs, mobile phones
    • Windows mobile tablets, PDAs, mobile phones
    • XP, Vista, W7 laptops, notebooks, netbooks, minipc
  • Most apps for desktops run also on mobile environment or have port for it

OSs on mobile devices: Others

  • Palm OS
    • PDAs & mobile phones
  • iOS (unix like)
  • Symbian
  • Blackberry OS
  • Brew MP
  • Propriety & specialised OSs
    • Nintendo, Sony PSP,
  • Create your own

Operating systems

share 2012

  • Gartner research for 2Q 2010, 25labs for Q2 2011 and Gartner prediction for 2012

Development approaches for services

  • Thin client
    • Existing application is used for service use
    • Web browser most common
    • Limitations due the client
    • Reduced cost of development.
  • Fat client /dedicated service app
    • OS specific approach
    • Support for different devices requires porting the app for multiple platforms

Developing apps for mobile devices

OS dependent development (native)

  • Programs run only on the devices OS
    • Programs compile for the given OS on the give hardware e.g. ARM
  • Lots of APIs
  • Good access to hardware
  • Symbian, windows, Linux, Palm
  • Window & Linux development
    • Similar development as on desktop
    • Programs compiled to proper hardware architecture
    • Restrictions on available libraries
      • Special libraries e.g. UI (springs portability problems)

Developing apps for mobile devices ...

OS independent development (interpreted)

  • Java, BREW (Binary Runtime Environment for Wireless)
  • Extra layer engine runnong on the devices's OS → additionaly overhead
  • Apps are compatible for many devices
  • Not all interfaces are available
  • Restricted / Limited access to hardware
  • Still require plenty of work on porting

Developing to Symbian

  • OO design
    • C++ libraries
    • Good support for mobility
    • Plenty of middleware
  • Good development tools
    • Different development platforms/libraries for different types of devices
      • Series 60, Series 80, UIQ
    • Emulators for different environments
    • Python support

Developing to Windows platforms

  • Formerly Windows phone, Windows Mobile, Windows Pocket PC, …
  • .NET compact framework
  • C, C++, C#, VB, IronPython, …
    • Numerous libraries available
    • APIs similar to desktop windows

Developing to iOs

  • Controlled development environment
  • Requires dev kit from apple
  • Application upload to device requires jailbreaking of device or distribution via iStore
  • Support for skripting languages minimal

Linux

  • Seldom “native” or pre-installed
  • Decent hardware access
  • Many different embedded Linux for different hardwares
    • ARM Linux for ARM based processors
  • Most apps cross-compiled to different architectures
    • Scratchbox - cross-compilling environment / toolkit
      • Also includes an emulator for ARM
  • APIs & libraries from desktop version can also be used
  • Same tools can be used for desktop apps development too

Familiar Linux

  • Familiar Linux home & wiki pages
  • Linux distribution for iPAQ, PDAs
  • A Windows CE alternative
  • PDA optimised GUI
    • Supports OPIE (trolltech qtopia) & GPE (GTK+X) UIs
  • Familiar v0.8.4 - iPAQ h3600 .., Siemens Simpad
  • ipkg - package management for Apps distribution

Android

  • Open handset alliance
  • Software platform running over Linux OS
  • Development done in Java
    • Do not follow java profiles

Development frameworks

Java

  • Virtual machine (VM) interpreted byte code
    • Different VMs for different device types
    • Extra layer between hardware & apps
    • Bigger apps requiring more memory
  • Apps (may) have limited access to device resources
    • Sandbox based security

Java ...

Sun Java 2 Wireless toolkit

  • Formely J2ME
  • Different configurations for different devices
  • Configurations composed of
    • The 2 low-level APIs
    • Optimised VMs targeted at 2 broad categories of devices
      • Connected device configurations (CDC)
      • Connected limited device configuration (CLDC)

Java ...

Different profiles for different cases

  • Profile
    • Specification detailing the java technologies API
    • Built on top of & utilise underlying configurations
  • Mobile information device profile (MIDP) for CLDC
  • Foundation profile, personal profile, … for CDC

Issues

  • VMs on handsets function differently e.g. timers
  • Different profiles complicate porting apps

BREW

  • Originally supported by qualcomm chipset based on CDMA phones
    • BREW air interface supports GSM, GPRS, 3G, UMTS, CDMA
    • Main market is USA
  • BREW code created using C, C++, Java

BREW ...

  • End to end solution
    • Apps give to BREW operators
    • Apps traded between BREW operators at BREW markets
    • Customers buy BREW apps from operators
  • BREW facilitates
    • Subscriber billing & settlement to publishers, developers & their partners via BREW delivery system

Python

  • Interpreted OO programming language
    • Compiles to interpreted byte code
      • implicit & automatic compilation
    • Same code works in most devices
  • Extensible (add modules)
    • C, C++, Fortran, …
    • Java (Jython), C#/Mono (IronPython)
  • Automatic memory management
    • Reference counting
    • GC added for cycle detection

Python ...

  • Safe
    • No core dumps due to bugs
    • Decent exception handling
  • Extremly portable
    • Unix/Linux, Windows, Mac, RiscOS, PlayStation, VMS, …
  • Supported in most new mobile platforms
    • Linux, PalmOS, Windows, Maemo, Symbian, S60

Python ...

  • Some module absent in some platforms
  • Module have different APIs in different platforms
    • GUI - Maemo (gtk+hildon), Symbian (appuifgw)
  • Generic GUI APIs supporting multiple platforms
    • PyQT - QT for Python
    • Kivy - Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps
  • Not all modules may exit in every platform
    • E.g from maemo libs that have been removed include: dlelib, audiodev, curses, mutex, netrc, crypt, etc

Python ...

  • Performance
    • Slightly slower than java?
    • Requires less RAM than java
  • Good for prototypying apps
    • Fast tp write & understand
    • No cross compiling problems
  • What app types exist for the given OS
    • Thin client
    • Web browser
    • Messaging
  • Possible to create own apps for the OS
    • Smart client
    • At what cost?
    • What interfaces are offered/exposed
  • What development tools exists?
Last modified: 2014/01/10 15:29