|By Richard Marejka, July 2008|
Before describing how to learn Java ME technology, it is important to answer why you would benefit from learning about it. With the myriad of technology choices, what makes Java ME a good investment? There are 3 clear reasons:
Let's explore each of these reasons.
The mobile handset market is very large and growing. In 2007, annual unit sales exceeded 1 billion units for the first time -- that's over 2.7 million units per day.
The chart below shows unit sales by manufacturer (in thousands) for the years 1998 through 2007. The data was collected from press releases found on the Gartner Group site.
Some observations using 2001 as the reference year: The overall size of market is 2.89x bigger in 2007 than in 2001. This is an annual compound growth rate of more than 18% since 2001. In 2007, Nokia alone was larger than the entire industry was in 2001 and 2002. The bottom line is that, from a unit-sales perspective, the mobile market is a high growth market.
In The Long Tail, Chris Anderson illustrates where the money can be found in the Internet economy. One of Anderson's observations is a variation on the 80/20 rule. He found that a small percentage of the offerings in a market segment garners a large percentage of the unit sales. While this observation was no surprise, the insight is in Anderson's further research: He proceeded to investigate what happens, in a sufficiently large market, to the other side of the rule - the 20/80 side or the tail. The tail is populated by niche applications and content. For example, Apple has plans to account for 1% of the unit sales in 2008. That 1% represents 10 million iPhones or approximately $4.5 billion in revenue, enough to qualify as a Fortune 500 company with just one product. Anderson's advice is to identify a niche, create services and content for it, make yourself easy to find, and make payment and delivery as efficient as possible.
The mobile software market is smaller than the handset market when it comes to average selling price, but with such large unit numbers even modest revenue per sale can quickly add up. A simple model for revenue is:
revenue = units sold x % Java ME enabled x % sales penetration x revenue per unit
% Java ME enabled" represents the percentage of units sold that are able to run your Java ME application and "
% sales penetration" is the percentage of those Java ME enabled devices that purchase your application. Using the units sold as 1 billion and a revenue per unit of $1 the equation becomes:
revenue = $1,000,000,000 x % Java ME enabled x % sales penetration
What the equation comes down to is: How much of the potential $1 billion market can you capture? The following table illustrates revenue for various levels of combined market penetration.
In this market 1% of 1% represents $100,000 in revenue, sufficient to attract the attention of a small development team interested in servicing a niche market, i.e. somewhere in the long tail. Bottom line - because of the overall size of the Java ME market there is significant revenue potential in the long tail. The challenge is to identify and create applications for a niche market, help the niche market find your application (search = Google et al) and ideally to participate in more than one niche.
The cost of entry to the Java ME developer world is zero. Would you expect anything different? The NetBeans IDE - the award winning development IDE is available with a mobility bundle from netbeans.org. The major device manufacturers all offer development tools and documentation for free, although some do require registration.
To get started you'll need either a Windows or Linux environment (real or virtual) in-order to run the NetBeans IDE with the Mobility bundle and a web server, preferably WebDAV enabled to offer over-the-air (OTA) deployment of your application. If you do not have your own web server there are several Java ME application hosting sites available - GetJar.com, HostJ2ME.com and JuegosEnMovil.com are 3 that were easily found using Google. These sites allow registered developers to upload their applications to servers configured for OTA deployment of MIDlets.
For those developers who seek a more streamlined development environment, Sun offers the Sun Java Wireless Toolkit for CLDC(sometimes referred to as the WTK or Wireless Toolkit). The WTK provides the same JSR collection and emulator as NetBeans so there is no change in the breadth of applications that can be built. The difference is the IDE or rather lack of one. The WTK has been described as a toolbar - it does not include an integrated editor that choice is left to the developer. It does manage projects, provide automated builds, and an execution and debug environment.
If you're one of the 6 million Java developers you already know more than enough to develop for the Java ME platform. In fact, you'll have to un-learn a few things to develop for the Java ME platform.
The Java ME platform was originally derived from Java 2 Standard Edition 1.3.1 with the memory and compute intensive classes and methods removed. Classes that were not relevant for the target market of Java ME platform were also removed. As an example of how a JDK 1.3.1 class was modified for the Java ME platform consider the
java.util.Date class. In JDK 1.3.1
java.util.Date consists of 6 constructors and 28 methods, in the CLDC 1.1 specification the same class has been reduced to 2 constructors and 5 methods.
The largest change from Java SE to the Java ME environment is in the user interface (UI). Where Java SE includes the AWT and Swing packages for UI, the Java ME environment includes
javax.microedtion.lcdui (LCDUI). The LCDUI is a much simplified UI toolkit - simplified as in without layout management and fewer widgets.
The Java ME technology platform consists of 83 JSRs of which approximately half have been ratified by the Java Community Process (JCP). Each device supports a number of JSRs. The problem is that not all JSRs are supported on all platforms. Which leads the developer to ask:
All good questions. Since December 2006 the answer as to the question of what to learn is increasingly JSR 248 Mobile Services Architecture (MSA). The MSA standard is an umbrella standard, it defines a collection of JSRs that together define a sophisticated platform sufficient to develop visually and technically rich applications. The Sun Developer Network (SDN) has an MSA Overview that includes links to pages for each included JSR covering package names, system properties and technical articles. The major manufacturers are offering MSA devices and more are being announced each quarter.
The table below defines all of the packages available on an MSA device with a brief description of purpose and contents of each package.
MSA packages and classes
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.