5. More on app development



Similar documents
Mobile application development J2ME U N I T I I

Java Platform, Micro Edition (Java ME) Mokoena F.R. The 7046 Team

MIDlet development with J2ME and MIDP

Development of Java ME

Mobile Application Development

Developing Applications for ios

Introduction to Android

Mobile Phones Operating Systems

Introduction to Mobile Phone. Programming in Java Me

Mobile Operating Systems. Week I

Mobile Software Application Development. Tutorial. Caesar Ogole. April 2006

Example of Standard API

Overview of CS 282 & Android

ITG Software Engineering

Tutorial: Development of Interactive Applications for Mobile Devices

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

Java ME & NetBeans Mobility. Petr Suchomel Architect, NetBeans Mobility Sun Microsystems

MOBILE APPLICATION DEVELOPMENT

Real time vehicle tracking and driver behaviour monitoring using cellular handset based accelerometer and GPS data

Mobile Development Discovery Document

Workshop on Android and Applications Development

Android v ios Mobile Operating Systems

Android Architecture. Alexandra Harrison & Jake Saxton

ios Application Development &

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

How To Develop An App For Ios (Windows)

Nokia 9210i/9290 Communicators and PersonalJava TM Application Development

CS378 -Mobile Computing. Android Overview and Android Development Environment

Lecture 3 Mobile App Development (Android, ios, BlackBerry, Windows Mobile) <lecturer, date>

Lecture 1 Introduction to Android

Module Title: Software Development A: Mobile Application Development

Android (Basic + Advance) Application Development

2 Selecting Operating System - Symbian OS

The Software Engineering of Mobile Application Development

ANDROID PROGRAMMING - INTRODUCTION. Roberto Beraldi

Introduction to Android Development. Jeff Avery CS349, Mar 2013

ANDROID OPERATING SYSTEM

An Introduction to Android

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Mobile App Design and Development

Developer's Cookbook. Building Applications with. The Android. the Android SDK. A Addison-Wesley. James Steele Nelson To

ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY

ipad, a revolutionary device - Apple

ANDROID. Programming basics

INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011

Android Basics. Xin Yang

Here to take you beyond Mobile Application development using Android Course details

Graduate presentation for CSCI By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu )

rich mobile applications made easy

01. Introduction of Android

Mobile-PC Suite: Using Mobile Phone as Remote to Control PC Operations

ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET

Overview focus on breadth understanding not depth (that s what the labs are for )

DESIGNING SHIFT CALENDAR FOR MOBILE PHONE

Android Developer Fundamental 1

ANDROID INTRODUCTION TO ANDROID

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. Oct 2003 Presented to Gordon College CS 311

BlackBerry Smartphone Application Development

Figure 6.1. Windows Phone 7 s hub-based interface, made up of live tiles and information aggregation

Table of Contents. Adding Build Targets to the SDK 8 The Android Developer Tools (ADT) Plug-in for Eclipse 9

ORACLE ADF MOBILE DATA SHEET

GUI/Custom GUI, SIP Stack, Telephony, DB, Sockets, Bluetooth, QT.

3. Software Installation. 4. Introduction to Android OS. 5. Using Android OS / Devices. 6. Eclipse debug with Android app. 8. Units of measurement

Developing Google Android Mobile Clients for Web Services: a Case Study

A Review of Different Comparative Studies on Mobile Operating System

Beginning BlackBerry 7

Teqno Mates Solutions

Project: E290 - MOBILE COMMERCE APPLICATION DEVELOPMENT

Creating and Using Databases for Android Applications

ANDROID PROGRAMMING - INTRODUCTION. Roberto Beraldi

Hacking your Droid ADITYA GUPTA

Programming Mobile Apps with Python

Praktikum Entwicklung Mediensysteme (für Master)

SYST35300 Hybrid Mobile Application Development

Android Development. Lecture AD 0 Android SDK & Development Environment. Università degli Studi di Parma. Mobile Application Development

ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android

Mobile Device Manual for 3G DVRs

Android Programming and Security

Publishing to TIZEN Using the Automated Conversion/Repackaging of Existing Android Apps. Hyeokgon Ryu, Infraware Technology, Ltd.

MA-WA1920: Enterprise iphone and ipad Programming

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

Developing and deploying mobile apps

Android Application Development

Getting Started with Tizen SDK : How to develop a Web app. Hong Gyungpyo 洪 競 杓 Samsung Electronics Co., Ltd

ELEC 377. Operating Systems. Week 1 Class 3

Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java

Università Degli Studi di Parma. Distributed Systems Group. Android Development. Lecture 1 Android SDK & Development Environment. Marco Picone

Frameworks & Android. Programmeertechnieken, Tim Cocx

Write. Once. Deploy. Anywhere. Anatole Wilson. Writing Applications for mobile devices and reducing device fragmentation with NetBeans Mobility Pack

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Transcription:

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Mobile Java (MIDP in particular) Most importantly an add-on to proprietary phone OS based systems Huge device space that is already deployed No need to modify the already existing prorietary platform but simple wrapping is enough! Disclaimer: Full Java software stacks exist; RIM & Blackberry JavaFX Mobile (earlier SavaJe) (Google Android --- at least kind of!)

Building Mobile Java Infrastructure Hosting operating system - Access to hardware

Building Mobile Java Infrastructure Simplified facilities Reduced memory footprint Standard-featured Java VM Reduced memory footprint KVM Mobile HotSpot VM Standard-featured VM Hosting operating system - Access to hardware

Building Mobile Java Infrastructure Connected Limited Device Configuration - No floating point support (v.1.0) - Simplified security scheme - No user-defined class loaders - No finalize, thread groups, reflection, or JNI - Also other simplifications CLDC Connected Device Configuration - Standard facilities CDC KVM Mobile HotSpot VM Standard-featured VM Hosting operating system - Access to hardware

Building Mobile Java Infrastructure Application development facilities MIDP IMP Personal profile Personal basis profile Foundation profile CLDC CDC KVM Mobile HotSpot VM Standard-featured VM Hosting operating system - Access to hardware

Midlet (MIDP) constructor Paused destroyapp startapp pauseapp Destroyed Active destroyapp

Development Process Development workstation MyApp.java javac MyApp.class preverifier download Target device (KVM runtime) runtime verifier interpreter MyApp.class

Sample Midlet

Midlet Implementation Extend class midlet Implement methods Constructor startapp destroyapp pauseapp Usually some way of interaction for the user required as well E.g. CommandListener interface

Behavior user start App command Action pick display Statement Statement give Info

Code... import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class PersonalityTest extends MIDlet implements CommandListener { private Command positive, negative, exitcommand; /** Yes, No, Exit */ private TextBox tb; private int nth, count = 0; /** Counter for statement and answer pair. */ private String Questions[] = /** Questions */ { "The weapon of the brave is in his heart.", "A man is a lion for his own cause.", "Courage leads to the stars, fear toward death.", "Faced with crisis, the man of character falls back upon himself.", "It is not the oath that makes us believe the man, but the man the oath.", "Whoever is careless with the truth in small matters cannot "+ "be trusted with the important matters.", "No great thing is created suddenly." }; private int Qlen = Questions.length;

Code public PersonalityTest() { exitcommand = new Command("EXIT", Command.EXIT, 1); negative = new Command("NO", Command.CANCEL, 2); positive = new Command("YES", Command.OK, 2); } protected void startapp() { pickstatement(); } public void commandaction(command c, Displayable d) { if (c == exitcommand) { destroyapp(false); notifydestroyed(); } else { if (c == positive) { count++; } else {count--;} } pickstatement(); }

Code protected void destroyapp(boolean u) {} protected void pauseapp() {} private void pickstatement() { if (nth == Qlen) { giveinfo(); } else { displaystatement(questions[nth]); nth = nth + 1; } } private void displaystatement(string statement) { tb = new TextBox("Statement Selection", statement, 256, 0); tb.addcommand(positive); tb.addcommand(negative); tb.setcommandlistener(this); } Display.getDisplay(this).setCurrent(tb);

Code private void giveinfo() { if (count > 1) { tb = new TextBox("PersonalityTest", "You seem to be an overly positive person.", 50, 0); } else if (count < -1) { tb = new TextBox("Personalitytest", "You appear as a gravely negative person.", 50, 0); } else { tb = new TextBox("Personalitytest", "You seem to have difficulties in being in line with yourself.", 80, 0); } tb.addcommand(exitcommand); tb.setcommandlistener(this); Display.getDisplay(this).setCurrent(tb); } } // class PersonalityTest

JAD/Midlet suite manifest MIDlet-1: PersonalityTest, PersonalityTest.png, PersonalityTest MIDlet-Name: PersonalityTest MIDlet-Vendor: Unknown MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-2.0

MIDlet execution environment getresorceasstream() non-class access including JAR manifest MIDlet 1 MIDlet 2 JAR File getresorceasstream() non-class access including JAR manifest (Appl. descriptor file) RMS1 RMS RMS2

MIDlet execution environment Classes and native code that implement CLDC and MIDP Only shared name space for all MIDlet suites in early versions Later systems introduce more advanced facilities Classes within MIDlet suite s JAR file All non-class files in the MIDlet s suite s JAR file Icons, images, JAR manifest Accessible with java.lang.class.getresourceasstream Contents of Application Descriptor File Accessible with java.lang.class.getresourceasstream Separate name space for RMS record stores

MIDP 1.0 libraries and interfaces UI Different device specific wrapping for widgets Canvas: Low-level interface; control for programmer Screen: Device specific widgets; control for the widgets and library; navigation, scrolling etc. built in Different screen capabilities (e.g. screen, color,...) Different input mechanisms (keyboard, touch screen,...) Networking interface Originally http focused, no link to final implementation-level protocol; later improved considerably Persistence RMS, record management system Reflects a simple, record-oriented database Records interfaced with byte arrays

UI class hierarchy (MIDP 1.0) Display Canvas Alert StringItem 0..1 List ImageItem Displayable Screen TextBox TextField Form DateField Item 0..1 Gauge ChoiceGroup

Other screen-related issues Game API (MIDP 2.0) Sprites, layering, etc. Enables native implementation GUI enhancements Builds on MIDP 1.0 LCDUI Custom items, layout control, graphical enhancements... Backward compatibility Further enhancements provided in later JSRs for e.g. Multimedia 3D

Networking Interface Originally http focused (MIDP 1.0) with multiple carriers (e.g. TCP/IP, WAP, i-mode) Numerous networking extensions and improvements HTTPS, SSL Serial port Sockets Server Sockets Datagrams Network push feature Network initiated MIDlet launch OTA (over the air) applications Installation Verify integrity, certificates, requested permissions Invocation Permissions Originally extension, later required

Persistence Based on Record Management System Records contained by record stores RMS sharing obeys MIDlet suite principle Same name can be used for different RMS record stores in different MIDlet suites Later relaxed Programmer (or device manufacturer) handles mutual exclusion listrecordstores, openrecordstore, getname, getsize, addrecord, deleterecord,... DataInputStream, DataOutputstream, ByteArrayInputStream, ByteArrayOutputStream RecordId = 1 RecordId = 7 RecordId = 3 RecordStore

Other services Timers class mytask extends TimerTask { public void run() {... } } mytimer = new Timer(); mytask = new mytask(); mytimer.schedule(mytask, 100, 1000); Access to resource files (getresourceasstream) System properties (java.lang.system.getproperty) microedition.platform (name of the device) microedition.encoding (character encoding) microedition.configuration (used configuration and its version) microedition.profiles (used profile and its version) microedition.locale (language and country)

Further interfaces JSR-120: Wireless Messaging API Short Message Service (SMS) Unstructured Supplementary Service Data (USSD) Cell Broadcast Service (CBS) JSR-135: Mobile Media API Straightforward access and control of basic audio and multimedia resources and files JSR-172: J2MET Web Services Specification Infrastructure for basic XML processing capabilities Reuse of web service concepts when designing J2ME clients for enterprise services Provides APIs and conventions for programming J2ME clients of enterprise services Programming model for J2ME client communication with web services, consistent with that for other Java clients such as J2SE.

Further interfaces JSR-177: Security and Trust Services for J2MET Necessary step for a device to become trusted, i.e., to provide security mechanisms to support a wide variety of application-based services, such as access to corporate network,mobile commerce, and digital rights management Model and a set of APIs that enable applications running on a J2ME device to communicate with a smartcard JSR-179: Location API for J2MET Optional package that enables developers to write mobile, locationbased applications for J2ME devices JSR-180: Session Initiation Protocol (SIP) for J2MET Session Initiation Protocol (SIP) is used to establish and manage multimedia IP sessions General SIP API for J2ME devices based on the SIP protocol defined by IETF and 3GPP, and targeting resource constrained platforms.

Further interfaces JSR-184: Mobile 3D Graphics for J2MET Lightweight, interactive 3D graphics API, which sits alongside J2ME and MIDP as an optional package. API targeted at devices that typically have very little processing power and memory, and no hardware support for 3D graphics or floating point math JSR-190: Event Tracking API for J2MET Optional package that standardizes the tracking of application events in a mobile device Submission of these event records to an event-tracking server via a standard protocol JSR-195: Information Module Profile Like MIDP but no screen or keyboard

Some fundamental specifications JSR-68: J2MET Platform Specification Defines the"ground rules" for the J2ME platform architecture and J2MEstandardization activities. Formalizes the fundamental concepts behind J2ME, such as the notions of a configuration and profile Defines how new J2ME APIs can be formed, e.g., by subsetting existingapis from Java 2 Platform, Standard Edition JSR-185: JavaT Technology for Wireless Industry Defines how various technologies associated with MIDP work together to form a complete handset solution for the wireless services industry Which optional packages fit with which profiles? How an end-to-end solution for interoperable Java applications will work? How the migration of applications can occur and to which profiles as the devices become more capable?

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Nokia Internet Tablet Based on Debian Linux distribution and package management Development environment based on Scratchbox virtualization system Pretty much everything can be programmatically accessed C, C++, Python, JavaScript Maemo

Maemo application: The Concept (http://maemo.org/development/training/maemo_technology_overview_content/ )

Maemo application: The code int main(int argc, char** argv) { ApplicationState astate = {}; osso_context_t* ctx = NULL; gtk_init(&argc, &argv); // Initialization begins astate.program = HILDON_PROGRAM(hildon_program_get_instance()); astate.window = HILDON_WINDOW(hildon_window_new()); hildon_program_add_window(astate.program, HILDON_WINDOW(aState.window)); ctx = osso_initialize(... /* parameters omitted */ ); // Event handler definitions g_signal_connect(g_object(astate.window), "key_press_event", G_CALLBACK(cbKeyPressed), &astate); gtk_main(); // Event processing osso_deinitialize(ctx); // Shutdown return EXIT_SUCCESS; }

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Android Originally Google, later Open Handset Alliance Open source No licence or distribution payments Beta SDK 11/ 2007, 1.0 SDK 09/2008 SDK includes emulator, debugging tools, on-device debugging T-Mobile G1 10/2008 (USA ja UK) Europe early 2009 Several manufacturers aim at launcing Android phones during 2009 Motorola, Lenovo, Sony Ericsson, Samsung

Android Application development All applications are equal Can be replaced by 3rd party apps Same APIs are available for all programs (calls, SMS, WLAN, GPS, camera, sensors, ) Inter-application communication Application can request making a call and the system seeks the corresponding service Any app can offer services and use services offered by others Background execution allowed (Unlike in Standard Java MIDP 2.0) Programs cannot control their own life cycles VM can interfere with the execution of the VM by suspending and resuming them; apps must be designed to be compatible with this

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

iphone (http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action) Mac OS X based system; origins trace to Mach kernel old Unix implementations Objective C for programming Low level interfaces commonly based on C; more advanced interfaces (e.g. Multimedia) mixture of C and Objective C Explicit redesign to support phone UI Touch events Not application centric

Technology layers Core OS and Core Services layers: fundamental interfaces for iphone OS File access, low-level data types, Bonjour services, network sockets, SQLite, access to POSIX threads and UNIX sockets, etc. Media layer: 2D and 3D drawing, audio, video, OpenGL ES, Quartz, and Core Audio, Core Animation Cocoa Touch layer: Fundamental infrastructure used by applications, object-oriented support for collections, file management, network operations, access to the user s contact and photo information and to the accelerometers and other hardware features of the device. UIKit framework provides the visual infrastructure for your application, including classes for windows, views, controls, and the controllers that manage those objects The starting point for any new project is the Cocoa Touch layer, and the UIKit framework in particular.

Objective C Code (http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action) int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; } int retval = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retval;

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Windows Mobile.NET Compact Framework Based on.net environment Common Language Runtime (CLR) MicroSoft Intermediate Language (MSIL) Just-In-Time compilation from MSIL to binary when used Tools somewhat similar than in general with.net development Small differences in programming perspective (UI, performance, resources, etc )

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

OpenMoko (www.openmoko.org) An open source project dedicated to delivering mobile phones software stack Linux, etc. What could be expected based on Maemo and Android Currently selling the Neo FreeRunnerphone to advanced users and will start selling it to the general public as soon as the software is more developed In general, seems comparable to Maemo, except that geared towards implementation of a phone, not Internet tablet

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Improving portability with VM Possibility to implement the same system on top of different infrastructure Same environment can be used in both development and execution environment Some tedious and error-prone tasks can be allocated to the virtual machine instead of the programmer Memory management in particular Support for recovering from errors Simplifies the implementation of security features There already is a central element that is responsible for executing applications

Unifying stimuli with event-based programming service caller event source service provider event event observers Traditional service call Event-based operations

Benefits Commonly used technique in UI programming Serialization of operations triggered to the execution; events can be handled one by one Simplified model of execution No need to define the order of execution in user programs; it is enough to generate an event Simplified introduction of new event generators Simplified introduction of new event observers Long-lasting operations form a problem Commonly initiate a new event that continues processing after a while Introduces additional complexity in the form of a state machine

Separating device specific parts using MVC pattern Reusable in similar devices View Controller Reusable across different user interfaces, devices, input media, etc. Model The model should gather all common aspects. In practise, many systems force commonalities to views and controllers.

Model-View-Controller, MVC Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View initialize(model) makecontroller() activate() display() update() Controller initialize(model,view) handleevent() update() attach() service()

MVC Execution Controller Model View handle- Event service notify update display getdata update getdata

Interfacing Access to device specific resources vs. access to a sandbox Security considerations unavoidable Access to device specific widgets vs. access to a generic canvas on top of which can be rendered All apps similar in a device vs. App similar in all devices Managed code for applications vs. using native applications

5. More on app development Some other mobile development systems MIDP Java Maemo Android iphone Windows Mobile OpenMoko Commonly used implementation techniques Summary

Conclusions Numerous approaches to programming mobile devices exist Commonalities Virtual machines to unify the development approach in several different configurations Event-based programming for user input Separating UI specifics using MVC Auxiliaries packaged in installation packages