Who am I? Wireless Online Game Development for Mobile Device. What games can you make after this course? Are you take the right course?

Similar documents
DAY 3 J2ME March 2007 Aalborg University, Mobile Device Group Mobile Phone Programming

DAY 3 J2ME Aalborg University, Mobile Device Group. Mobile. Mobile Phone Programming

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA

JUGAT meeting. Roman Waitz Development. MATERNA Information & Communications

Developing Mobile Applications

J2ME ARCHITECTURE AND RELATED EMBEDDED TECHNOLOGIES

CM0256 Pervasive Computing

Overview of Java 2 Platform, Micro Edition (J2ME )

Mensch-Maschine-Interaktion 2

JAVA. Java Micro Edition

Mobile Information Device Profile (MIDP) Alessandro Cogliati. Helsinki University of Technology Telecommunications Software and Multimedia Laboratory

Acknowledgments Introduction p. 1 The Wireless Internet Revolution p. 1 Why Java Technology for Wireless Devices? p. 2 A Bit of History p.

Praktikum Mobile Productivity

Developing mobile UI

BVRIT HYDERABAD College of Engineering for Women Department of Information Technology. Hand Out

Project Overview. CSE 403, Spring 2003 Software Engineering.

Project Overview. Readings and References. Opportunity. Initial project motivation. References. CSE 403, Spring 2003 Software Engineering

Programming Wireless Devices with the Java 2 Platform, Micro Edition

J2ME crash course. Harald Holone

Requirements and Issues of V**s for Mobile Terminals

Project Overview. Readings and References. Initial project motivation. Opportunity. References. CSE 403, Winter 2003 Software Engineering

Software Development & Education Center. Java Platform, Micro Edition. (Mobile Java)

Distributed Gaming using J2ME. By Rekha Vaddepalli

Mobile Station Execution Environment (MExE( MExE) Developing web applications for PDAs and Cellphones. WAP (Wireless Application Protocol)

Chapter 13 Add Multimedia to Your MIDlets

Building a Java ME Test Suite in 15 Minutes

Sortware Comprehension and Μaintenance

Java Card 3 Platform. Peter Allenbach Sun Microsystems, Inc.

Lab Exercise 4. Please follow the instruction in Workshop Note 4 to complete this exercise.

Bluetooth Scatternet Application. Sun Code for Freedom

Developing Games for J2ME Technology- Enabled Mobile Devices

NOKIA 12 GSM MODULE JAVA TM IMLET PROGRAMMING GUIDE. Copyright Nokia. All rights reserved. Issue

Minne menet, Mobiili-Java?

Mobile Messaging Using Bangla

Mobile application development J2ME U N I T I

SUN. Sun Certified Mobile Application Developer for the Java 2 Platform, Micro Edition, Version 1.0

Device Technologies I J2ME & WinCE

TAMZ. JavaME. MIDlets. Department of Computer Science VŠB-Technical University of Ostrava

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

ProvideX On Handhelds

Wireless Java Technology

Petr Suchomel Architect, NetBeans Mobility

Accessing DB2 Everyplace using J2ME devices, part 1

Mobile Application Design and Development With the use of J2ME Technology & UML m.khlaif Computer Science Dept Garyounis University

Standards,Tools, & Best Practices Editor: Sumi Helal University of Florida

DoD Mobile Client- A Comparison between J2ME and Symbian Platforms

Java 2 Platform, Micro Edition

CS434/534: Topics in Networked (Networking) Systems

Dynabook Vision. Mobile User Interfaces. Chapter 3: Mobile HCI Vorlesung Advanced Topics in HCI (Mensch-Maschine-Interaktion 2)

Java Smart Ticket Demo Application Scrutinized

Embedded Java Security

2 Introduction to Java. Introduction to Programming 1 1

Portability and Design Issues in Developing a Mobile Phone Quiz Application Quiz Pro 2006

Copyright 2004 by Vincent Claes, Heusden-Zolder, Belgium

JavaME TAMZ. Department of Computer Science VŠB-Technical University of Ostrava

PennBench: A Benchmark Suite for Embedded Java

In order to support developers, there needs to be a number of tools available which may be involved in the ultimate solution.

GrinderBench for the Java Platform Micro Edition Java ME

Series 40 6th Edition SDK, Feature Pack 1 Installation Guide

Advanced Object-Oriented Programming Introduction to OOP and Java

All about the new SCMAD Certification Exam

Imperative model of computation

Developer s overview of the Android platform

CS260 Intro to Java & Android 04.Android Intro

Programming Bluetooth-enabled devices using J2ME. Java. in a teacup. 36 April 2006 ACM QUEUE rants:

Improved Mechanism for Efficient object Pooling in J2ME Based Mobile Phone

MARS AREA SCHOOL DISTRICT Curriculum TECHNOLOGY EDUCATION

Towards Introducing Code Mobility on J2ME. Laurentiu Lucian Petrea and Dan Grigoras Computer Science Department UCC Cork, Ireland

PTViewerME: Immersive Panoramas for PDA and Smartphone

Notes of the course - Advanced Programming. Barbara Russo

Learning objectives. The Java Environment. Java timeline (cont d) Java timeline. Understand the basic features of Java

Agenda. Summary of Previous Session. Extreme Java G Session 3 - Main Theme Java Core Technologies (Part I)

JXTA for J2ME Extending the Reach of Wireless With JXTA Technology

phoneme: High-performance, product-quality GPLv2 CDC + CLDC stacks Terrence Barr

JSR 248: Taking Java Platform, Micro Edition (Java ME) to the Next Level

Deployment of SOFA 2 applications for embedded environment

Java Programming Language Mr.Rungrote Phonkam

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

WebSphere MQ Telemetry Java Classes Version 1.1

Chapter 4 Java Language Fundamentals

Java Enterprise Edition

Certified Core Java Developer VS-1036

20.1 Tips for Lab Ex. 6

Introduction to Java Programming CPIT 202. WEWwwbvxnvbxmnhsgfkdjfcn

CS260 Intro to Java & Android 02.Java Technology

Java 2 Micro Edition

Oracle FLEXCUBE Direct Banking

Java ME Developer Guide for MOTOMAGX 1.0. Developer Guide

Outline. Introduction to Java. What Is Java? History. Java 2 Platform. Java 2 Platform Standard Edition. Introduction Java 2 Platform

Introduction to Android

J2ME Games with MIDP 2

Bangla Text Input and Rendering Support for Short Message Service on Mobile Devices

Lecture 1: Introduction to Java

Debugging Tools for MIDP Java Devices

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

ESPRIT Project N Work Package H User Access. Survey

PASS4TEST. IT Certification Guaranteed, The Easy Way! We offer free update service for one year

Application Development using J2ME Architecture for Device Independence

Application Development Using J2ME. Evaluation of Intrinsic Platform Limitations

ST.MARTIN'S ENGINEERING COLLEGE Dhulapally,Secunderabad-014

Transcription:

Who am I? Wireless Online Game Development for Mobile Device Lo Chi Wing, Peter Lesson 1 Email: Peter@Peter-Lo.com I123-1-A@Peter Lo 2007 1 I123-1-A@Peter Lo 2007 2 Are you take the right course? This course is intended for experienced Java programmers who would like to learn how to develop mobile game using J2ME. The code examples are not particularly complex, but it is assumed that you understand how classes are created within the Java platform. What games can you make after this course? I123-1-A@Peter Lo 2007 3 I123-1-A@Peter Lo 2007 4

Where can you find the material? Workshop Notes and Exercises http://www.peter-lo.com/teaching/i123-1-a/ J2ME Document http://java.sun.com/j2me/ Class Exercise Who are you? Why you apply this course? Have you learn programming such as Java? What type of game you like to develop (Action, RPG, SLG, War game )? What is your expectation for this course? I123-1-A@Peter Lo 2007 5 I123-1-A@Peter Lo 2007 6 What is J2ME? Part 1 Introduction to J2ME As we enter the post-pc era, the market for network-connected consumer devices such as smart mobile phones, televisions and PDA is expected to grow at a phenomenal rate. In order to provide a compelling Java technology solution for these devices, Sun has introduced the latest addition to the Java platform: Java 2 Micro Edition (J2ME). I123-1-A@Peter Lo 2007 7 I123-1-A@Peter Lo 2007 8

What is J2ME? Java Platform In J2ME, the Java Runtime Environment (JRE) is adapted for devices that have limitations on what they can do when compared to standard desktop or server computers. For low-end devices, the constraints are fairly obvious: Extremely Limited Memory Small Screen Sizes Alternative Input Methods Slow Processors I123-1-A@Peter Lo 2007 9 I123-1-A@Peter Lo 2007 10 Key Components of the J2ME Technology Stack J2ME Technology J2ME is divided in Configurations and Profiles: A Configuration defines the minimum Java technology that an application developer can expect on a broad range of implementing devices. A Profile defines the set of APIs available for a particular family of devices such as cell phones, PDA, microwave ovens, etc. I123-1-A@Peter Lo 2007 11 I123-1-A@Peter Lo 2007 12

J2ME Configuration A configuration is a specification for a certain class of device Usually based on available memory and processing power Specifies a JVM The JVM can be ported to the devices encompassed by the configuration Specifies a subset of J2SE APIs that will be available Common Configuration J2ME Connected, Limited Device Configuration (CLDC) Specifies Java environment for mobile phone, pager and PDA class devices CLDC devices are usually wireless J2ME Connected Device Configuration (CDC) Specifies Java environment for digital television set-top boxes, high end wireless devices and automotive telemetric systems. CDC devices may be wired (DTV cable, etc.) I123-1-A@Peter Lo 2007 13 I123-1-A@Peter Lo 2007 14 J2ME Profiles Build on configurations More specific than configurations Can specify available input and output facilities Adds APIs for user interface, persistent storage, whatever else is needed to run applications on a class of devices Common Profiles J2ME Mobile Information Device Profile (MIDP) Application runtime environment for wireless devices based upon CLDC J2ME Foundation Profile Base profile for non-gui networked devices based upon CDC J2ME Personal Basis, Personal, and RMI Profiles Basic graphics and RMI support for CDC & Foundation Profile based devices I123-1-A@Peter Lo 2007 15 I123-1-A@Peter Lo 2007 16

What will this course focus? This course focuses on using the MIDP and CLDC to create an application for a cell phone. Part 2 Introduction to CLDC and MIDP I123-1-A@Peter Lo 2007 17 I123-1-A@Peter Lo 2007 18 CLDC Scope What devices CLDC target? 160KB to 512KB total memory available for Java technology With an intermittent network connection Limited power Small screen/user Interface I123-1-A@Peter Lo 2007 19 I123-1-A@Peter Lo 2007 20

Beyond the CLDC Scope Specified in Profiles to be implemented on top of the CLDC: User interface support Event handling High-level application model Persistence support Example specification of these remaining APIs: MIDP CLDC Libraries Classes inherited from Java 2 Platform, Standard Edition (J2SE) are in packages: java.lang.* java.util.* java.io.* Classes introduced by CLDC are in package: javax.microedition.* I123-1-A@Peter Lo 2007 21 I123-1-A@Peter Lo 2007 22 CLDC Classfile Verification Preverification and Application Representation Classfiles must be preverified You will receive a runtime error if you attempt to execute an application which has not been preverified Whenever a Java application intended for a CLDC device is stored publicly, the JAR format must be used Alternate formats may be used internally I123-1-A@Peter Lo 2007 23 I123-1-A@Peter Lo 2007 24

MIDP Scope What devices MIDP target? MIDP is more specific than CLDC about device requirements: 128 kb for the MIDP implementation 32 kb for the runtime heap 8 kb for persistent data Minimum screen: 96 x 54, 1 bit color Some method of input Two-way network connection (intermittent) I123-1-A@Peter Lo 2007 25 I123-1-A@Peter Lo 2007 26 Beyond the MIDP Scope To be implemented by device manufacturers, operators, or third party developers: How an application actually gets on the device ("provisioning") The end-to-end security model System- or OEM-specific technologies Refer to MIDP 2.0 for more on provisioning and security Part 3 MIDlet Life Cycle I123-1-A@Peter Lo 2007 27 I123-1-A@Peter Lo 2007 28

The MIDlets Life Cycle MIDP applications, or MIDlets, move from state to state in their lifecycle according to a state diagram Paused initialized and waiting Active has resources and is executing Destroyed has released all resources, destroyed threads, and ended all activity notifydestroyed() Used by an MIDlet to notify the application management software that it has entered into the Destroyed state. The application management software will not call the MIDlet's destroyapp method, and all resources held by the MIDlet will be considered eligible for reclamation. The MIDlet must have performed the same operations (clean up, releasing of resources etc ) it would have if the MIDlet.destroyApp() had been called. I123-1-A@Peter Lo 2007 29 I123-1-A@Peter Lo 2007 30 destroyapp() Signals the MIDlet to terminate and enter the Destroyed state. In the destroyed state the MIDlet must release all resources and save any persistent state. This method may be called from the Paused or Active states. MIDlets should perform any operations required before being terminated, such as releasing resources or saving preferences or state. I123-1-A@Peter Lo 2007 31 notifypaused() Notifies the application management software that the MIDlet does not want to be active and has entered the Paused state. It may be invoked by the MIDlet when it is in the Active state (Invoking this method will have no effect if the MIDlet is destroyed, or if it has not yet been started) If a MIDlet calls notifypaused(), in the future its startapp() method may be called make it active again, or its destroyapp() method may be called to request it to destroy itself. If the application pauses itself it will need to call resumerequest() to request to reenter the active state. I123-1-A@Peter Lo 2007 32

pauseapp() Signals the MIDlet to enter the Paused state. In the Paused state the MIDlet must release shared resources and become quiescent. This method will only be called called when the MIDlet is in the Active state. If a Runtime exception occurs during pauseapp the MIDlet will be destroyed immediately. Its destroyapp will be called allowing the MIDlet to cleanup. Part 4 MIDlet Implementation I123-1-A@Peter Lo 2007 33 I123-1-A@Peter Lo 2007 34 MIDP Applications UI Design Principles MIDlets must be usable in all devices One handed, two handed, stylus operation Not all devices have a pointing device Must constantly think of end users Mobile Information Devices are consumer products, not desktop computers MIDP applications and native apps should look and behave consistently on any given device I123-1-A@Peter Lo 2007 35 I123-1-A@Peter Lo 2007 36

High-level UI API Use the MIDP High-level UI APIs for portability Apps run in all MIDP compliant devices No direct access to native device features Based upon javax.microedition.lcdui.screen Low-level UI API Provide access to native drawing primitives, device key events, native input devices, etc. Allow developers to choose to compromise portability for user experience, if required Handle low level events and drive graphics via javax.microedition.lcdui.canvas I123-1-A@Peter Lo 2007 37 I123-1-A@Peter Lo 2007 38 Implementation Model javax.microedition.lcdui The User Interface API Provides a set of features for implementation of UI The central abstraction of the MIDP's UI is a screen. A screen is an object that encapsulates device-specific graphics rendering user input. Only one screen may be visible at the time, and the user can only traverse through the items on that screen. The screen takes care of all events that occur as the user navigates in the screen, with only higher-level events being passed on to the application. I123-1-A@Peter Lo 2007 39 I123-1-A@Peter Lo 2007 40

javax.microedition.midlet The MIDlet package defines MIDP applications and the interactions between the application and the environment in which the application runs. Core API of MIDP An application of the Mobile Information Device Profile is a MIDlet. javax.microedition.rms The MIDP provides a mechanism for MIDlets to persistently store data and later retrieve it. This persistent storage mechanism is modeled after a simple record oriented database and is called the Record Management System. I123-1-A@Peter Lo 2007 41 I123-1-A@Peter Lo 2007 42 Development Tools Part 5 MIDlet Development J2ME Wireless Toolkit Nokia Developer s Suite for J2ME Sony Ericsson J2ME SDK Motorola iden SDK for J2ME Technology I123-1-A@Peter Lo 2007 43 I123-1-A@Peter Lo 2007 44

MIDlet Development Steps 1. Create source code for your J2ME application 2. Compile it 3. Preverify it 4. Package it into a JAR file 5. Create the application descriptor 6. Deploy and run your application in the J2ME Wireless Toolkit or your device of choice Creating Source Code Use the development kit of your choice Or use the text editor of your choice I123-1-A@Peter Lo 2007 45 I123-1-A@Peter Lo 2007 46 Compiling Source Code Use J2SE tools to create classes for MIDP Preverifying MIDP s bytecode verifier is much smaller than the J2SE verifier Bytecode verification is split into two parts: The first part is performed off the device The second part is performed on the device Use the preverifier supplied with the development kit. I123-1-A@Peter Lo 2007 47 I123-1-A@Peter Lo 2007 48

Using an Emulator Most development tools go along with an emulator for testing and debug Application Packaging MIDlets are packaged in a JAR file including Class files of the MIDlet(s) Resource files Manifest with application properties Application Descriptors (JAD files) accompany MIDlet JARs and provide deployment information (name, version, size, etc.) I123-1-A@Peter Lo 2007 49 I123-1-A@Peter Lo 2007 50 Deploying on a Real Device Devices are assumed to have some kind of application manager Installs new applications, via the Internet, a serial cable, IR, or some other means Manages applications in the device s memory Launches applications as needed I123-1-A@Peter Lo 2007 51 Sample JEME Program import javax.microedition.midlet.midlet; import javax.microedition.lcdui.*; public class ClassName extends MIDlet { public ClassName() {... } public void startapp() {... } public void pauseapp() { } public void destroyapp(boolean unconditional) { } } I123-1-A@Peter Lo 2007 52

Programming Approach Part 6 Considerations for Mobile Game Development Write your game in the simplest manner: Separating tasks into several objects and heavily rely on patterns provides maintainability and extensibility It is best to avoid using several objects unless truly necessary where memory is expensive in the mobile world Merge classes that do not provide much gain in functionality. I123-1-A@Peter Lo 2007 53 I123-1-A@Peter Lo 2007 54 Memory Limitations Three types of memory need to concern: Working Memory is the memory where the game is executed during runtime. If the game is too big, an out of memory error will occur. Storage Memory is used to store necessary information (high scores, ) for the game. Application Memory is the memory needed to hold all the games and applications in the mobile. Memory Limitations (cont ) After knowing what memory constraints, consult the manufacturers specification for the mobile handsets that are planning to deploy the game to. Check for the maximum size a game can be during runtime and memory storage available. I123-1-A@Peter Lo 2007 55 I123-1-A@Peter Lo 2007 56

Screen Limitation Displays on J2ME enabled mobile handsets vary not only from manufacturer to manufacturer; but also from model to model produced by the same manufacturer. Things to consider when adjusting the display of the mobile game are screen size, frame rate and color. Make a decision which handsets want to support. It is ideal to write the game generically then make alternate versions for certain handsets. Consult the manufacturers specification and make the appropriate adjustments. Some Solutions to Improve Performance Use the least amount of classes, stick to shorter variable, method and class names. Try to reuse objects rather then instantiating new objects over and over again. If it is a network game then reduce calls to the server Try to obtain all resources in one request at the beginning rather then several requests to reduce the chance of latency problems to occur. Optimize the graphics and merge the graphics into one sheet instead of spreading them out into several separate graphics. I123-1-A@Peter Lo 2007 57 I123-1-A@Peter Lo 2007 58 Limitation of KVM Because the KVM has to be so much smaller than a J2SE JVM, some features are missing: No native methods Limited bytecode verifier No floating point support (i.e. no float or double) No object finalization How to find Help for API? The document for MIDP API is located in C:\WTK22\docs\api I123-1-A@Peter Lo 2007 59 I123-1-A@Peter Lo 2007 60