J2ME « J2ME Wireless « Java Articles

Home
Java Articles
1.Build Deploy
2.Class
3.Core Library
4.Data Types
5.Database JDBC
6.Design
7.Development
8.File Input Output
9.Graphics Desktop
10.J2EE Enterprise
11.J2ME Wireless
12.JVM
13.Language
14.Library Product
15.Network
16.Security
17.SOA Web Services
18.Test
19.Web Development
20.XML
Java Articles » J2ME Wireless » J2ME 
An aglet is a Java-based autonomous software agent. (For more information, see Bret Sommers's explanation of agents.) As used here, a software agent is a program that can halt itself, ship itself to another computer on the network, and continue execution at the new computer. The key feature of this kind of software agent is that both its code and state are mobile.

The diversified device market naturally results in diversified development tools. Each device vendor has its own SDK, device emulators, and performance analysis tools. Some SDKs even come with their own build project-management and source-code editing tools. One example is Sun's J2ME Wireless ToolKit (J2MEWTK). J2MEWTK contains a reference implementation of J2ME/MIDP (Mobile Information Device Profile) and has multiple device emulators that run on Unix/Linux and Windows platforms. J2MEWTK also has performance profile tools and real memory usage monitors. All those tools can be administrated from a central control panel called kToolBar. kToolBar can also build and package ready-to-deploy JAR/Jad programs from development directories. However, mastering all these tools and testing applications on all emulators can prove tedious.

The big challenges and opportunities he identified, where open-source communities can make a difference and where it's keeping up, are cloud computing, the open programmable Web, and open mobile.

Java-enabled devices are rapidly evolving into full-fledged multimedia platforms. Features once available on separate devices such as cameras, radios, and audio processing are now being combined. Currently the developer must program to many different operating systems and APIs to take advantage of these advanced multimedia features—but that is about to change.

Mobile databases and synchronization solutions are important components in high-availability mobile applications. They enable the new and promising occasionally connected mobile application paradigm. After reading this article, you should be able to design and implement simple mobile database applications using JDBC and PointBase APIs. Since mobile databases run on small devices, you need to carefully balance features against performance and footprint when choosing commercial products.

SAN FRANCISCO (08/14/2008) - Sun Microsystems on Thursday is releasing source code for the Java ME-based (Micro Edition) Lightweight UI Toolkit (LWUIT), a move intended to address fragmentation in the mobile development space.

In the first half of this article, you learned how to use JME and the Mobile Media API to build a Java application capable of taking advantage of the video cameras built in to many popular mobile devices today. Now author Srijeeb Roy shows you how to extend the application to upload video files to a remote server and download them back to the device. The result is a Java application that allows video-enabled devices to communicate with the wider world.

This article introduces some architectural solutions to the problems wireless applications face and presents a general framework for hosting multiple J2ME applications. To illustrate how to use the framework, I describe and implement two applications: Live Chess and Event Alert. Figure 1 shows an emulator running Live Chess. This sample application lets the user watch a live chess game with a mobile phone or other Java-enabled device. By studying the framework and how these applications are implemented, you can appreciate the key factors in designing an architecture for live data delivery—one of wireless technology's most exciting capabilities.

Throughout this article, we explain wireless Web services' network architectures, how Java fits into the wireless Web services picture, evolving technologies, and future trends. Since much literature already discusses server-side Java platforms and Java-based Web services, we focus only on Java's role in wireless application development.

To achieve that functionality, Java is our best bet. It offers the ideal platform for developing complex mobile commerce applications. Java programs can deploy on both the wireless device and the application server, independent of host hardware and operation systems. Client-side and server-side Java applications can integrate seamlessly under consistent API designs.

As I discussed in the first Wireless Java column, "Java Readies Itself for Wireless Web Services," XML processing capability represents one of the key requirements for wireless Web services applications. However, the standard J2ME/MIDP (Java 2 Platform, Micro Edition/Mobile Information Device Profile) specification lacks standard XML APIs, which aren't included in the upcoming MIDP 2.0 specification either. Thus, we need third party J2ME/CLDC (Connected Limited Device Configuration) libraries that can handle XML, especially those Web services-specific XML protocols.

The WAP specification consists of a wireless data protocol. That protocol standardizes the way in which a wireless device's micro browser communicates with a WAP gateway. The WAP specifications define a set of protocols in application, session, transaction, security, and transport layers that enable operators, manufacturers, and application providers to meet the challenges in advanced wireless-service differentiation and fast/flexible service creation. The specification also includes the Wireless Markup Language (WML). For general information on WAP, see Resources.

"The whole point of JavaFirst is really taking all these Web services and making them available to mobile devices," Green said. Developers creating Java-based applications for mobile devices can map the interfaces from services-based application architectures to a set of client stubs that allow the client and server to talk.

The recent release of MIDP (Mobile Information Device Profile) features a major improvement over version 1.0. Version 2.0 includes enhanced mobile code and application security through a well-defined security manager and provisioning process. On the data and communication security front, MIDP 2.0 makes HTTPS support mandatory. HTTPS is currently the most widely used data security protocol in PersonalJava and J2ME/CDC (Java 2 Platform, Micro Edition/Connected Device Configuration) applications.

Java 2 Platform, Micro Edition (J2ME) Mobile Information Device Profile (MIDP) is undoubtedly the dominant mobile phone programming platform today. The number of J2ME-enabled phones and J2ME applications continues to rapidly grow. However, working with J2ME is often complex. This isn't because J2ME is a sophisticated platform, but because J2ME is a constrained platform. Although MIDP is popular for building interactive applications, such as games, on mobile devices, it frequently exposes its weakness and limitations. Creating simple interactive content with MIDP is often complicated and requires repetitive programming tasks. This consequently burdens many developers.

Many mobile phones today support the Mobile Media API (MMAPI) under JSR-135. Using MMAPI, you can easily develop robust and useful Java mobile video applications. In this two-part article, JavaWorld contributor Srijeeb Roy shows you how to develop and test a mobile video application using JSR-135. In Part 1 you will learn how to capture and record video content using JME (Java Micro Edition). In Part 2 you will learn how to store your video content on a server using the Generic Connection Framework (GCF) over the HTTP protocol.

The latest version of MIDP, 2.0, has introduced many new features for helping developers build robust enterprise applications, with one of the more important being the push registry. In Java ME applications, sometimes we need to push data from the server and launch a mobile application automatically in the device, without the device being explicitly started by the user. Imagine a situation where a user must be automatically notified when a work item has been created against his/her name and must respond to the work item as soon as possible. Java ME's push registry easily pushes a message to a Java ME application and automatically launches the application. In this article, I will show you how you can add the push registry feature to your mobile application.

Mobile agents are ubiquitous in today's software applications—from e-commerce to network management to data warehousing. Mobile agent developers implement these solutions in Java for several reasons: First and foremost, Java's built-in object-oriented language features are conducive to agent technology. Second, developers can be extremely productive using Java. Essentially, Java provides tools that simplify and expedite complex software development tasks.

J2EE is a server-side technology originally designed to meet the challenges of Web-based application development. Although it was designed to be flexible and extensible to meet the future requirements of new technology paradigms, no augmentation of the J2EE standard has yet occurred to address the challenges of developing mobile applications. The market pressure to get mobile applications out to the enterprise workforce, combined with the lack of de facto architectural leadership from the technology giants in the space, have made point solutions and custom coding the common practices. J2EE technology, however, will help to extend support to and standardize mobile application development.

How will J2ME impact wireless application development? To answer this question, we need to understand what a wireless application is, and more generally, what an application is. In summary, an end-user application (as opposed to an embedded application) consists of the following components:

Wireless Java is still in its infancy in terms of maturity. Currently, only a handful of J2ME implementations are available as early final releases (1.0 or greater). This is the area in the Java specification that's expected to have continued slow but steady growth for at least the next two years. Later this year and in early 2003, expect to see much more wireless Java integrated and/or used with the J2EE platform and Java Web Services Developer Pack (WSDP). J2ME vendors are currently adopting Web services as part of their J2ME implementations. Also, watch Jini as it continues to evolve for device handling over time. Current versions promise to be much more secure; therefore, look for J2ME vendors and implementors to either adopt this and/or Bluetooth as part of a wireless Java networking paradigm. So, to answer the question: what's wrong with wireless Java? In a word, nothing. These things just take time.

It should work -- after all, it works well on your desktop emulator connecting to your back-end service. Two weeks before launch you get a MIDP device and are hit by some real-world wireless realities:

Today's nascent wireless world reminds one of the Internet's early days: instead of conflicting implementations by Netscape and Microsoft of HTML and associated scripting facilities, we have WML/WAP, and cHTML/i-mode for Web phones and handhelds, and SMS for pagers . Like the early days of the wireline internet, wireless internet developers struggle to test their code on as many phones and devices as possible. The implementations of proprietary technologies are so inconsistent as to force a "write once, test everywhere" strategy. Indeed, an entirely new industry has sprung up, as a result of these conflicting implementations, which promises to test and then certify that content or applications that one develops will actually run on implementations of the intended protocols and devices. (See http://www.anywhereyougo.com/, a firm offering to certify that content and applications written to the WAP specification actually function on devices that claim to implement the WAP specification.)

But even if all standard precautions are in place, how much "security" do wireless access points actually provide? Having heard all sorts of widely varying estimates and assumptions from people who should be able to make an educated guess, I finally decided to see for myself what it would take to circumvent the security of my own standard 802.11b network.

The first part of this article showed how to use the HTTP support in a MIDP device to connect to Amazon's online bookstore and fetch details for a book, given its ISBN. The choice of ISBN as the key was based on the fact that the Amazon Web server provides a query that returns the details for a book given its ISBN, whereas searching by other means (such as author name or book title) sometimes results in an intermediate page being delivered, buried within which is a link to the page that the application needs.

TIP: If you want to do a whole lot more with your wireless network, check out Wireless Hacks (O'Reilly). Among other things, it shows you how to extend the range of your wireless network from a few yards to several miles with home-made antennas. Very cool.

MVC has become a cornerstone pattern of J2EE development over the last several years. This pattern has surfaced as part of the Sun's Wireless BluePrints in the whitepaper ("Designing Wireless Enterprise Applications Using Java Technology" ). This whitepaper indicates that the device handles the view and the server handles the model and the controller resides on both the device and the server to keep the two in sync. While this pattern does have its place with wireless architectures, it may not be a good fit for many wireless applications. In a world of unreliable network connections, limited bandwidth and various billing rates and plans, relying on a constant network connection may not be desirable or realistic.

This paper explores the various facets of building a J2ME application. It assumes a working knowledge of Java. The focus is on a MIDP 1.0/CLDC 1.0 application that depends heavily on network access.

Consumer-based AJAX applications have made in-roads to the enterprise, and the OpenAjax Alliance is looking for a secure way to enable those technologies. "[This will help] extend the reach of AJAX from the consumer space into the enterprise by introducing the ability to secure mashups as well as use any existing widgets or gadgets in an AJAX application," OpenAJAX Alliance Steering Committee Chairman David Boloker said in a press release announcing the news.

Bostrom said next-generation mobile Java tools will include the Eclipse IDE, the Nokia Development Suite, and Nokia prototype emulator. The new application or service template builds infrastructure. "From imagination to reality, we need community to support 232. Our plan is to make tools and the SDK available in the near future. It's very gratifying to see developers as excited as we are."

The number of developers using J2ME to create applications on wireless platforms has reached new heights, according to Evans Data in its '2004 Wireless Development Survey.' The market researcher canvassed more than 450 wireless developers to find out how many were using J2ME, among other topics.

Wireless automated testing tools from Empirix Inc. are currently used mostly for packaged applications that have been extended to add support for wireless devices, said Dan Koloski, director of the testing products group at the Waltham, Mass.-based toolmaker. ?Some new development is being done, but most of the wireless work today is related to packaged applications? like those from Siebel Systems, PeopleSoft or SAP, he said.

Wireless coda: Wireless computing is far from monolithic. A surfeit of big vendors is not a blessing. Legions of vendors have not seen reason to pick a single side, as they did with the World Wide Web. Also, a troubled economy has put the age-old search for "the killer app" pretty much on hold. Services that ask the subscriber for another $30 to $50 per month are sunk for the moment. Yet wherever manual input still occurs, wherever premier service wins or saves deals, wireless will get a hearing. The development effort must usually leapfrog off existing systems and the best candidates may be surprises -- a bar code system, for example.

Conclusion Developers can build scalable and fast enterprise applications using EJBs. Doing so, however, requires careful consideration of the overhead of remote method calls. The number of remote method calls, and the size of the objects that client programs pass in such calls, can significantly affect scalability and performance. Using the Mobile Action pattern enables clients to define arbitrary actions and have enterprise beans perform them on the server side, thereby reducing the number and size of remote method invocations.

Eric Klein, VP of Java Marketing, tells you just about everything you want to know about the Java FX 1.1 release that is targeting mobile devices.

Dave Most, Mobile Application Manager at Nellymoser, talks about the challenges in providing mobile media on a variety of handsets and how to separate form (UI) from the function to deliver a rich, satisfying experience to the user.

Taking Service-Oriented Architectures Mobile, Part 2: Mobile Transactions This series looks at how it is possible to extend the basic principles of service-oriented architecture (SOA) to devices at the edge of the network . This article adds the ability for devices to become involved in atomic transactions. Transactions are vital in ensuring that all of the relevant resources that a system provides are coordinated and managed so that the overall state of the system remains consistent.

Web services and mash-ups of web services really bring a whole new dimension to the web and mobile computing. Terrence Barr, Vincent Hardy, and Akhil Arora have create Mobile AJAX as a subproject of the meapplicationdeveloper project to make it very easy for the Java ME developer to harness the power of Ajax-style web services. Interesting applications can be built by combining (mashing-up) information from these multiple sources and remote web services, limited only by application developers' imaginations. Mobile Ajax highlights what is possible through a number of demos as well that utilize libraries that interact with web services.

The Sun Java Wireless Toolkit for CLDC and CDC is a state-of-the-art toolbox for developing wireless applications that are based on Java ME's Connected Limited Device Configuration (CLDC) and Connected Device Configuration (CDC), and designed to run on cell phones, mainstream personal digital assistants, and other small mobile devices. The toolkit includes the emulation environments, performance optimization and tuning features, documentation, and examples that developers need to bring efficient and successful wireless applications to market quickly.

The second in a series of podcasts from the Brazilian Month of Java, Neto Marin discusses CoSMo the conference scheduler for mobile devices.

This year, at JavaOne, an ME equivalent of Swing was announced, the Lightweight UI Toolkit. No doubt LWUIT will provide the platform for sophisticated and consistent user interfaces. However, if you need a simple lightweight UI that needs to be different from the standard lcdui screens, look and act the same on all Java ME (MIDP 2.0) compatible phones and is easy to integrate into your application, you will find the approach shown here worth going with.

Derek Lyon shares their experience in using JavaME technologies on multiple phones, the custom frameworks the company developed, marketing, and how they identified the demographics of their target audience in delivering a whole host of entertainment products in both audio and video formats. For more information about MSPOT go to their website.

Earlier this year, Sun announced that 250 million cellphones worldwide are using Java technology. Taking into account how the market for mobile consumer devices is expected to grow in the near future, this number will increase significantly. From a developer's point of view, we are talking about an enormous number of potential customers and users. So why not have a look at how to write Java programs for these gadgets? This article introduces key aspects of the Java 2 Platform, Micro Edition (J2ME), offers an introduction to the J2ME Wireless Toolkit, and shows how to develop and deploy a small sample application.

Taking Service-Oriented Architectures Mobile, Part 1: Thinking Mobile This article describes how to implement SOA on mobile devices and shows how to implement a simple messaging application using mobile SOA design principles. It also points to some of the security implications and how to handle them.

Java ME has made it possible to write platform-independent applications for mobile devices and deploy them fairly easily. Now that we have a number of computing platforms strewn all over--office, home, and pocket--we need to think of interconnecting them. As far as desktop devices are concerned, wired internet has provided the necessary linkage for quite some time now. With the advent of GPRS, it has now become fairly easy to access data residing on desktops through mobile devices.

Right-click or Control-click to download this MP3 file. You can also subscribe to the Java Mobility Podcast Feed to get the latest podcast automatically. If you use iTunes you can open iTunes and subscribe with this link: Java Mobility Podcast in iTunes.

In this brief "fill-in" mini-talk, Parth Vohra shows off a mobile approach for data mashups, using OpenESB and the Mural project.

In this interview at 2007 JavaOne conference, Amobee Media Systems' Ziv Eliraz describes the company's unique operator-centric system for ad-funding mobile services and applications. Developers can integrate Amobee's handset API ("HAPI") in their Java applications and generate revenue in a way that is contextually sensitive and user-friendly.

Razmig Sarkissian from Mobile Distillery talks to Terrence about Celsius, a software solution for porting and optimizing Java ME applications across over 800 phones.

There are seven steps to successfully bringing a mobile application to market. In this episode Steve Haney of Tira Wireless discusses this mobile content lifecycle management which includes market planning, design, development, adaptation, testing, channel readiness, and distribution.

Caroline Lewko from WIP shares how WIP helps developers negotiate the mobile ecosystem and talks about the new Mobile Developer Wiki that's currently in Beta. We finish up with two selections from her popular talk Top Ten Dating Tips for Developers.

One of the most convenient and frequently used features of desktop-based text processing applications is copy (or cut) and paste. This is a feature that would be especially useful in Java ME applications because text entry can be quite tedious on a mobile phone. The text-handling classes in ME do not provide direct support for copy and paste, but it is not very difficult to build up such a capability. In this article we look at one approach to implementing this feature.

Recall that RTSP is the actual protocol over which streaming commands are initiated, through which the RTP packets are received. The RTSP protocol is like a command initiator, a bit like HTTP. For a really good explanation of a typical RTSP session, please see these specifications for a simple RTSP client. For the purposes of this article, I am going to oversimplify the protocol implementation. Figure 1 shows the typical RTSP session between a client and a streaming server.

Right-click or Control-click to download this MP3 file. You can also subscribe to the Java Mobility Podcast Feed to get the latest podcast automatically. If you use iTunes you can open iTunes and subscribe with this link: Java Mobility Podcast in iTunes.

phoneME UI Labs is the one stop resource for developers to learn about the advanced UI technologies in Java ME platform. Aastha Bhardwaj talks about scalable vector graphics (SVG) in JSR 226 and JSR 287 and the demos that developers can find in UI Labs.

When developing applications for mobile devices using Java, you may require mathematical methods not available on your particular Java VM. This article will specifically address the absence of the "power" method, Math.pow(), in Java ME. We will illustrate three different algorithms for developing an ME equivalent and proffer the best of the three as a possible programming solution to our problem.

September 2008 Blu-ray Disc Application Development with Java ME Part 1: Creating Your First Application Java technology is a critical part of the new high-definition video standard, the Blu-ray Disc standard. In this two-part series, we're going to cover several aspects of using the Java language to create applications for your Blu-ray disc player, which includes the very popular PlayStation 3 gaming console.

The Java Platform, Mobile Edition (Java ME) platform's MSA specification (JSR 248) defines a standard set of application functionality for mobile devices. It also clarifies interactions between various technologies associated with the MIDP and CLDC specifications. The Java Community Process (JCP) is working on the next version of two important JSRs: Version 2 of the Mobile Service Architecture and version 3 of the Mobile Information Device Profile (MIDP).

The Java TV 1.1 APIs As you may recall from Figure 4, the overall BD-J standard also uses functionality that comes from the Java TV APIs. The Java TV APIs provide essential capabilities or BD-J applications such as the Xlet framework (which I'll go into detail later in this article), as well as the class definition for javax.tv.service.Service. For java-enabled TVs and set-top boxes (which includes cable receivers and DVRs), a service is a channel. So, for instance, if you wanted to write a simple application that programmed your Java-enabled DVR to tune to channel 203 everyday at 4:00pm, then you would use the classes in the javax.tv.service package to accomplish that task. Now, for Blu-ray devices, a javax.tv.service.Service is disc title. Following is a complete list of the packages in the Java TV API:

This article extends the code that was used in the previous article ,so that the application can respond to user input. Of course, since a Blu-ray player is a set-top device, you can't expect users to interact with it with a keyboard and mouse. So we're going to look at the APIs involved in responding to input from a remote control, regardless of whether the user used an infrared remote control or Bluetooth remote control (such as the one used on the PS3 gaming console).

This article summarized the business reasons for learning and supporting Java ME technology. We hope it inspires you to check out the possiblities in the ever-growing and converging mobile and embedded market.

Have a question or opinion about Java ME or the MSA? Discuss this article in the Articles Forum topic, The Future of Mobile Java: An Interview with Nokia's Asko Komsi.

Have a question or opinion about the J2ME Event Tracking API? Discuss this article in the Articles Forum topic, Event Tracking in a Mobile Environment.

The microdevices that J2ME targets have 16- or 32-bit processors and a minimum total memory footprint of approximately 128 KB. They conform to a Connected Limited Device Configuration (CLDC) while maintaining the Java tradition of anytime, anywhere code portability, deployment flexibility, safe network delivery, and code stability. The prerequisite for the J2ME CLDC is a stripped-down JVM, called the K Virtual Machine (KVM). The KVM is designed for small-memory, resource-constrained, network-connected devices.

As we discussed in Part 1 of this series, SMS-based messaging is very convenient for wireless phone users. However, it is not a suitable messaging platform for non-phone mobile devices such as PDAs and WAN-connected handhelds. SMS messaging across different cell networks (such as international calls) can also be expensive or even in some cases impossible. In this second and final installment of our series on mobile P2P messaging, we will introduce you to two general-purpose peer-to-peer networks -- the JXTA P2P and Jabber instant messaging networks -- that you might use in situations that don't lend themselves to SMS. Materials in this article will also appear in my upcoming Prentice Hall book, Java Mobile Enterprise Application Development (see the Resources section below for a link).

The cell phone business is growing at a breakneck pace, and keeping up with the latest technologies is a full-time occupation. In this article, I'll offer an update on what's currently available to the mobile device developer. I'll also include a rundown on the emerging technologies in the field, along with tips for integrating them into mobile applications.

Daniel Steinberg did a walk about the floor at the Mobile, Media and eMbedded Developer Days soliciting comments from the various attendees.

M3G's API can be divided roughly into two parts: immediate and retained mode. In immediate mode, you render individual 3D objects. In retained mode, you define and display an entire world of 3D objects, including information on their appearance. You can imagine immediate mode as the low-level access to 3D functions, and retained mode as a more abstract, but also more comfortable, way of displaying 3D graphics. In this article, I'll explain the immediate mode APIs. The second part of this series shows how to use retained mode.

The Java 2 Platform, Micro Edition (J2ME) provides networking features that extend the resources available on a network into the mobile space. It is now possible to get up-to-the-minute stock quotes or updated currency exchange rates on a mobile phone or palmtop.

The J2ME record management system (RMS) provides a mechanism through which MIDlets can persistently store data and retrieve it later. In a record-oriented approach, J2ME RMS comprises multiple record stores. An overview of J2ME RMS and MIDlet interfacing is given in Figure 1.

In this article, the first of a companion series to the two-part J2ME 101 tutorial series, we'll explore the inner workings of MIDP's persistent storage system. We'll start with a quick overview of RMS, but most of the article (like the tutorial series) will be hands-on. Together, we'll build MIDlets that will help you understand how data records are written to and read from the RMS, as well as the variety of sorting, searching, and retrieval options that are available within this remarkably well-rounded and compact data management system.

In traditional wireless solutions, device-side applications are too weak to achieve globalization completely because of hardware and software limitations. However, on-demand level globalization support is a critical requirement for global e-business clients such as PDAs, which have adequate network capacity but low storage capacity.This article describes a new application development paradigm that takes advantage of the OSGi service platform to achieve globalization features in wireless applications. We describe our approach from an architecture perspective with a focus on how to manage language packs required by wireless applications in an on-demand environment and exemplify it with an implementation on IBM Service Management Framework?.

In this article, I'll start implementing the J2ME classes that author and process those messages. I'll first briefly describe the purpose of the major classes that form our J2ME-based Kerberos client; then, I'll explain and demonstrate how the classes author the basic ASN.1 data types discussed in the first article. In the third section, I'll show how you can generate a cryptographic key used for encryption and decryption in Kerberos messaging. The last section will demonstrate how the J2ME client will author the request for a Kerberos ticket.

First, I obtain the 3D graphics context and create a new World object that represents my 3D scene. The initialization of VertexBuffer and TriangleStrip is the same as for immediate mode, but instead of using the two objects for rendering, I assign them to an instance of Mesh. The world gets two children: The mesh that I just created and a camera that is initialized with a perspective projection. _world.setActiveCamera() tells M3G to use the camera I just added to the world for rendering. The paint() method becomes very simple -- it just renders the world onto the graphics context. Find the complete class listing in VerticesRetainedSample.java.

Because most people consider their wireless devices to be personal accessories, IM applications are perfectly suited for mobile commerce. In this two-part series, I will introduce you to the tools that enable P2P messaging in the mobile world. In this first installment, we'll discuss Java SMS tools and applications. Material in this article will also appear in my upcoming book, Java Mobile Enterprise Application Development (see Resources for a link).

First introduced to the Java community by Sun Microsystems in June 1999, J2ME (Java 2, Micro Edition) was part of a broad initiative to better meet the diverse needs of Java developers. With the Java 2 Platform, Sun redefined the architecture of the Java technology, grouping it into three editions. Standard Edition (J2SE) offered a practical solution for desktop development and low-end business applications. Enterprise Edition (J2EE) was for developers specializing in applications for the enterprise environment. And Micro Edition was just the right size for developers working on consumer and embedded devices. Despite early promise and much enthusiasm in the Java developer community, however, J2ME has only recently begun to emerge from an adolescence spent in the shadow of its larger siblings, J2EE and J2SE.

Many users are reluctant to use applications that send sensitive data over wireless connections because they don't trust wireless security. But the same protocols that make secure e-commerce over traditional wired networks possible can also help make wireless transactions safe. In this three-part article series, I'll demonstrate secure messaging between J2ME clients and server-side Java applications using the Kerberos protocol (see Resources for a link). I will develop a mobile banking MIDlet application that can send and receive payments securely over the Internet. The MIDlet application will use a J2ME-based Kerberos client to perform the actual secure messaging. In this article, I'll begin by explaining the usage model of a mobile banking application. I will then explain the sequence of Kerberos message exchanges that results in the establishment of a secure context for subsequent secure messaging between a J2ME client and a server-side Java application. This discussion will be followed by a description of the data formats used in Kerberos messaging. The last section of this article will briefly introduce the architecture of the Kerberos client, which will eventually author and process Kerberos messages and data formats.

A few years ago mobile computing was sizzling hot. Everyone, it seemed, was working on some kind of killer wireless app -- even though most developers would admit they had no idea what customers actually wanted. At that time, mobile applications was though of as completely new and different from desktop software. Mobile applications, it was said, would revolutionize the way we worked, spent our free time, communicated, and much more.

This month I'll talk about Java Micro Edition (Java ME) Wireless Messaging API. I'll get you started with a couple of simple coding examples, then discuss the opportunities it opens up for enterprising developers.

The notion of wireless messaging provides a whole new vista to J2ME. J2ME applications powered by wireless messaging have a platform-independent access to wireless communication resources like Short Message Service (SMS) and Cell Broadcast Service (CBS) for Global System for Mobile Communication (GSM) Networks, a mobile telephony system permitting inter-country communication.

If you're like many Web developers, you have no idea how to ensure that your Web pages are accessible to wireless devices. Because you probably don't want to maintain Web and wireless versions of the same site or take on the overhead of Extensible Markup Language (XML) transformations, this article shows you a more practical approach to wireless compatibility. With some well-designed XHTML, a bit of CSS, and the media attribute, you can do wonders.

This article is the final piece in the four-part J2ME 101 series, which consists of a two-part tutorial and two follow-up articles. In this last installment, we'll explore network communication on MIDP, using the Generic Connection Framework (GCF).

In this article, we analyze the common issues associated with using JCE, the standard security library for J2SE, in a J2ME environment. We illustrate how to solve these problems step by step, including sample code, and show how to implement the AES (Advanced Encryption Standard) algorithm with JCE in a J2ME environment. For our working environment, we will use IBM® WebSphere® Studio Device Developer (Device Developer), Foundation Profile, and IBM JCE. However, because the tools and libraries we use conform to an open standard, you can apply the approach to all other kinds of development environments that adhere to J2ME and JCE standards.

Developing a J2SE application that meets the requirements mentioned above is relatively easy because the J2SE platform provides support for internationalization and globalization. But for performance consideration and size limitation, the Java Runtime Environment (JRE) does not fully provide the J2ME applications with these functions, especially in CLDC/MIDP. Additionally, you can develop J2SE or J2EE applications that support several locales by binding corresponding resource files. This cannot be done, however, for J2ME applications because of the memory and disk size limitation of handheld devices. The size of the J2ME application should be minimized for performance considerations without having an impact on the application's usability. Therefore, the application should offer a mechanism for loading resource files dynamically that is not included in the JRE.

In this article, you saw how you can use J2ME to fuse Java technology and XML -- in other words, to fuse portable code with portable data. Designing J2ME applications with embedded parsers can be a challenge because of the resource constraints inherent in J2ME devices. However, with the gradual availability of compact parsers suited to the MIDP platform, XML parsing will soon will be a widely used feature of the Java platform on mobile devices.

In this article, I'll first suggest some practical (and potentially very popular) uses for mobile video, and then present two programs to get you started using the QuickTime for Java API to create video content for the iPod. These programs let you easily add captions to existing video files and convert legacy video files into an iPod-compatible format. At the end of the article, I'll leave you with some example code that you can use to learn more about manipulating videos using the QuickTime for Java API.

This tutorial demonstrates how to develop Java 2 Platform, Micro Edition (J2ME) applications using the Eclipse IDE, the open source EclipseME plug-in, and the Sun J2ME Wireless Toolkit. This tutorial is written for J2ME developers who are interested in using the Eclipse IDE to increase productivity. It also addresses Java Eclipse developers who want to produce J2ME mobile applications in their favorite IDE.

This scenario illustrates the important role of multimodal interaction in making it easier and faster to locate a resource, enter information, and securely verify information. It can be difficult to perform these tasks with small hand-held devices such as PDAs and cell phones. With cell phones, entering text is especially difficult because there is no stylus and the keypad is dedicated primarily to entering telephone numbers. This series of articles describes how multimodal interaction can be added as a configurable service to help you automatically perform a task, such as filling in personal information. In this first installment, I cover multimodal auto-fill as a mobile Web service. Examples in this series are written in the XHTML+Voice (X+V) multimodal markup language.

This tutorial is the first in a two-part series designed as a step-by-step guide to building a smart Java 2 Platform, Micro Edition (J2ME) mobile application. In this tutorial you learn how to build a simple mobile application for order placement. The example application uses the J2ME record management system (J2ME RMS) to store order information and a MIDlet to perform the necessary logic of creating and accessing the database application. You learn how to work with the J2ME RMS, craft a MIDlet, and deploy the resulting application to a J2ME environment.

The Sun Certified Mobile Application Developer (SCMAD) certification both educates the developer community on the J2ME technologies used for mobile application development, and establishes a minimum skill level for J2ME mobile developers. To prepare for the SCMAD, you must have knowledge of many topics. This article tells you what's important for you to know.

Corporate information on handheld devices is becoming more necessary than ever. Learn about the opportunities and challenges in developing Web services applications on mobile devices.

The Developer.com Product of the Year 2006 Contest has ended. Last month, readers voted for their favorite products they used to develop with and enjoyed. A Wireless/Mobile section reflects developers' priorities and market trends more distinctive than in the previous year. We see approximately the same main players in there (how surprising)—Java against C/C++ and C#, mobile phones' OS battle, and so forth. But this year, unlike the previous one, you can observe several common trends. The Wireless/Mobile community by far isn't an exception on this tricky way as well...

The Sun J2ME FAQ states the following: "The J2ME technology has two design centersthings that you hold in your hand and things you plug into a wall." This may be a good general definition, but that's exactly what it is, general. Don't let this be your sole guide in deciding which Configuration applies.

After defining your theme, adding your images, and setting your fonts, your app needs to load all this information. I put the resources file on the default package in the src directory, to be packed easily in the jar by Netbeans, but you can modify the proportioned ant script to satisfy your needs. To load your theme, you have to open your resource file, set your theme on UIManager (Singleton class that manages the look of the application), and at least, if you are using WTK as an emulator, refresh the theme on Display. I didn't find any reference in the LWUIT documentation but until I had refreshed my theme, my changes weren't shown. If you plan to change themes at runtime, you also have to refresh it. In the following three lines of code, the created theme is applied to the weather app:

In order to increase transparency and efficiency, a JSR proposing changes in the JCP process has been submitted. Core specifications governing the Java 2 Mobile Platform (J2ME) have also been updated to take advantage of new features and API's provided by Java 1.4. Further, the Executive Committee for the J2ME platform has rejected 2 JSR's citing lack of developer demand, overlap with related JSR's and potential conflict with related standards.

The Location API for J2ME which provides an interface to positioning systems like GPS was approved in it's final ballot making it an endorsed Java standard. Further, proposed final draft specifications for XML Streaming API's, Java OLAP and Portlets were released. New JSR's relating to data synchronization and mobile payments were also proposed.

Who wouldn't love to be able to write cool wireless networking programs and then have them work on pretty much every cell phone or handheld device? Java 2 Micro Edition (J2ME) is touted as the way to achieve this ? write once and run anywhere, easy as pie. But how useful is J2ME, really? Currently the reference implementation for J2ME is the Palm Pilot. You can read an intro article about Java Palm Pilot programming here (Java 2 Micro Edition and the Kilobyte Virtual Machine), or read about how to develop a simple J2ME Palm application here (Creating Palm Pilot Software Using J2ME). But the exciting part of J2ME are the companies that have banded together to create the MIDP ? the Mobile Information Device Profile ? an implementation of user interface and networking optimized for small devices such as cell phones. Companies that have worked on the MIDP include Ericsson, NEC, Nokia, NTT DoCoMo, Palm Computing, Research In Motion (RIM), DoCoMo, LG TeleCom, Samsung, and more. Taking the lead in defining the MIDP is Motorola.

"Our CodeWarrior tools for intent are an important addition to Metrowerks' family of platform development tools for wireless devices," said John Smolucha, vice president of marketing for Metrowerks. "It takes us one step further into fulfilling our vision of providing developers with tools to create the products that change the world."

Since wireless solutions depend greatly on the specifics of the problem they are solving, the process of selecting the right wireless solution is greatly simplified by focusing on the business requirements first. A given business requirement, such as the ability to deliver work orders to a user who spends many hours away from convenient power sources each day, imposes some critical technical constraints that have major implications for the entire solution design. The need for long battery life drives the selection of the client device. This selection may put constraints on the size and type of display and network connectivity options, which, in turn, affect the quantity of work order data transmitted, and its formatting and presentation. The resulting wireless architecture has implications for security, support processes, development tools, and service contracts with network and software providers.

Just a few years go, handheld and mobile devices started to enter the market. In the mid 90s I created a mobile application for tracking information about a number of projects I was working on. The tools I had available for building this mobile application were rough, and the database support was virtually non-existent beyond flat files.

MMAPI is an optional package for the Java Micro Edition (ME) platform. MIDP 2.0 is a profile for the development of MIDlets, or applications for Java-enabled mobile devices, such as mobile phones and PDAs. MMAPI can be used with not just MIDP 2.0, but with any Java ME profile and configuration, provided an implementation is available for the device you are developing for. Refer to Beginning J2ME: From Novice to Professional, Third Edition, by Jonathan Knudsen and Sing Li (Apress, 2005) for a review of configurations, profiles, and development of MIDlets.

Today, NTRU announces NTRU Neo for Java, a developer toolkit - the first public-key security system designed for all wireless devices and applications. According to NTRU, up until now it has been impossible to secure Java-enabled wireless devices and applications in a practical manner, due to size and speed constraints.

All J2ME applications—MIDlets and others—are real Java applications that run under the control of a Java VM. But what controls the Java VM, for instance on a mobile phone? There's no command shell from which you can invoke your favorite Java applications like you do on your workstation. Starting, stopping, and managing the execution of J2ME applications is controlled by application management software (AMS) that resides on the device. In fact, the AMS controls the entire application lifecycle, from installation, upgrade and version management, to removal of application software.

At the heart of Java 2 Micro Edition (J2ME) are three core concepts: configurations, profiles, and optional packages. You can't write a J2ME application without understanding these concepts, because they determine the features of Java that you can use, which application programming interfaces (APIs) are available, and how your applications are packaged.

Writing a technical book on an emerging technology is one of the most challenging tasks any technical writer can face. Think back to the mid-1990s, when the first wave of Java books appeared on the shelves. No one quite knew where the technology was going, so many books were a major disappointment because they lacked advanced technical content. A few years would pass before Java matured and the really meaty books hit the market.

This is the second article in a series targeting mobile developers more accustomed to J2ME than BREW or BREW developers interested in lighter and more efficient code production. The last time[1], we presented a basic framework largely inspired by a Java GUI model easing the task of writing high-level interface code in BREW. For this installment, the framework was extended and refactored to properly handle real-life cases.

Three new Java Community endorsed standards were ratified in the past month. These JSRs are the Java Help 2.0 APIs, the Java Wireless Architecture Specifications and the Information Module Profile for J2ME. Additionally, in preparation of the upcoming Java 1.5 platform (Tiger) release, several pertinent JSRs have been made available to the JCP community for review, which are described below. In a significant development, the community review specification for changes to the JCP was released to the public.

This JSR will define a J2ME profile targeting embedded networked devices that wish to support a Java runtime environment similar to the Mobile Information Device Profile (MIDP) version 1.0, but that do not provide the graphical display capabilities required by MIDP 1.0. The Information Module Profile (IMP) will be a strict subset of MIDP 1.0, where the APIs relating to GUI functionality (the LCDUI) are simply removed. Functionality not already present in MIDP 1.0 is not anticipated or desired.

This chapter provides you with an overview of the architecture of J2ME Polish. It also shows you how J2ME Polish helps you in the different phases of the development of your J2ME applications.

The framework comes encapsulated in cppapp and brewJ2ME. An application is a class—be it Midlet in file MyApp.h. These are the steps to be followed:

This week, new specifications providing Java with business process integration and workflow API's were proposed along with a proposal for the next generation of the Java API's for XML Processing. In addition, the Executive committee for the Java Mobile Edition platform approved the final specification release for the J2ME CLDC (Connected, Limited Device Configuration) that defines a standard platform for small, resource-constrained, connected devices.

Seattle, -- January 14, 2002 -- 4thpass Inc. today launched an alliance for wireless Java developers, giving them access to its Mobile Application System (MAS) technology to submit, test and, showcase new applications.

The JCP Executive Committee for the Java 2 Mobile Edition platform (J2ME) rejected the proposed specifications involving Java 1.4 updates and enhancements to the core specifications governing J2ME. In addition, there were proposed final drafts for the J2ME Information Module Profile and the JAIN MEGACO API's. Finally, public review specifications have become available for the Wireless Messaging API's, Mobile 3D graphics and XML Digital Signature API's

So let's start from the beginning. There's quite a bit of setup work required before you can begin programming. Also, I recommend that you clean out your Palm pilot's memory as much as possible. You may also want to use a program like FlashPro to give yourself a few extra megs to work with.

Now that you know how to write a Java program that will automatically generate and install a new ten-character hexadecimal WEP key on a Linksys WRT54G wireless router, it is time to learn how to generate and install a WPA or WPA2 encryption key on the router for improved security.

Mobile mania has hit the JCP this week with three new specification requests relating to mobile technologies. The first proposes an API for mobile messaging (such as SMS and MMS) from J2SE and J2EE applications as opposed to J2ME applications. The other two proposals deal with adding Web Services Choreography and support for an ebXML specification to J2ME. In addition, Java Servlet, JSP and J2EE proposed final specifications have also been posted.

You've now seen many of the biggest mistakes! I hope reviewing them will help you to avoid them and thus lead to better decisions in your own mobile applications. With mobile technology growing so rapidly, doing mobile development is getting better with every new operating system release. So who knows, maybe soon mobile programming will become as regular as desktop development.

The future direction of RDF, CC/PP, and related standards has immediate implications on design and development of wireless applications. This includes building separate classes responsible for content assembly and transformation, and imlementing feature-based XSLT stylesheets that may be assembled into device-specific and user agent-specific transformations even if automated transformation agents are not available. It is important to select wireless application development products that do not make use of proprietary formats and protocols and that establish a clear path for supporting W3C and WAP Forum standards.

So, mobile computing and mobile telephony are strong growth areas, and substantial investments are being made on both sides of the supply and demand equation. This area is often somewhat fuzzily described as the "convergence of multiple technologies." Despite the vague marketing-speak, however, it's likely that impressive features will continue to be rolled out over time. In a sense, users and device vendors are trying to overcome the traditional limits imposed by geography by squeezing more and more capabilities into increasingly smaller mobile devices.

Java is known primarily as a server-side programming environment, centered around the technologies that make up the Java 2 Enterprise Edition (J2EE), such as Enterprise JavaBeans (EJBs), servlets, and JavaServer pages (JSPs). Early adopters of Java, however, will recall that it was originally promoted as a client-side application environment. In fact, Java was originally designed as a programming language for consumer appliances. Now Java is returning to its roots with Java 2 Micro Edition, or J2ME for short. This article, the first in a series on J2ME programming, explains what J2ME is.

ww___w_.___j___a___v___a__2__s__.___c__o___m_ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.