Java On Mobile Phones By Danish Kanojia
Java on Mobile
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.
Platform and OS used by a mobile phone are as Follows:
Symbian is an operating system for cell phones. Later versions of Symbian do support J2ME. Actually Symbian is the company name, its a joint venture originally set up by Ericsson, Nokia and Psion to develop an industry standard operating system for mobile multimedia terminals. Symbian is currently owned by Ericsson (15.6%), Nokia (47.9%), Panasonic (10.5%), Samsung (4.5%), Siemens AG (8.4%), and Sony Ericsson (13.1%).
Windows Mobile is Microsoft’s mobile solution. This platform is aimed at relatively high-end devices and developers with Windows expertise. ex-imate
BREW is a C++ based framework that has support from Verizon. Developers for this platform can rely upon the phone carrier for billing and deployment. However, the certification process required for such support is an obstacle for small companies. IBM has built a JVM for BREW.
WAP is an excellent cell phone platform. Some form of it is supported on almost all modern phones; this is a strong selling point. The markup which sits on top of WAP 2.0 is XHTML. Due to that fact, there is very little caching or data validation that can be done on the client.
J2ME is a Java based platform for cell phones. It includes everything needed to solve the traffic congestion service problem set: a GUI, persistent data storage, and network access. It is supported by a majority of cell phone carriers in the US, has no licensing issues, and is well documented.
Overview of the Java 2 Platform
The Java 2 Platform comprises three elements:
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.
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.
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 machine1, 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 2, Standard Edition (J2SE) is designed for desktop computers. Most often it runs on top of OS X, Linux, Solaris, or Microsoft Windows.
Java 2, Enterprise Edition (J2EE) is a comprehensive platform for multiuser, enterprise-wide applications. It is based on J2SE and adds APIs for server-side computing.
Java 2, Micro Edition (J2ME) is a set of technologies and specifications developed for small devices like pagers, mobile phones, and set-top boxes. J2ME uses subsets of J2SE components, such as smaller virtual machines and leaner APIs.
Overview of J2ME
Unlike J2SE, J2ME 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 J2SE. Instead, J2ME is a platform, a collection of technologies and specifications that are designed for different parts of the small device market. Because J2ME spans such a variety of devices, it wouldn’t make sense to try to create a one-size-fits-all solution.
J2ME, therefore, is divided into configurations, profiles,and optional packages.
J2ME 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 other major branch of the J2ME 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.
Why Java on Cellphones?
If your cellphone already supports WML or another markup language (like HDML or Compact HTML), is there any advantage to being able to run Java programs on it as well? What can a Java program do that a set of WML decks can’t?
The first advantage is that Java is a proper programming language, in the procedural/object-oriented sense, and is used on a wide variety of platforms. WML is a declarative language, to which you graft some procedural logic using WMLScript, and is used only on cellphones. Java is more suited for complicated programming tasks.
The second advantage is that Java lets you work offline. With a Java-enabled cellphone it’s possible to download and install an application that you can then run without incurring connection charges, something you can’t really do when you’re browsing websites with the phone’s microbrowser. You can even run applications when you’re out of coverage, something that may be foreign to Europeans but something that we North Americans — with our vast geographical areas and competing, incompatible networks — have to deal with on a regular basis.
Of course, you can work offline to a degree with WML by using cached decks, but only if the decks are designed to be cached. And you really don’t have much control over what gets cached, since it’s all under the control of the browser and the deck creator.
Building a Java application
There are two files needed for a J2ME application. One is the jar file, the typical zipped archive of classes and resources. The other is the jad file, the jad file contains information about the midlet (A MIDlet is a Java program for embedded devices, more specifically the Java ME virtual machine) which is used by the phone on installation.
Popular java applications for mobiles
Opera Mini: the revolutionary browser for nearly any mobile phone.
MemoryUp Personal is a handy mobile RAM monitoring & boosting tool specially designed for smartphone users
The Moblica Picasa photo browser enables you to view multiple public and private Picasa Web Albums and search for photos from your Internet enabled mobile device
Gmail for mobile 2.0 is designed to be more reliable in low signal areas and provides basic offline support for phones like the Nokia N95, Sony Ericsson W910i, and BlackBerry Curve