Blog

The Mobile Decade

January 4, 2010

The passing decade in the cellular market featured overwhelming growth in the penetration of mobile phones and outstanding breakthrough in their capabilities. Ten years ago, there were about 700 million mobile subscribers, while today there are about 4.6 billion, representing a global penetration rate of 67%. Out of the 1,136,401 mobile phones that were shipped in 2009 (according to Ovum estimations), 181,276 were smartphones, representing 16% of the global market. Most of these smartphones are equipped with a large TFT display (preferably touchscreen), 3.5G and WiFi connectivity, GPS, camera, Bluetooth and more. Smartphones today come with a variety of applications, such as a Web browser, email client, navigator and most importantly, an app store that allows the user to download applications that were developed by 3rd party developers.

The mobile phones of 2000 seem pre-historic in comparison with the modern smartphones of 2009. 10 years ago we had 2G phones, which enabled voice calls and SMS with limited interoperability between different networks. They had a small monochrome display which was capable of displaying few lines of text and simple graphics. They had few built-in applications, such as an alarm clock, calculator and primitive games (Snake!). These applications were provided by the device manufacturer and there was no way in which 3rd party developers could develop apps for these phones. Personal Device Assistant (PDA) represented a different class of mobile devices in those years. The popular PDAs, running operating systems such as Palm OS and Windows CE, offered an SDK for application developers. However, these devices were not connected to a wireless network, so the applications were bound to an off-line mode. During the course of the following years, mobile phones and PDAs have converged into smartphones.

In November 2000, Ericsson R380, the first Symbian phone was released. However, this phone was not open for 3rd party application developers. In the same year, Nokia introduced the 9210 Communicator. It was running Symbian OS 6.0 and was one of the first smartphones with an open operating system.

In 2001, another major breakthrough occurred with the announcement of the first GPRS phones. GPRS, a 2.5G cellular network technology, introduced packet switched data over GSM. It enabled mobile applications to access the internet through the cellular network. The first connected application was the WAP Browser, which initially provided limited access to the Internet, mostly within the walled garden of the operator.

In the same year, the first mobile phones with MIDP 1.0 were announced. These phones had a built-in Java Micro Edition (J2ME) run-time environment that enabled the development and deployment of applications for mass-market mobile phones. This technology changed the rules of mobile applications development, as developers no longer needed tight relationship with device manufacturers. The first deployments of J2ME-enabled phones were by non-GSM operators such as LG Telecom, NTT DoCoMo and Nextel. The first GSM phones with MIDP 1.0 included devices such as Motorola Accompli 008 and Siemens SL45i.

In 2002, Nokia introduced the first S60 phone, the 7650. This phone included new features that were not seen in the GSM market before, such as color display, VGA camera and MMS. It supported native application development with the S60 SDK as well as J2ME applications. In the same year, RIM introduced the Blackberry 5810. This was the first Blackberry device for GSM/GPRS networks. Originally a two-way pager, this device has evolved into a smartphone and quickly gained popularity, especially in the business sector. Another smartphone platform that has emerged at the same time was Microsoft’s Windows Mobile OS with the introduction of Orange SPV that was manufactured by HTC. This phone was running Microsoft Smartphone 2002, which was based on the Windows CE core and featured a removable SD card. Another platform that debuted in 2002 was Qualcomm’s BREW, which enabled the development of applications for BREW-enabled devices, mostly in the CDMA market.

In 2003, J2ME has been adopted by all major device manufacturers, while many mobile phones with MIDP 1.0 were introduced, especially in the GSM market. In the same year, mass market commercial 3G services were introduced, and enabled a wide range of mobile applications.

In 2004, J2ME has been upgraded with the introduction of MIDP 2.0. This was a major step forward, which opened new possibilities for application developers. One of the first phones that supported MIDP 2.0 was Motorola V600. In the same year, the first cellular phones with WiFi support were introduced. One of these phones was HTC Blue Angel that was released under several brand names.

In 2005, Motorola released the RAZR V3, the popular clamshell phone that sold more than 110 million units over the RAZR’s four-year run, and brought Motorola to second place in the mobile phone market behind Nokia. Unfortunately, Motorola failed to repeat this success and lost its market share dramatically during 2008.

In 2006, 67% of all smartphones shipped worldwide were running the Symbian OS, and most of them were Nokia’s S60 phones. In the same year, Nokia announced the N95, which became extremely popular since its release in 2007.

In 2007, Apple released the iPhone, and sold 6.1 million units over five quarters. Although these numbers are relatively small, the iPhone started a trend with its revolutionary multi-touch UI and swept the entire market. The iPhone SDK was officially announced in 2008, and allowed developers to develop native applications for the iPhone and iPod Touch. Apple has redefined the value chain by creating the App Store and allowing developers to easily sell their applications directly to end-users without the mediation of operators. The application gold rush has begun as the number of apps in Apple’s app store grew rapidly, which led to the launch of many other application stores.

In 2008, Google entered the arena with its open-source, Linux-based OS for mobile devices – Android. Unlike Apple, Google released the Android SDK to developers before the first device was shipped. Google also launched the Android Market for distributing Android apps. The first Android phone was T-Mobile G1, which was manufactured by HTC. Many other manufacturers jumped on the bandwagon and announced Android devices, including Samsung, Motorola, LG and Sony Ericsson. Although Nokia reached a market share record of 40% during 2008, its dominance in the smartphone market was in jeopardy. In an attempt to challenge Android, Nokia acquired 100% of Symbian shares and announced the open Symbian Foundation.

In 2009 Palm made a comeback with the Pre, running the new Linux-based OS, webOS (not be mistaken with the old Palm OS). Nokia probably realized that Symbian is not attractive enough, and released the N900, running the Linux-based Maemo OS. Samsung joined the Linux camp by releasing two Linux Mobile (LiMo) phones for Vodafone. Samsung that supported numerous smartphone platforms eventually decided that it needs its own proprietary platform and announced bada, yet another open mobile platform…

As the decade ends, we are witnessing an increasing number of smartphones running on many different platforms. Time will tell which of these platforms will prevail.

3 people like this post.

Java Micro Edition in a Nutshell

July 26, 2009

About a decade ago, in the JavaOne conference of 1999, Sun Microsystems introduced a new Java Virtual Machine for small-memory, limited-resource, connected devices, such as mobile phones. The first K Virtual Machine (KVM) was demonstrated on Palm OS, as a proof of concept. Since then, it has become part of the Java 2 Micro Edition (J2ME) platform, or as it is called now, Java ME. Today, Java ME is the most common application platform for mobile devices, including most GSM and iDEN phones and some CDMA phones, such as those that are provided by Sprint in the US. The importance of Java ME is that it has opened mass-market phones that are running embedded operating systems to third party application developers. However, the main challenge now is how to develop an application that would be portable across different devices, seamlessly.

Although most mobile phones today support Java ME, it doesn’t ensure any compatibility between them. Realizing the different capabilities of different devices, Java ME is not a monolithic platform. A specific Java ME runtime environment is defined by 3 layers: configuration, profile and optional APIs. Most mobile phones support the Connected Limited Device Configuration (CLDC). On top of that you will usually find the Mobile Information Device Profile (MIDP). CLDC and MIDP provide a basic set of APIs that cover the lowest common dominator of all phones. But, when it comes to optional APIs, the number of combinations is practically endless. Each API is defined in a specific Java Specification Request (JSR), which is denoted by a number. Common examples are JSR-75, which includes the PIM API and the File Connection API, JSR-82, which specifies the Bluetooth API, and JSR-120, which specifies the Wireless Messaging API. Many applications require one or more optional APIs and such applications can only run on devices that support the required JSRs.

Even if you have a device that has all the required APIs, it is still not enough in terms of compatibility. There are many different implementations of Java ME. Although they implement the APIs that are defined by the relevant Java specifications, there are still different interpretations of the semantics behind these APIs, and sometimes even bugs in the implementation. In many cases, the specifications define the API as a framework, but leave the definition of the actual resources behind it to the implementation. For example, the PIM API, which is specified by JSR-75, provides access to contacts, calendar and tasks. However, it allows each implementation to support different PIM categories and any subset of fields per PIM item.

The most painful aspect of deploying Java ME applications is the issue of signatures. There are several actions which require permissions, such as accessing the network, reading and writing user data, sending SMS, and others. APIs that provide access to these actions are restricted and the application will be allowed to use them only if the application manager grants the relevant permissions. How does the application manager decide which permissions to grant? This is the tricky part…

An unsigned MIDP application (MIDlet) is considered untrusted. If the application is signed, it can be mapped to 3 protection domains: third party, operator and manufacturer. If the signature is valid and is authenticated against a certain root certificate that resides on the device, then the application will be assigned to the corresponding protection domain. Finally, the security policy specifies which permissions are granted to each domain. This policy is set by the manufacturer or operator and is completely hidden from the developer. The outcome is that in many cases it is impossible to know in advance which signature is required until you actually try it. Furthermore, some devices allow only applications in the operator or manufacturer domain to access certain operations. It means that as a third party developer you may not be able to install your application on these phones.

To summarize, Java Micro Edition has become the most common application platform for mobile devices in the last decade. However, it still suffers from some major deficiencies that create pitfalls for application developers. We hope that these issues will be addressed by future implementations of Java ME.

On J2ME Signing or how J2ME signatures kill mobile innovation

July 20, 2009

I’ve been involved in mobile service development for quite a while now. I can’t escape comparing the huge leap web based applications have made compared with mobile services. Not that mobile applications did not progress over the past years but surprisingly mobile data services did not manage to reach the mass market – the average user who doesn’t want to be bothered with configuration, certification, permissions etc. The average user just wants an application that works on a standard mid-range device.

The key to accessing the mass market of mobile users is providing your application on a J2ME (Java 2 Micro Edition) platform (such as Nokia S40 and SonyEricsson JP-x phones) not Symbian or Windows Mobile which represent anywhere between 5% and 10% of the Worldwide phone market. Okay, you may say, what is the problem here? Just develop an application on J2ME, allow everyone to download it and distribute it like any other application on the Internet.

Here is the major problem of mobile application development – J2ME applications require to be signed in order to be downloaded and activated on the phone. Moreover, you need also the right signature to access various data on the phone.

There are 3 main levels of signing:

  1. Handset Vendor or Mobile Operator signature – allows access to all the applicable APIs and allows setting permissions so they do not interfere with the normal application flow;
  2. Trusted Third Party signature – allows limited access to the phone’s API, requires the user to manually confirm various permissions on the device for the application;
  3. Non-Trusted Third party – very limited access to the APIs and really annoying permission set.

If I want to develop a really seamless application with full access to the phone, I need either a Handset Vendor signature or a Mobile Operator signature. Both signatures are unobtainable for anyone who just wants to develop an application and distribute it over the net.

Moreover, even if I sell my service or application to mobile operators I have a problem since about 50% of the devices on any given network are NOT bought through the mobile operator but from 3rd party stores who do not have the root certificates of the operator on the devices they sell.

As a result, no application developer can ever address the full potential of the market without a signature from the handset vendor. Just one “small” problem here – no one can get this signature other than the handset vendors themselves.

The outcome is that the handset vendors have an unfair advantage over anyone (including the mobile network operators) with mobile service development. Interestingly enough, with the more advanced mobile phone platforms such as Symbian there is a simple way to receive equivalent signature through a process called “Symbian Signed” – so why not with J2ME?

Just imagine if this was not Nokia, SonyEricsson or Motorola but Microsoft. Can you imagine the world wide response if Microsoft were telling you “you can develop an application for Windows, but if we were to develop the application, it would ork just a tad better, smoother and more efficiently”.