|
Software developers who develop applications to run on large powerful systems become used to the luxury of virtually unlimited memory and processing power. They face a new set of obstacles when they must work within the limited resources available in mobile wireless devices, with their small screen size, memory, and processing power. Developers also face environmental challenges posed by the devices; mobility and by wireless networks, which typically offer lower bandwidth and less reliability than wired networks, These limitations require developers to think differently about user interface, processing power, memory management, and exception handling. Consumers too have become accustomed to the power and flexibility of larger systems. Both average consumers and high-end corporate users want devices with applications that are simple, intuitive, and reliable. Developing applications for devices with limited resources requires skillful developers who are willing to learn and understand how the wireless environment operates, and able to make intelligent decisions regarding software architecture and performance issues. The purpose of this article is to enlighten you about concerns you should keep in mind when developing Java 2 Micro Edition (J2ME) applications. This article:
Constraints on Wireless Applications The explosive growth of the market for wireless devices is stimulating widespread efforts to adapt almost any technology ever developed for desktop computers to handheld devices connected to a wireless network. The challenge is not straightforward. First of all, wireless applications must work within the daunting constraints of the devices themselves:
It is too easy to focus on the limitations of the devices themselves and forget that the wireless environment imposes further constraints:
In order to develop efficient and reliable wireless applications, as you plan them you need to keep these constraints in mind, asking yourself the following questions:
Challenges for Wireless Developers As I mentioned earlier, developing applications for mobile wireless devices poses several challenges that developers of wireless applications should be aware of. Here I present some crucial challenges and offer hints for developers. You should prepare yourself to handle these challenges if you want your applications to function correctly in the wireless environment. 1. Transmission Errors Messages sent over wireless links are exposed to interference (and varying delays) that can alter the content received by the user, the target device, or the server. You must ensure that your application is prepared to handle these problems. Transmission errors may occur at any point in a wireless transaction and at any point during the sending or receiving of a message. They can occur after a request has been initiated, in the middle of the transaction, or after a reply has been sent. Wireless network protocols may be able to detect and correct some errors, but you need to come up with error-handling strategies that address all the kinds of transmission errors that are likely to occur. 2. Message latency Message latency -- the time it takes to deliver a message -- is primarily affected by the nature of each system that handles the message, and by the processing time needed and delays that may occur at each node from origin to destination. As a developer, you need to take message latency into account, and keep the user informed of processing delays. It is especially important to remember that a message may be delivered to a user long after the time it is sent. A long delay might be due to coverage problems or transmission errors, or the user's device might be switched off or have a dead battery. Some systems keep trying, at different times, to transmit the message until it is delivered. Other systems store the message, then deliver it when the device is reconnected to the network. Your concern here is to avoid sending stale information, or to make sure your users are aware that it is not up to date. Imagine the possible consequences of sending a stock quote that is three days old, without warning the user! 3. Security Any information transmitted over wireless links is subject to interception. Some of that information could be sensitive, such as credit card numbers and other personal information. The solution needed really depends on the level of sensitivity. To provide a complete end-to-end security solution, you must implement it on both ends, the client and the server, and assure yourself that intermediary systems are secure as well. One solution to consider when handling highly sensitive information is encryption: the sender encrypts the data before transmitting it over the wireless link; the authorized receiver receives the encrypted data and decrypts it using a key provided. E-commerce applications are already successfully using the secure HypterText Transfer Protocol (HTTPS), which is HTTP over the Secure Sockets Layer (SSL) Web security protocol developer by Netscape. SSL works nicely with e-commerce and there are hopes it will be used for m-commerce as well. Sun has been working on a stripped-down version of SSL called kSSL, and has already delivered it as part of the MIDP 1.0.3 reference implementation and the J2ME Wireless Toolkit 1.0.3. You can read more about kSSL in Vipul Gupta's 2001 JavaOne presentation, Bringing Big Security to Small Devices. Quite apart from the kSSL initiative, some Java-enabled devices that support SSL are already available from NTT DoCoMo and Motorola. Cryptography is outside the scope of this article. If you are interested in encrypting data over wireless links, I recommend that you take a look at the Bouncy Castle open source project for Lightweight Cryptography APIs for J2ME. You can find a tutorial on Bouncy Castle APIs in Chapter 12 Protecting Network Data, Jonathan Knudsen's book on wireless Java. Hints and Guidelines This section provides hints and guidelines you will find useful when developing wireless applications:
Performance-Driven Programming When developing applications for mobile devices with a small footprint, it is crucial to make your applications run faster. The less time your application takes to run, the happier your customers are going to be. Here are some guidelines to help you optimize performance:
Development Tools Developers usually build applications that will be deployed and run on a platform similar to the one on which it was built, tested, and evaluated. Developing wireless applications is more challenging because they will be developed on one platform (such as a Solaris or MS Windows machine) but deployed and run on a totally different platform (such as a cell phone or a PalmOS device). The development life cycle of a wireless application comprises three steps:
Vendor-Specific Extensions If you choose to use other development tools, you may find that they support some vendor-specific extensions to the J2ME. Extensions are not inherently bad, because they drive innovation, but you need to understand that you must choose from among three options:
Conclusion Mobile devices are already available, and all the necessary components and infrastructure are in place to begin developing and deploying wireless applications. This article discussed the important issues of the wireless environment you must consider when developing applications for mobile wireless devices with limited resources. It also offered hints and guidelines for dealing with the constraints imposed by the wireless environment. In order to succeed in the wireless market, you need to develop relationships with other developers, device manufacturers, content developers, and wireless carriers. You must be prepared to take risks, but remember that the future is bright for wireless software developers, as the emphasis on Wireless Internet opportunities will continue to grow. More Information
Back To Top | |||||||||||||||||||
Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.
|
| ||||||||||||