Posted by : Unknown Tuesday, May 7, 2013

 

Overview of presentation

Introduction to Java 2 Platform Micro Edition (J2ME)

Flavours of Java Platform

·         J2SE (Java 2 Platform Standard Edition)
·         J2EE (Java 2 Platform Enterprises Edition)
·         J2ME (Java 2 Platform Micro Edition)

Where J2ME fits in the overall java specification

J2ME building blocks

        • Configurations
          • CLDC (Connected Limited Device Configuration)
          • CDC (Connected Device Configuration)
        • Profiles
          • KVM (K Virtual Machine)
          • CVM (C Virtual Machine) 
MIDP (Mobile Information Device Profile)

J2ME related technologies

        • Java card
        • Java TV


  Application of J2ME platform
      
        The Clash of Mobile Platforms

·        ExEn
·        Mophun
·        WGE 
                 Advantages of J2ME
                Conclusion
Introduction to Java 2 Platform Micro Edition (J2ME)

The Java 2 Micro Edition encompasses the full range of products, technology, tools and standards needed to enable the information appliance market. It currently includes two different implementations of the Java virtual machine:
  • A Java virtual machine suitable for 32-bit RISC/CISC/DSP microprocessors and a few megabytes of working memory. Typical products in this market include screen phones, set-top boxes and high-end PDAs.
  • A Java virtual machine suitable for 16-bit or 32-bit RISC/CISC microprocessors with a few hundred kilobytes of available memory. Typical products in this market include cell phones, low- to mid-range PDAs and low-end set-top boxes.
Because Java 2 ME includes both in-device and off-device elements, it provides an end-to-end architecture for device manufacturers, service providers, and independent software vendors. The end-to-end architecture leverages and integrates such key Sun technologies as JiniTM and Java Embedded ServerTM.

The technology leader in the mobile space over the past year has been Sun Microsystems Inc.'s Java 2 Platform Micro Edition, or J2ME. Industry heavy weights across the board lined up to announce support and J2ME-capable devices now are available worldwide. Despite this, it is clear that J2ME is emerging as the common mobile development platform for application developers interested in writing one application and deploying that application to multiple device types. However, we need to be clear that J2ME's extreme portability also introduces several technical disadvantages as well.
Wireless technology is evolving at a rapid pace. There is a lot of talk about mobile and wireless computing and there is also a fair amount of hype. However, the one thing that is conspicuously absent from much of these discussions on mobile and wireless computing is a discussion on what these devices are connecting to. The fact is, most of the value, in terms of content and capabilities of the device, is a result of interacting with a server of some type. This is true whether we are talking about micro browsers such as WAP and iMode, J2ME clients, or short message service (SMS) and email. Behind the scenes these devices are interacting with services that reside somewhere on a network. These services handle much of the complex details of the features offered by wireless devices. Although there are complexities that the mobile device must deal with, a well-designed wireless architecture delegates as much complexity as possible to the server. This is desirable because servers have more processing capabilities and do not have the power restrictions of mobile devices (i.e., servers don't run on batteries that are worn down by the CPU). This article examines wireless computing from the server's perspective

Flavors of Java Platform
Summary:
q  Driving forces

q  Penetration in a wide variety of market segments: wristwatch, washing machine, IP router, web server, video games etc.

q  Different devices have different requirements and different expectations of Java.

q  One platform (solution) cannot address all the market segments.

q  Users/developers want flexibility. They want to choose what they want to use and what they do not.

q  Good strategy?
J2SE

q  Feature complete Java foundation
q  Client side enterprise development: stand alone applications & web applets
q  2 binary deliverables
§  JDK: Application development
§  JRE: Runtime environment
q  Example: desktop or workstation
J2EE

q  Distributed applications
q  Server side enterprise application
q  Multi-tier application model
q  Middle-tier contains business logic and system services
q  Scalability, manageability, accessibility
q  Examples: JDBC, Components, CGI etc

J2ME
q  Characteristics
q  Limited memory: 128K to 2 Meg
q  Limited computational power
q  Either mobile or plug-in devices
q  Mobile à battery powered


q  Requirements
q  Built-in consistency across products
q  Power of OO programming language
q  Code portability
q  Safe network delivery
q  Upward scalability (to J2EE & J2SE)




Where J2ME fits in the overall java specification
Introducing wireless devices into an architecture comes with some challenges that are not present in a wire-based architectures. These challenges must be managed from the server as well as the device. Although there are a number of issues to consider, the three following issues are most critical when connecting to Internet-based services over a wireless connection.
  • Bandwidth: The wireless networks available today are much slower than wire-line services. Connection speeds range from 2 kbps to about 20 kbps depending on the type of network and signal strength.
  • Service availability: Wireless networks have dead spots and limited
  • coverage outside of heavily populated areas. What's more, connections between a device and the server can drop unexpectedly if a user moves out of coverage or steps into a dead spot by walking into an elevator, entering a stairwell and so forth.
  • Cost of the wireless service: Some networks offer unlimited usage, others charge by the kilobyte while others charge by length of time connected. Furthermore, users may move in and out of roaming areas while operating a device. A wireless architecture needs to take these issues into consideration in order to optimize network usage and avoid large service bills.

Optimizing Communication

In order to optimize how the server communicates with a wireless device, it is desirable to keep the communication to a minimum. If possible, a connection between the server and device should be opened just long enough to exchange some data and then close down. Modems on mobile devices tend to consume a lot of battery power, which is a precious resource for a mobile device. Furthermore, some network providers, such as those operating on CDMA networks, tend to charge by amount of time connected. Keeping the connection open longer than necessary becomes unnecessarily expensive.

The Wireless Challenge

Hopefully by now you are getting an idea of the challenges faced by wireless applications. In the sections that follow, a number of communication models are introduced that help manage these problems. As with most solutions, there are pros and cons with each approach. Therefore, it is important to understand the benefits and weaknesses of each model so the appropriate model can be applied for a given situation.When data is transmitted in the other direction, from the device to the server, the communication only requires a single request, since the server's reply contains the confirmation. If the transmission is successful, the device may take action on the information sent to the server, such as remove it from its data store

Configurations

The Java 2 Micro Edition can be deployed in multiple configurations. A configuration is defined as a set of optimized Java APIs, class libraries and a virtual machine targeting a family of devices with similar requirements on size and capabilities. Configurations include components of the java.io, java.net, java.util, and the java.lang packages.

Sun, in conjunction with industry partners, will define and evolve the Java 2 Micro Edition and its configurations. This is done with the JCP (Java Community Process). The Java 2 Micro Edition includes two standard configurations, which are subsets of the Java 2 Standard Edition core APIs, and which will fit in 128k of ROM.

Connected Limited Device Configuration (CLDC)

Summary:

·         160 Kbytes to 512 Kbytes of total memory available.

·         16-bit or 32-bit processor.

·         Low power consumption and often operating with battery power.
·         Connectivity with limited bandwidth.



CLDC Specifications

The Connected Limited Device Configuration (CLDC) is one of two configurations defined through the Java Community Process as part of Java 2 Platform, Micro Edition (J2ME). CLDC is the foundation for the Java runtime environment targeted at small, resource-constrained devices, such as mobile phones, pagers, and mainstream personal digital assistants. CLDC, combined with the Mobile Information Device Profile (MIDP), is the Java runtime environment for today's resource-constrained mobile information devices (MIDs) such as phones and entry level PDAs.
Currently, two versions of the CLDC specification are available:
1.    CLDC 1.0 (JSR-37)
2.    CLDC 1.1 (JSR-139)
CLDC 1.1 is a revised version of the CLDC 1.0 specification, and includes new features such as floating point and weak reference support, in additional to other enhancements. CLDC 1.1 is backward compatible with CLDC 1.0, and continues to target small and resource-constrained devices with the objective of maintaining a tight footprint.
CLDC RI 1.1: This version of the CLDC reference implementation is based on the CLDC 1.1 specification and is targeted at device manufacturers who want to port this J2ME configuration to another platform.
CLDC RI 1.0.4: This version of the CLDC reference implementation is based on the CLDC 1.0 specification and is targeted at device manufacturers who want to port this J2ME configuration to another platform.
MIDP RI 2.0: This version of the MIDP reference implementation is based on the MIDP 2.0 specification and supports the CLDC RI 1.0.4. The MIDP RI is targeted at device manufacturers who want to port this J2ME profile to another platform.
Connected Device Configuration (CDC)

Summary:


·         2Mbytes or more memory for Java platform

·         32-bit processor

·         High bandwidth network connection, most often using TCP/IP

The JDBC Optional Package for CDC-Based J2ME Applications
The Connected Device Configuration (CDC) is at the heart of the Java 2 Platform, Micro Edition, supporting applications on high-end network-connected devices such as home appliances, set-top boxes, interactive TVs, and handheld PCs. It's natural to expect that many applications written for these devices will need access to information in databases, possibly from different vendors. In applications written for the Java 2 Platform, Standard Edition (J2SE), the Java Database Connectivity (JDBC) API provides this kind of access.  To provide CDC-based applications with database access, a subset of the JDBC 3.0 API has been defined as the JDBC Optional Package for CDC/Foundation Profile API.
This article presents an overview of optional packages and shows where they fit in the J2ME architecture, and then explores the JDBC optional package in more detail, comparing and contrasting it with JDBC 3.0. The article:
  • Summarizes the similarities and differences between the JDBC optional package and JDBC 3.0
  • Describes briefly each of the interfaces, classes, and methods that the optional package has inherited from JDBC 3.0
Overview of Optional Packages
As you may already know, the J2ME defines two main components:
  • Configurations, composed of a Java virtual machine and a minimal set of class libraries. Think of a configuration as a vertical set of APIs that provides the base functionality for a particular range of devices that share similar characteristics, such as memory footprint and network connectivity. A configuration also defines a Java virtual machine to be used on different types of devices.
  • Profiles, a horizontal set of high-level APIs that defines the application life-cycle model, the user interface, and access to services provided by a category of devices.
Profiles extend configurations, and can themselves be extended by other profiles - and by optional packages, which offer standard APIs for using existing and emerging technologies to address specific market requirements. Figure 1 illustrates the software stack that includes the CDC and the Foundation Profile (CDC/FP):
At this writing, the Java Community Process has defined two optional packages for CDC/Foundation, one for Remote Method Invocation (RMI) and one for JDBC. The J2ME RMI Optional Package (RMI OP) is defined by JSR 66, and the JDBC Optional Package for CDC/Foundation Profile by JSR 169.
The RMI optional package is a subset of the RMI technology in J2SE. It enables applications written in the Java programming language and running on CDC-based networked devices to invoke each other's methods, and the methods of J2SE applications running on larger systems. The RMI optional package and JDBC 3.0 thus enable developers to create applications distributed across a variety of Java virtual machines, running on platforms ranging from handheld devices to network servers. The RMIOP reference implementation can be built with implementations of CDC/FP, including those extended by the Personal Basis Profile.
Overview of Changes
The JDBC 3.0 API of J2SE includes functionality that is not applicable for, or not supported by, CDC/Foundation. As a result, some APIs had to be removed. The
JDBC optional package is a strict subset of JDBC 3.0, however, so applications built using JDBC CDC/FP are upwardly portable to JDBC 3.0. Details appear later in this article, but here is a summary of the changes that have been made:
  • Support for connection pooling has been removed.
  • The classical way of creating connections, using the DriverManager interface, has been replaced. As a result, the interfaces DriverManager, Driver, and DriverPropertyInfo have been removed, along with the methods DatabaseMetaData.getURL(), RowSet.setURL(), and RowSet.getURL(). You should use the DataSource interface, which minimizes the connection overhead, to create connections.
  • The exception classes no longer write details of thrown exceptions to the log, but driver vendors write the output of toString() to the log. The toString() method is overridden by SQLException and all its subclasses.
  • The interface ParameterMetaData has been removed.
  • Support for setting parameters by name in the CallableStatement interface has been removed.
  • Support for SQL 99 types using the interfaces Array, Ref, Struct, SQLData, SQLInput, and SQLOutput has been removed.
  • The methods setTypeMap() and getTypeMap() have been removed, so you can't use them to perform custom type mapping.
Inherited Classes and Interfaces
The JDBC optional package for CDC/Foundation has inherited from J2SE's java.sql package the interfaces and classes described in Tables 1, 2, and 3:

Table 1: Interfaces Inherited from the java.sql Package

Interface
Description
Blob
Used to represent an SQL BLOB type
CallableStatement
Used to execute SQL stored procedures
Clob
Used to represent an SQL CLOB type
Connection
Represents a session with a database
PreparedStatement
Represents a precompiled SQL statement
ResultSet
A table of data that represents a result set generated by executing a statement that queries the database
ResultSetMetaData
Used to get information about the types and properties of columns in a ResultSet object
Savepoint
A point within the current transaction that can be referenced from Connection.rollback()
Statement
Used to execute and return the output of a static SQL statement


Table 2: Classes Inherited from the java.sql Package
Class
Description
Date
Used to identify an SQL DATE value
Time
Used to identify an SQL TIME value
Timestamp
Used to identify an SQL TIMESTAMP value
Types
Defines the constants used to identify generic SQL types (also known as JDBC types)

Table 3: Exceptions Inherited from the java.sql Package
Exception
Description
BatchUpdateException
Thrown when an error occurs during a batch update operation
DataTruncation
Thrown when JDBC unexpectedly truncates a data value during a read or write
SQLException
Provides information related to a database-access or other type of error
SQLWarning
Provides information related to database-access warnings
Table 4: Interfaces and classes inherited from the javax.sql package
Interface/Class
Description
DataSource
A factory for connections to the physical data source; should be used in place of DriverManager
RowSet
Adds support to the JDBC API for the JavaBeans component model
RowSetInternal
Implemented by a RowSet object to present itself to a RowSetReader or RowSetWriter
RowSetListener
Implemented by a component that needs to be notified of events in a RowSet object
RowSetMetaData
Represents an object that contains information about columns in a RowSet object
RowSetReader
Represents a reader to populate a RowSet object with data
RowSetWrite
Represents a writer to write changes back to the underlying data source
RowSetEvent
The class instantiated to represent an Event object generated when an event occurs to a RowSet object

Profiles

An additional way of specifying the subset of Java APIs, class libraries and virtual machine features that targets a specific family of devices is the profile.
A profile is a collection of Java technology-based class libraries and APIs and a specific configuration that provides domain-specific capabilities for devices in a specific vertical market.

Executive Summary (KVM)

Over the last two years Sun has introduced tailored JavaTM virtual machine technology to serve products in the consumer and embedded markets. With PersonalJavaTM technology targeted at screen phones, high end PDAs and set top boxes, and Java CardTM technology targeted at smart cards, Sun has greatly extended the scope of the Java programming environment. In the process, Sun has demonstrated the versatility of this environment and enabled the development of many new and powerful information appliance products.
The K virtual machine (KVM) is Sun's newest Java virtual machine technology and is designed for products with approximately 128K of available memory. The KVM fills a very important role in Sun's Java virtual machine product offerings, and will form a part of a completely new Java runtime environment. This environment is highly optimized for small-memory limited-resource connected devices such as cellular phones, pagers, PDAs, set-top boxes, and point-of-sale terminals.
The KVM has been developed as part of larger effort to provide a modular, scalable architecture for the development and deployment of portable, dynamically downloadable, and secure applications in consumer and embedded devices. This larger effort is called the Java 2 Platform Micro Edition (Java 2 ME). Connected, personalized, intelligent tools are becoming increasingly important in our business and private lives. Java 2 ME is an architecture designed to address the specific technical requirements of these new information appliances.
While connected consumer devices like pagers, cell phones and PDAs have many things in common, they are also diverse in features, form, and function. Information appliances tend to be special-purpose, limited-function devices, not general-purpose computing machines like servers and desktop systems. Serving this market calls for a large measure of flexibility in how Java technology is deployed. Flexibility in deployment is also important because over the lifetime of any one connected device, its applications and capabilities can change and grow to accommodate the needs of the user. Users want the ability to purchase economically priced products with basic functionality and then use them with ever-increasing sophistication. Java technology enables users, service providers, and device manufacturers to take advantage of a rich portfolio of application content that can be delivered to the user's device on demand, by wire or over airwaves.
The Java 2 ME architecture is modular and scalable so that it can support the kind of flexible deployment demanded by the consumer and embedded markets. For low-end, resource-limited products, Java 2 ME and the KVM support minimal configurations of the Java virtual machine and Java APIs that capture just the essential capabilities of each type of device. As device manufacturers develop new features in their devices or service providers develop new and exciting applications, these minimal configurations can be expanded with additional APIs or with a richer complement of Java virtual machine (Java VM) features. While the KVM is targeted at devices containing 16- or 32-bit processors and a total memory footprint of approximately 256K bytes, KVM can be deployed flexibly to address a range of trade-offs between space and functionality. In addition, Java 2 ME provides a range of virtual machine technologies, each optimized for the different processor types and memory footprints commonly found in the consumer and embedded marketplace.
The KVM is engineered and specified to support the standardized, incremental deployment of the Java virtual machine features and the Java APIs included in the Java 2 ME architecture. The Java 2 ME architecture defines a small core API which must be fully implemented in every Java 2 ME compatible device. Java 2 ME is deployed in several configurations. Each configuration addresses a particular "class" of device and specifies a set of APIs and Java virtual machine features that users and content providers can assume are present on those devices when shipped from the factory. Application developers and content providers must design their code to stay within the bounds of the Java virtual machine features and APIs specified by that configuration. In this way, interoperability can be guaranteed among the various applications and devices in a particular class.

Design Considerations for the KVM

Our design goal for the KVM was to have a small memory footprint without loss of performance. Therefore, we implemented around a straightforward bytecode interpreter with some optimizations of the Java virtual machine. The representation of the internal structures is conventional in the sense that each class has a constant pool, method table, field table, and interface table. However, most of the structures have been implemented as linear tables to provide faster access and to conserve memory space. We have also taken advantage of various low-level features of the C programming language to achieve better performance.
Portability
Portability was another important goal in the KVM design. For this reason, non-portable code elements (including functions that obtain information about the host computing system) have been minimized and limited to a single file. Multithreading and the garbage collector have been implemented in a completely platform-independent fashion. Rather than relying on external interrupts, the multi-tasker performs thread switching on the basis of the number of bytecodes the current thread has executed, making thread switching more deterministic and easier to debug. This approach is practical because we are not targeting multiprocessor platforms.

Garbage Collection

We provided a simple, non-moving, single-space mark-and-sweep garbage collector. It operates well with heap sizes of just a few tens of kilobytes. The collector is handle-free, because we always used direct rather than indirect object references.

Host System Calls

To minimize memory usage, we implemented the native functions and wrappers used to call host system functions - which would ordinarily be implemented through the Java Native Interface - by making them a part of the virtual machine. Currently, the native function support is very limited.
Graphics are currently implemented by calling platform-specific graphics functions. There is no support for AWT, Project Swing, or any other high-level graphics libraries.
Another space-reducing tactic was implementing the KVM in C. However, we also minimized the number of C runtime functions that the virtual machine calls in order to ease implementation or replacement of those functions. If any of the debugging modes in the source code are enabled, then the target platform must support the fprintf function in the standard C I/O library (stdio), or a function with the same interface as fprintf.

Challenges

As we move into the future our goal for the KVM technology is to evolve the K virtual machine and to provide tools to accomplish the following goals:
  • Optimize class file format to reduce space requirements and to reduce time to install on the device.
  • To provide other space and performance optimizations.
  • To trim other "generally useful" packages (like java.net and java.io) so that they will fit better, and so that profiles can optionally specify them.
  • To produce a lightweight JNI capable of running on the small footprint of KVM technology.
  • To produce a KVM capable of supporting consumer JiniTM connection technology client code.
  • Sun will work with vendors and content providers to develop optimal APIs for a variety of application profiles.
To support application development done on workstations using Java development tools. Then, after the code is compiled and a Java technology-based classfile is generated, the classfile would be passed through a converter designed to support the needs of a particular application profile. The converter would optimize the bytecode to fit within the small footprint of an embedded device, and convert bytecode to run in the virtual machine within that embedded device.

Features of the K Virtual Machine and its APIs

This section describes the K virtual machine (KVM). It also describes the classes and methods included in the Java 2 ME API. Although the latter topic is not strictly a component of the KVM technology, it is essential to understand how the KVM is applied in resource-limited products.

The KVM Specification

The KVM evolved from a research project at Sun Laboratories. It is a derivative of The Java Virtual Machine Specification, written from scratch in C, with special emphasis in these key areas:
  • Optimized for small size
  • Easily portable to different platforms
  • Modular and extensible
  • Source code base written from scratch
  • As "complete" and "fast" as possible without significantly increasing footprint.
Except for the differences indicated in the following section, the KVM is identical to the Java virtual machine as specified in The Java Virtual Machine Specification (Java Series) by Tim Lindholm and Frank Yellin (second edition, Addison-Wesley, 1999).

The KVM Optional Features

The KVM is designed to support standardized, incremental deployment of Java virtual machine features and Java APIs called for by the Java 2 ME architecture. The KVM specification identifies several optional features which can be omitted from some minimum initial device configurations, depending on the features and capabilities of the device. The Java 2 ME architecture includes a small number of configurations that are specified and standardized by Sun. The KVM specification gives the guidelines that Sun uses in defining configurations. It spells out exactly which features can be omitted from an initial configuration.
The following features defined in The Java Virtual Machine Specification are optional in the KVM architecture. In each case, a feature is designated "optional" because:
  1. The applications designed for a particular configuration (or class of device) do not need the feature.
  2. Elimination of the feature significantly reduces memory footprint or enables some other cost savings or necessary functionality in the class of device targeted by that configuration.
While these features are optional at the KVM architectural level, they may be required at the KVM implementation level. Each Java 2 ME configuration specifies whether or not each optional feature is included. Any KVM implementation claiming to support a particular configuration must implement all the features required by that configuration.
Features not explicitly identified in the following list are required and must be implemented in all configurations.
  • Large data types: long, float, and double -- many configurations do not need the extended range and precision of the larger data types.
  • Multi-dimension arrays -- many configurations do not need to support arrays of more that one dimension.
  • Class file verification -- some specified configurations may not need to support on-device verification of class files. Instead technology is planned to be developed to enable class files to be efficiently verified "off-line" and delivered to the device.
  • Handling of Error classes -- when the Java virtual machine encounters a serious internal problem, it throws an instance of a subclass of java.lang.Error. However, because there is often no reasonable form of programmatic recovery from these errors, a configuration may specify the KVM to halt with a configuration-defined error indication. Or the configuration may allow device vendors to define device-specific behavior and recovery actions when it encounters such conditions.
  • Threads and event handling -- some configurations may require a different application execution model from the standard Java technology-based model using the Thread class and standard event handling.
  • Java Native Interface (JNI) -- many configurations might not need the flexibility of the JNI for the way in which native methods are linked and invoked. A configuration may use a defined alternative, simpler mechanism to invoke native methods.
  • Class loaders -- many configurations might not need the full flexibility of Java class loaders. A configuration must specify the mechanisms by which classes are located and loaded into the KVM.
  • Finalization -- many configurations do not need to support object finalization.
  • Maximum size limitations -- many configurations do not need to support the full range of sizes of internal virtual machine data structures. A configuration may specify a "maximum supported" range for some or all of the following values:
    • The number of classes in a package
    • The number of interfaces implemented by a class
    • The number of fields in a class
    • The number of methods in a class
    • The number of elements in an array
    • The number of bytes of code per method
    • The length of a string in a CONSTANT_UTF8 constant pool entry
    • The maximum amount of stack that a method may use
    • The maximum number of locals that a method may use
  • Start-up -- each configuration must specify how the KVM locates the initial class and method to execute and the expected attributes of that class and method.
C Virtual Machine (CVM)

·         Slightly slimmer than J2SE JVM
·         Has the option of including all JVM features
·         AWT/Swing: unnecessary



 J2ME Mobile Information Device Profile (MIDP)
The J2ME Mobile Information Device Profile (MIDP) lets you write downloadable applications and services for network-connectable, battery-operated mobile handheld devices such as cell phones, two-way pagers, and Palm Pilots.
Java Consumer Software Documentation lists the programmer guides, white papers, books, and specifications available from the Java platform documentation, engineering, and marketing teams.
MIDP RI 1.0.3: This version of the MIDP reference implementation is based on the MIDP 1.0 specification and supports the CLDC RI 1.0.3. The MIDP RI is targeted at device manufacturers who want to port this J2ME profile to another platform.


J2ME Related Technologies

Java Card Technology
A smart card is a credit card sized plastic card with an integrated circuit (IC) inside. The IC contains a microprocessor and memory so the smart card can process and store information. The Java Card platform lets smart card developers standardize on a common card platform.
  • Around 50K memoryThree components: JCVM, JCRE, JC API
  • 2 different VM:
    • Converter
    • Interpreter

J2ME Applications

§       ESRI has currently developed direct support for Windows CE in ArcPada more robust offline mobile GIS vs. an LBS.
§       ESRI have extended the mobile client offering through our business partners.  These offerings  include one-off J2ME MIDlets for concierge and navigation services.
§       MIDlets offer OS/device-independent mapping functionality, and they are able to consume GIS web services.
§       MIDlets standard mapping features include zoom, pan, and local cache for offline operations.

The Clash of Mobile Platform (Cell phone Games)

Introduction to the development of cell phone games through some specific characteristics of this market are analyzed and the four primary free game development platforms are described, mentioning each one's advantages and disadvantages. This article is primarily targeted at amateur development teams who wish to evolve to professionals in this market.
At the moment, most programmers enter in the videogames' world "through" the computer. Taking in consideration the high licensing fees in the console market, it's extremely difficult to commercially release games on these systems (at least in a legal way). However, these last two years (and especially in 2002), another "gateway" to professional game development has been opened: the cell phone. The appearance of several free and device-independent development platforms allows amateur development teams to compete head-to-head with this sector's professionals without any notorious disadvantages. To achieve this, one must choose the platform that best fits the intended objectives. To make that choice easier, this article introduces the four main free platforms available in the market: J2ME [1], ExEn [2], Mophun [3] and WGE [4]. Initially, the reader is introduced in the specific characteristics of this market, to help him notice the development differences regarding other systems. This introduction is followed by an analysis of the strong and weak points of each one of the platforms mentioned above. The last paragraph contains a short summary on each platform, as well as an indication of what type of situation each one fits better.

The wireless gaming market

Unlike what happens in other systems, the amount of people who buy a cell phone just to play is extremely reduced. Sometimes the choice is purely based on the price, sometimes people buy whatever the mobile operator sells them and there's also people who choose a certain model just because his friends also have one… there are plenty of reasons to choose a device and the available games are usually only seen as a nice "side effect" of buying a cell phone.
With the appearance of the most recent cell phones, which have advanced graphic and sound capabilities, this market started expanding. Apart from the mentioned capabilities, the existence of free device-independent development platforms played a major role in this expansion. Looking at the success of handheld consoles (especially Nintendo's Gameboy, which became the world's best selling console in 1999), it becomes obvious that there's an excellent market to explore. After all, most people use their cell phone to be reachable anywhere, anytime. This means that, usually, they always take the cell phone with them. You can't say the same thing about a handheld console, since its users only carry it around when they're sure that they'll go through long waiting periods. The cell phone, on the other hand, is always there: at the bus stop, at the dentist's waiting room or in a boring class. Its main function (communicate) is constantly being requested, which means that its remaining functions (where games are included) are also always available.
Another important aspect lies on the fact that the typical cell phone user doesn't care about the technology available in his device. "J2ME", "ExEn" and "Mophun", for example, are words that most users don't know. Now, if the selected term is "Snake", it's pretty certain that at least those who usually play with a cellphone will recognize the word. Even though, at the moment, the choice of a cellphone isn't influenced by its games, it's extremely likely that this situation will change in the next 2 to 3 years. However, you shouldn't expect that common users will start checking if the device they're planning on buying supports a certain platform. What they will look for is if that device supports a good amount of quality games at reasonable prices… without forgetting that a cellphone's main function is communication.
A final thought goes to the game genres with higher probabilities of achieving success in this market. Unlike what's usual in other systems, the cellphone users don't play during long time periods. Games which involve that necessity (like, for example, RPGs and platforms) must have an extremely high quality level to "conquer" the user. Puzzles are the most common genre: if they're easy to play, fun, feature a fast action and do not demand a lot of training time, the success is almost assured. Another genre which is starting to become famous is the action: fighting games, shoot'em and beat'em up are now starting to enter the cellphone gaming market. When developing a game for this system, you shouldn't forget that there's a high probability of it being played only for 5 or 10 minutes at a time. If it doesn't "grab" the player in this time period, its commercial success will be quite limited.

J2ME

The "Java 2 Micro Edition" is usually considered what Java was originally supposed to be: a cross-platform language capable of working in devices with highly reduced capabilities. With that in consideration, it doesn't come as a surprise the similarities between J2SE and J2ME. As a matter of fact, J2ME is often considered a Standard Edition stripped to the essential.
Since it wasn't initially planned for games, its potential is quite reduced when compared with the other platforms created specifically for that purpose. Although MIDP 2.0 already comes with a GameAPI, the current version (MIDP 1.0) only has a few rudiments of what would be required to produce technically advanced games. For example, there's no support for resizing images, perform simple 2D rotations or even include sound. However, due to the fact that it appeared first and managed to acquire a good amount of supporters, J2ME became almost a market standard and it's the platform that carries more games in more devices.
J2ME's development costs are extremely reduced. The SDK is freely available and there are no licensing expenses, which means that anyone can create a game and market it. However, unlike the other platforms created specifically for games, there is no J2ME business model. The developer must negotiate its commercialization with three possible "partners": manufacturers, operators and distributors.
Negotiating a contract with a manufacturer is usually the most difficult option. Most of the times, it's cheaper for the manufacturer to create its own internal development team rather than paying a third party to develop games to be included in all its devices. Besides, considering that it's already possible to download games for the cellphone, the number of titles initially available in the device's memory is a characteristic losing some attention. Most of the times, these games are weaker than those the player can obtain through a simple download.
Negotiating directly with an operator is becoming the most common alternative. Most operators already have a service targeted at game developers and the current indicators show that these services will expand. The profit margins in revenue sharing are usually the highest (around 80%). However, sometimes commercializing a game can be quite difficult. Most of these services require a test period in which the game download is free. If the game is successful in this period, it moves on to a commercialization stage. The problem with this option lies in a simple fact: when the game enters the commercialization stage, the "new game" effect has wore out and the possible buyers already played it when it was freely available. Another problem lies in the limitation of negotiating with just one operator. For example, to release a game in more than one country, negotiations with at least two operators are required. This problem thickens when the developer wants a continental-wide or worldwide distribution. Anyway, sometimes it can be the best option (when, for example, due to localization difficulties, the developer wishes to target a single country and the operator does not demand a free download trial period).
The third option, dealing with a distributor, is usually the most appealing when what the developer wishes is a large scale distribution. It's quite common for distributors to have agreements with several operators. The turnoff of this lies on the lower profit margins. Usually operators take 20% of the profits, while the remaining 80% are divided among the distributor and the developer. Although it's possible to obtain a revenue share between 20% and 70% (which is above the 5% to 10% from other markets), the profit will never be as high as it would be if it was negotiated directly with the operator. Apart from this disadvantage, the developer also has to find a distributor interested in his application, which sometimes can be extremely difficult (although there are cases where it's the distributor that contacts the development team). The main advantage lies in the lack of commercially worries for the developer, since both the operator negotiations and the marketing are a task for the distributor.
Regarding J2ME's future, generally speaking you could say it's excellent. Not only does it have an extensive list of manufacturers supporting it (making it almost a standard), but it also managed to overcome the problems of JVMs that did not follow the specifications (which occurred due to the manufacturers' "rush" in releasing devices supporting this technology). On the gaming market, its future is somewhat dependent of MIDP 2.0. It's certain that it won't fade away and it should keep the leadership during 2003… but if one or more of the remaining contenders stays ahead in a technological level and manages to include its engine in an amount of devices similar to J2ME's, Sun's platform will face some difficulties in keeping the leadership in this specific market.

ExEn

"Execution Engine" (also known as ExEn) was developed by In-Fusio to "fight" the limitations imposed by J2ME in game development. It's also interesting to notice that In-Fusio tried to overcome those limitations working together with Sun by presenting the proposal of a GameAPI for MIDP 2.0.
ExEn was the first mass market downloadable game engine to be made available in Europe. This was an important first step that allowed ExEn to achieve the current position of leader in this continent, making it the most used game engine (which also means that it's the one with a wider range of games).
In early November 2002, there were 18 models which supported ExEn. In an European view, this means around one million available cellphones. Although it's a somewhat reduced number when compared with the five million devices which have J2ME technology, it's an impressive amount for a "small" proprietary technology.
Nevertheless, when compared with the remaining contenders, it's incorrect to say that such leadership is justified by the technological capabilities. Both in graphical and processing speed terms, ExEn is far from the lead. However, by supplying additional important game development functions (sprite zooming, parallax scrolling, raycasting, rotations), it easily overcomes J2ME. Adding to this a virtual machine that, despite not being the fastest, can be around 30 times faster than a generic VM (although usually is only 10 to 15 times) and only leaves a 5% footprint on the device's memory, it's easy to see why this is the most widely chosen game engine.
Another important reason that lead several developers to choose ExEn is In-Fusio's business model. This is divided in 2 levels: standard and premium. In the standard level (free subscription), In-Fusio offers the SDK, an emulator, on-line technical support and the possibility of, later on, upgrading to the premium package. The developers that achieve the premium level have their games marketed by In-Fusio, which promotes them in the operators who have devices supporting this engine.
Execution Engine's growth perspectives are quite good. With a new version (2.1) released in the beginning of 2003, the support of several influential software-houses (Handy Games and Iomo, for example) and an attractive business model for independent producers, the number of available games should increase considerably. In-Fusio has also started to enter the Chinese market, which should become one of the strongest (if not the strongest) in the next 2 to 3 years.

Mophun

Mophun is described by its creators (Synergenix) as a "software-based videogame console". Although its development began in late 1999, its market implantation only achieved a serious level in November of 2002.
Its late appearance, allied to the fact that only three devices carry this engine (Ericsson T300, T310 and T610) made some developers discard the option of developing for this system. The somewhat biased market analysis performed by Mophun's producers also "scared away" some interested developers… for example, in one of those analysis, Mophun is shown dividing the leadership of the European market with J2ME. However, while the J2ME and ExEn information reported back to October of 2002, the values presented for Mophun were predictions for 2003. This fact passed on the feeling that something went wrong with Mophun at an operator and manufacturer support level.
Technically speaking, Mophun has no rivals. Tests performed by independent organizations showed that, in a device where Mophun reaches 60 MIPS, J2ME only went as far as 400 KIPS (this represents a performance 150 times higher). Synergenix also adds that, in certain devices, part of the VM code is directly translated into native code, meaning that it's possible to achieve 90% of the device's maximum capability (for instance, reaching 90 MIPS in a device that reaches 100 MIPS when running native programs). The remaining characteristics are similar to ExEn's.
Like ExEn and J2ME, Mophun is also freely available. In some aspects, Synergenix's business model resembles In-Fusio's: after the game is developed, Synergenix handles certification, distribution and marketing. However, since its current network isn't very extended, it doesn't seem to be as appealing as ExEn's, which made some developers choose the theoretically weaker system.
Mophun's future is "semi-unknown". If Synergenix fails to quickly acquire additional support, it's quite likely for Mophun to be dropped in favour of less powerful but financially more appealing development technologies. However, if the promises that several operators and manufacturers are going to adopt Mophun briefly are followed, this system's advanced technical skills can make it the new leader.

WGE

The "Wireless Graphics Engine" is TTPCom's solution. Although it began being considered the main candidate for domination of the game engines' market, the lack of support by game developers ended up decreasing the initial appeal.
It's impossible denying that, from a purely technical point of view, WGE has everything to win. It may be slower than Mophun, but the several API modules make 2D and 3D programming easier (including tile management and collision detection functionalities), allow a simple access to networking functions and grant sound support, among other capabilities.
As its direct contenders, the SDK download is free and TTPCom has a business model aimed at attracting the game development teams. To the usual revenue sharing from the games sold on a download basis, there's the addition of a "minimum income" resulting from selling the games directly to the device's manufacturers.
Unfortunately, despite the initially generated "fever", the lack of support from the primary manufacturers ended up limiting WGE's success. Most software houses avoided it, which lead small companies and independent developers to follow that example. The result is easy to see: the number of games available for WGE is slightly over 30. This lack of interest shown by the majority ends up bringing an advantage for those who want to start developing for WGE: with such small internal competition, it's easier for a quality game to succeed. The disadvantage lies on the lower number of possible players, which may considerably limit the profits obtained from the game's commercialization.
Although it's wrong to say that WGE's immediate future is dark, its perspectives have been more pleasant. Considering the strong competition that the current market fragmentation will bring in the next two years, if TTPCom isn't able to bring more software houses to its catalogue, it'll hardly get the support of additional manufacturers. On the other side, without the support of additional manufacturers, it's extremely hard to attract more software houses. WGE's future depends on TTPCom's ability to break this cycle. If it makes it within the next 3 or 4 months, the growth perspectives are quite positive. Otherwise, the end is almost unavoidable.

Which should you choose?

At this point, a question arises: which platform shall a programmer choose? Due to the high fragmentation of this market, there isn't one answer that suits all situations. To choose the platform that best fits the situation, it's necessary to set the objectives of what the team wants to produce and analyze the advantages and disadvantages of the several available platforms.
When the objective involves reaching a wide market and it's possible to make some compromises on a performance level, J2ME is the best option. If commercializing the game is also an objective, the team must expect to lose some extra time negotiating the distribution deals.
If the project requires more potentialities than those offered by J2ME and there's the option of choosing a smaller market or if the team wishes to choose a platform that offers a simple business model, ExEn should be selected.
When the most critical aspect lies on the performances (both in speed and graphical terms), Mophun appears as one of the main choices. In this case, it's important to check if taking the risk of choosing a not yet widely spread platform is a possibility.
If the option for a platform with a reduced market isn't a problem, if the objective is the creation of a high-performance game and if Mophun isn't a satisfactory choice for any reason, WGE is the best option. Once again, it's advisable to study well the choice in order to prevent excessive expenses when compared to the expected profits.

J2ME ADVANTAGE: i.JV

Motorola's implementation of the Java™ 2 Platform, Micro Edition (J2ME) is revolutionizing the wireless landscape. This industry leading embedded Java solution delivers all the advantages of J2ME in an easy to adapt, robust implementation specifically designed for the wireless device market. i.JV for J2ME is fully compliant to the Connected Limited Device Configuration/ Mobile Information Device Profile (CLDC/MIDP) specification, and reflects the experience only a leader in the wireless industry can provide. i.JV for Innovative Convergence platforms offers wireless device manufacturers the following advantages:
  • Rapid time-to-market
i.JV is available today for the i.250 platform, and it can be quickly configured and customized to meet the requirements of various market segments. Time to market is key in the wireless landscape. Motorola has Certified and shipped several CLDC/MIDP phones with more on the way. No one can implement a CLDC/MIDP compliant solution for your platforms as quickly as the Motorola team.
  • Optimizations for Innovative Convergence platforms
    i.JV provides optimizations such as the Optimized Byte code Interpreter (OBCI) and other performance enhancements for these platforms. Our Optimized Byte Code Interpreter (OBCI), mini-JIT, ahead of time snippet tool and other performance enhancing features, plus our real-world experience with multiple devices, OS and silicon, mean we can squeeze J2ME into tight spaces without sacrificing performance.
  • Java standards leadership
i.JV leverages Motorola's experience as the specification leader for the MIDP, versions 1.0 and 2.0. i.JV will be upgraded to the latest J2ME standards and technologies as they emerge. Motorola has led three Java Specification Requests (JSRs) involving J2ME:
    • JSR 37: Mobile Information Device Profile (MIDP) 1.0 for the J2ME Platform
    • JSR 82: Java APIs for Bluetooth
    • JSR 118: Mobile Information Device Profile Next Generation (MIDP NG)
In addition, Motorola has been instrumental in developing other J2ME technologies through JSR 30 (CLDC), JSR 124 (J2EE Client Provisioning), JSR 135 (Multimedia) and JSR 139 (CLDC NG).
  • J2ME roadmap and APIs Motorola is aggressively pursuing new features and functionality for i.JV. Some of our most recent features include: improved graphics support, games optimizations, enhanced security features, pull and push provisioning as well as many other new features. Motorola also works with clients to develop custom APIs for their specific needs. And we are constantly working on techniques to improve performance and reduce the size of our implementation.
  • Mobile Media API(JSP-135) The Multimedia API (MMA) optional package on i.JV provides a high-level interface to sound and multimedia capabilities of a device running J2ME, enabling versatile multimedia functionality in J2ME applications. MMA provides access to and control of basic audio and multimedia resources, while supporting scalability and sophisticated features.
  • Wireless Messaging API (JSR-120)
    The Wireless Messaging API (WMA) optional package on i.JV provides standard access to wireless communication resources, to support intelligent, connected Java applications. WMA is designed to run on J2ME configurations and to enhance J2ME profiles with unique functionality.
  • Bluetooth
    As the leading company on JSR 82, "Java APIs for Bluetooth", Motorola will be providing both a reference implementation and technology compatibility kit (TCK). This API will also be available bundled with i.JV for the most complete J2ME and Bluetooth solution available.
  • Proven J2ME technology
    Motorola's J2ME technology has been deployed in a number of handsets that are commercially available today. This proven J2ME technology is a component of the Innovative Convergence platforms. Motorola has been involved with J2ME from the very beginning. We worked very closely with Sun Microsystems to create J2ME technology from the ground up. Our Sun Certified J2ME implementation for the iDEN line of phones was the world's first shipping CLCD/MIDP compliant line of devices. Motorola brings many years of embedded programming and wireless experience to the table. Our unique combination of wireless and embedded systems experience give your projects unmatched support in adapting J2ME to handheld devices.
J2ME provides a powerful foundation for success for service providers, content providers and device vendors and assist users to enjoy improved services
Easy migration from existing fixed-line contents
Easy production and buy-in of contents due to abundant Java developers
Easy linking between wired and wireless services
Easy expansion to Post-PC and information appliances
Favorable in e-commerce due to excellent security functions
Differentiated multimedia services
J2ME-supported various next generation wired/wireless services are broadening the horizon of digital service which is convenient and beneficial.

Java-based wireless Internet services
Games, animations, videos, music files and mobile Karaoke
Multimedia service including training and lecturing
Location-based service and remote control
Electronic commerce

Conclusion

Wireless communication posses different challenges that are not present in browser-based and wire-line client-server applications. There are problems with network reliability, low bandwidth and cost of service that must be addressed. In order to deal with these problems, several models for communication were discussed. Different applications have different needs and therefore it is important to understand what a communication model buys and what needs to be managed. Each of the models discussed focus on moving data between a device and a server while minimizing dependencies on the network and allowing the wireless application to function while disconnected. The server plays an important role in optimizing performance and how wireless applications use network resources. 

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Seminar Sparkz Inc -- Powered by Semianr Sparkz Inc - Designed by Shaik Chand -