Sun Mobile Device Technology - Introduction to Mobility Java Technology

To develop applications using wireless Java technology, you'll need to assimilate information from several fields. You'll need to understand something about wireless communications technology, the business of wireless communications, and a lot about the Java platform. Where should you begin? This page contains a high-level overview of wireless Java technology and many links to detailed information about specific subjects.

Overview of Wireless Communications

Wireless communications is a huge field, encompassing everything from radio and television broadcasting through pagers, mobile phones, and satellite communications. The field of mobile phones is expanding very fast at the same time that standards and protocols are being adopted, used, updated, and sometimes discarded. The other rapidly expanding part of the wireless world is that of wireless local area networks (LANs). Driven by widespread acceptance of the IEEE 802.11 standard, wireless local networking for computers and other devices is spreading rapidly.

Although wireless may seem like a special case, it is actually more intuitive and more natural than wired networking. Some day soon the need to plug a laptop into a network physically will seem quaint and antiquated. The notion that you could walk into a room with your cell phone and have it unable to interact with other devices in the room will seem unbelievably primitive. The future will reveal that wired networks are the special case.

Conceptually, wireless communications can be split into two types, local and wide area. A local device is similar to a key fob with a button that unlocks a car, a 900 MHz cordless phone, a radio control toy, or a Bluetooth network. All of these devices operate over short distances, typically just a few meters.

Wide area wireless devices operate effectively over a much greater area. A pager or mobile phone is a good example; you can talk on your mobile phone to any other phone on the planet. These devices' greater range relies on a trick, however: a more elaborate land-based network. A mobile phone doesn't have that much more radio power than a radio control toy. What it does have is a network of carefully placed radio antennas (cell towers); the phone can continue to operate as long as it is within range of at least one tower. The mobile phone device receives service from a wireless carrier, a company that operates the land-based network.

While a number of industry consortia and standard bodies, such as the International Telecommunication Union, are trying to define or foster the development of standards for the wireless world, today's wireless world is still fragmented and complex. If you buy a mobile phone in the U.S. today, it might run on Motorola's iDEN network or Sprint's PCS network. Take it overseas to Europe and you'll be out of luck--your phone will not work with Europe's GSM network, nor will it work with the PDC network or any of the other mobile networks that live in Japan.


Overview of the Java Platform

The Java Platform comprises three elements:

  1. The Java programming language is syntactically similar to C++ but differs fundamentally. While C++ uses unsafe pointers and programmers are responsible for allocating and freeing memory, the Java programming language uses type safe object references, and unused memory is reclaimed automatically. Furthermore, the Java programming language eschews multiple inheritance (a likely source of confusion and ambiguity in C++) in favor of a cleaner construct, interfaces.
  2. A virtual machine forms the foundation of the Java platform. This architecture offers several attractive features: The virtual machine can be implemented to run a top a variety of operating systems and hardware, with binary-compatible Java applications operating consistently across many implementations. In addition, the virtual machine provides tight control of executed binaries, enabling safe execution of untrusted code.
  3. Finally, an extensive set of standard application programming interfaces(APIs) rounds out the Java platform. These support almost everything you might want your applications to do, from user interface through cryptography, from CORBA connectivity through internationalization.

Taken together, the Java language, Java virtual machine 1 , and Java APIs compose the Java platform. Moreover, the Java platform is designed to encompass a wide range of computer hardware, everything from smart cards through enterprise servers. Therefore, the Java platform comes in three flavors:

  • Java Platform, Standard Edition (Java SE) is designed for desktop computers. Most often it runs on top of OS X, Linux, Solaris, or Microsoft Windows.
  • Java Platform, Enterprise Edition (Java EE) is a comprehensive platform for multiuser,enterprise-wide applications. It is based on Java SE and adds APIs for server-side computing.
  • Java Platform, Micro Edition (Java ME) is a set of technologies and specifications developed for small devices like pagers, mobile phones, and set-top boxes. Java ME uses subsets of Java SE components, such as smaller virtual machines and leaner APIs.

To learn much more about Java technology or the Java platform, visit LINK:

  • The New to Java Programming Center offers an excellent entry point into the Java platform, understanding it, getting it installed on your computer, and starting to program.

The Java Community Process (JCP)

Specifications for Java SE, Java EE, and Java ME are developed under the aegis of the Java Community Process (JCP). A specification begins life as a Java Specification Request (JSR). An expert group consisting of representatives from interested companies is formed to create the specification. The JSR then passes through various stages in the JCP before it is finished. Every JSR is assigned a number. Java ME specifications are commonly referred to by their JSR number.


Overview of Java ME

Unlike Java SE, Java ME is not a piece of software, nor is it a single specification. This difference can be confusing, even for developers who are already familiar with Java SE. Instead, Java ME is a platform, a collection of technologies and specifications that are designed for different parts of the small device market. Because Java ME spans such a variety of devices, it wouldn't make sense to try to create a one-size-fits-all solution.

Java ME, therefore, is divided into configurations, profiles,and optional packages. Configurations are specifications that detail a virtual machine and a base set of APIs that can be used with a certain class of device. A configuration, for example, might be designed for devices that have less than 512 KB of memory and an intermittent network connection. The virtual machine is either a full Java Virtual Machine 1 (as described in the specification) or some subset of the full JVM 1 . The set of APIs is customarily a subset of the Java SE APIs.

A profile builds on a configuration but adds more specific APIs to make a complete environment for building applications. While a configuration describes a JVM 1 and a basic set of APIs, it does not by itself specify enough detail to enable you to build complete applications. Profiles usually include APIs for application life cycle, user interface, and persistent storage.

An optional package provides functionality that may not be associated with a specific configuration or profile. One example of an optional package is the Bluetooth API (JSR 82), which provides a standardized API for using Bluetooth networking. This optional package could be implemented alongside virtually any combination of configurations and profiles.


The Java ME Universe Today

The current universe of configurations, profiles and optional packages is shown in the diagram below. The tables immediately following provide more details about the abbreviations in the figure.

 
Java ME Overview
 
 
 
Configurations
CLDC 1.0
Connected, Limited Device Configuration
CLDC 1.1
Connected, Limited Device Configuration 1.1
CDC
Connected Device Configuration
CDC 1.1
Connected Device Configuration 1.1
Profiles
MIDP 1.0
Mobile Information Device Profile
MIDP 2.0
Mobile Information Device Profile 2.0
PDAP
PDA Profile
FP
Foundation Profile
FP 1.1
Foundation Profile 1.1
PBP
Personal Basis Profile
PBP 1.1
Personal Basis Profile 1.1
PP
Personal Profile
PP 1.1
Personal Profile 1.1
IMP
Information Module Profile
IMP-NG
Information Module Profile - Next Generation
Optional Packages
PIM
PDA Optional Packages for the Java ME Platform
BTAPI
Java APIs for Bluetooth
WMA
Wireless Messaging API
WMA 2.0
Wireless Messaging API 2.0
MMAPI
Mobile Media API
 
JAIN SIMPLE Presence
 
JAIN SIMPLE Instant Messaging
 
Java ME Web Services
SATSA
Security and Trust Services API for Java ME
 
Location API for Java ME
SIP
SIP API for Java ME
3D
Mobile 3D Graphics API for Java ME
 
JAIN Presence
 
JAIN Instant Messaging
 
Event Tracking API for Java ME
 
Advanced Graphics and User Interface Optional Package for Java ME Platform
CHAPI
Content Handling API
 
Micro WSCI Framework for Java ME
 
Micro BPSS for Java ME Devices
 
Scalable 2D Vector Graphics API
 
Payment API
 
Data Sync API
 
Mobile Operational Management
 
Advanced Multimedia Supplements
 
Mobile Internationalization API
 
Java Bindings for OpenGL ES
 
Device Management API
 
Mobile Telephony API (MTA)
 

As the diagram shows, Java ME has two main branches.The first is based on the Connected, Limited Device Configuration (CLDC). This configuration is for small wireless devices with intermittent network connections, like pagers, mobile phones, and Personal Digital Assistants (PDAs). The Mobile Information Device Profile (MIDP), which is based on CLDC, was the first finished profile and thus the first finished Java ME application environment. MIDP-compliant devices are widely available.

The other major branch of the Java ME tree is based on the Connected Device Configuration (CDC). This configuration is for larger devices (in terms of memory and processing power) with robust network connections. Set-top boxes and internet appliances are good examples of CDC devices, although high-end PDAs like the Sharp Zaurus also fit this configuration well. The Foundation Profile extends CDC and serves as the basis for several other profiles. It provides fundamental APIs gleaned from Java SE, including classes and interfaces from java.lang, java.io, java.security, java.util, and more. For a list of Java ME terms and definitions, see our glossary.

Optional packages bubble like a froth above the CLDC and CDC branches of Java ME. These provide all sorts of capabilities ranging from Bluetooth communication through web services and instant messaging. Look in the table for links to the specifications themselves.

For a thorough look at Java ME, see:

The world of wireless Java technology also includes Java Card, for smart cards. For more information on Java Card, see:


About Stacks and JSR 185

Devices implement a complete software stack, which usually consists of a configuration, a profile, and optional APIs. First generation Java ME mobile phones usually implemented the following software stack:

 
Example Java ME Stack
 
 
 

Given the plethora of configurations, profiles, and especially optional packages, how does a developer know what to expect on a device? JSR 185, Java Technology for the Wireless Industry, addresses this question by assembling other building blocks into a complete application environment. JSR 185 mandates CLDC 1.0 or 1.1, MIDP 2.0, and WMA. Support for MMAPI is optional. This helps nail things down for developers; on a JTWI device, the developer has a clear understanding of what APIs will be available. The following figure shows a JSR 185 stack:

 
JSR 185 Stack
 
 
 

For more information on JSR 185, see:


The Scope of Wireless Java Technology

Wireless Java technology is the intersection of two vast worlds, wireless data communications and the Java platform. Wireless Java technology spans parts of Java Card, Java ME, Java SE, and Java EE. That said, some common misconceptions about wireless Java technology need clearing up:

  • Wireless Java technology and Java ME are not the same thing. On the one hand, Java ME encompasses more than just wireless devices. While some parts of Java ME are expressly designed for wireless devices, other parts are not--CDC devices are likely to have standard Ethernet connections. On the flip side, wireless Java technology is not confined to Java ME alone. You could have a laptop or palmtop computer running Java SE applications, connecting to other computers via an 802.11 LAN.
  • MIDP is not all of Java ME. MIDP is the first finished profile and has the first installed base of devices out in the world, so people sometimes assume that you are talking about MIDP whenever you talk about Java ME. As you can see from the diagram above, though, Java ME has many facets; MIDP just happened to cross the finish line first.
  • MIDP is not all of wireless Java technology. The Java platform offers plenty of choices for wireless programming: Personal Profile, Java SE on wireless devices, even the PDA Profile.

For other perspectives on wireless Java technology, select:


Why Use the Java Platform for Wireless Development?

The Java platform is an excellent choice for wireless development for many reasons. Here are three compelling advantages:

  • The Java platform is safe. Java code always executes within the confines of the Java Virtual Machine 1 , which provides a safe environment for executing downloaded code. A binary application could freeze a device or crash it (imagine a blue screen on your mobile phone!) By contrast, at worst a Java applications can bring down only the Virtual Machine, not the device itself.
  • The Java language encourages robust programming. The garbage collector saves programmers countless hours of hunting down memory leaks. Likewise, the Java language's exception mechanisms encourage programmers to create robust applications.
  • Portability is a big win for wireless Java technology. A single executable can run on multiple devices. For example, when you write a MIDlet (a MIDP application) it will run on any device that implements the MIDP specification. Given the dizzying profusion of wireless devices, not having to maintain a plethora of implementations is a big advantage. Even if a Java application makes use of vendor specific APIs, applications written using the Java programming language are inherently easier to modify for another device than applications written in C or C++.

    A second benefit of portability is the ease of delivering applications to a device over the wireless network (sometimes called Over-the-air, or OTA, provisioning). Binary applications can be moved from a server onto a device, too, but not safely. Because Java code runs inside the Java Virtual Machine 1 , code that is downloaded from the network can be run safely. Binary code cannot be contained at execution time and is much less safe.
For more information on the motivations for using the Java platform for wireless development, select:

The Market for Wireless Services

The market for wireless applications and services is huge. This market can be divided into two segments:

  • The consumer segment consists of games, location-based services, productivity applications, and other generally useful applications. In the near term, these applications will be controlled and distributed by wireless carriers.
  • The custom business segment will require custom development of wireless clients to connect to existing enterprise applications. Many of these will be wireless applications that use middleware to access company databases.

Where to Go Next

Perhaps the best next step toward getting a good grip on wireless Java technology is to create some:

  • Wireless Development Tutorial Part I
    Learn how to set up a development environment for building Java ME client applications. You'll install the tools, then build and run a simple MIDlet. This article has all the information you need to get started with Java ME development.
  • Wireless Development Tutorial Part II
    In this article, you'll learn how to set up a Java servlet development environment, either Tomcat or the Java EE Reference Implementation server. You'll write a servlet and create a MIDlet that makes a network connection to the servlet.



1 As used in this document, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.

Back to top