<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Molecular Voices &#187; Michael Shpigel</title>
	<atom:link href="http://molecularvoices.molecular.com/author/mshpigel/feed/" rel="self" type="application/rss+xml" />
	<link>http://molecularvoices.molecular.com</link>
	<description>where conversation and digital minds meet</description>
	<lastBuildDate>Mon, 07 Jun 2010 14:54:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
<cloud domain='molecularvoices.molecular.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Development for Mobile Devices Part Three</title>
		<link>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/</link>
		<comments>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 17:16:22 +0000</pubDate>
		<dc:creator>Michael Shpigel</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=878</guid>
		<description><![CDATA[Building an application to reside and execute on a mobile device brings a whole other set of considerations and issues versus thin client development. Unlike browser based mobile applications, resident applications are going to be more dependent on their device platform. When talking about development of downloadable applications it is important to distinguish whether the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:06be2ccbb8ea1a46731194fad1983a79c31806aa'><p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Building an application to reside and execute on a mobile device brings a whole other set of considerations and issues versus thin client development. Unlike browser based mobile applications, resident applications are going to be more dependent on their device platform. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When talking about development of downloadable applications it is important to distinguish whether the app is going to be written to a device platform or application platform. I will use term ‘device platform’ to mean mobile device hardware with its operating system or its integrated software. </span><span id="more-878"></span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">I will use term ‘application platform’ to mean combination of programming language, general development API, and the runtime environment for that language on the mobile device. The application platform runs on top of the device platform.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When writing to device portability is not much of a concern, so you want to explore and use the SDK, tools and device emulator provided by the device or OS provider. Most of the major device platform vendors provide such tools for their devices. Since you are working with a specific device, many of the other issues that must be considered when working with a vast array of products such as performance and access to the device&#8217;s features and functionality (phone, camera, GPS, and so on) are probably more straightforward. The table below lists some of these device platforms and what they offer in the way of SDKs, tools, etc.</span></p>
<table class="MsoNormalTable" style="width: 525pt;" border="1" cellspacing="0" cellpadding="0" width="700">
<tbody>
<tr>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>OS</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Language/OS options</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>SDKs/Tools</span></p>
</td>
<td style="padding: 0.75pt; background: #99ccff none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Developer Web Site</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Symbian OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>C++, Java, Ruby, Python, Perl, OPL, Flash Lite, .NET</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Carbide.c++ IDE (Nokia)-C++ and Java SDKs per device</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.symbian.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Blackberry OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, .NET</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Blackberry Java Development Environment, Blackberry   plug-in for Visual Studio,Blackberry plug-in for Eclipse</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>na.blackberry.com/eng/developers/</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Palm OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>C, C++, Java</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Palm OS SDK, Java development with IBM Websphere   EveryPlace Micro Environment, Also offer Palm Windows Mobile SDK for Palm   products on Windows Mobile platform</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>www.palm.com/us/developer</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Motorola</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, Windows Mobile, Linux</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>MotoDev IDE (Java Eclipse based), MOTO Q Plug-Ins (for   VisualStudio), Many SDKs for various platforms</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.motorola.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Nokia</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, C++, Python (S60)</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Carbide IDEs-Number of SDKs for various platforms that   integrate with industry IDEs</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>www.forum.nokia.com</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Sony Ericsson</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>Java, Symbian OS, Windows Mobile</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>SDK for the Java ME, Mobile JUnit, Eclipse Device Explorer   Plugin, additional SDKs and integration plugins for IDEs</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.sonyericsson.com/site/<br />
global/home/p_home.jsp</span></p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 15%;" width="15%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>iPhone OS</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 20%;" width="20%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span> </span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 35%;" width="35%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>iPhone SDK</span></p>
</td>
<td style="padding: 0.75pt; background: white none repeat scroll 0% 0%; width: 30%;" width="30%" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span>developer.apple.com/iphone</span></p>
</td>
</tr>
</tbody>
</table>
<h4>Application Development Platforms</h4>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">When considering application platform for your next mobile development project the choice is quite similar to the non-mobile world. <span> </span>Whether you are proponent of Java and open source platforms or prefer Microsoft tools there is always a question why do you like one platform vs. the other?</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Mobile development re-raises this question, and you may have to re-evaluate your answer in light of your mobile application development. Java, .NET (C#, VB), C, C++, Python, and other languages are all options available in mobile development. In some ways, the same criteria used to compare these on a desktop or server can be used to evaluate the languages use for mobile apps. However, mobile development does bring in other considerations which distort the old desktop/server application development environment discussions.</span></p>
<p>For example, Java&#8217;s strength has always been portability. Java is a widely available platform on all sorts of mobile devices. Sun touts some 2.1 billion devices with Java as indicated earlier. However, the exact same Java is not on all these devices. In order for Java to fit on so many different styles and shapes of platform, the Java architecture has been broken into a set of configurations and profiles. The configurations and profiles differ according to device and device capabilities.</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Take the .NET platform as example number two. .NET shines in that you can use your choice of programming language (C#, VB, etc.) written to a single platform; that of .NET and the Microsoft operating system. Yes, efforts in projects like Mono attempt to make .NET more cross-platform, but the number of actual platforms and devices using these cross-platform .NET implementations is limited. Microsoft tools (for the most part those in Visual Studio) do a great job of making development to this particular platform very easy. In the mobile platform world, however, Microsoft is not the dominate OS. Thus, writing to this platform may not get you to those customers you want to capture.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Let us look at three of the more popular application platform choices and look at ways to compare these platforms.</span></p>
<h5>Java Micro Edition (Java ME)</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME, formerly called Java 2 Micro Edition (J2ME), functions as Java for mobile devices as well as the Java embedded in consumer electronics such as TV set-top boxes and printers. It is a runtime environment that goes on the device and a set of Java APIs and tools to create the applications. Java&#8217;s ubiquity on a number of platforms of all shapes and sizes is notable.</span></p>
<h5 style="margin-top: 0in; line-height: normal;">.NET Compact Framework<br />
<!--[if !supportLineBreakNewLine]--><br />
<!--[endif]--></h5>
<p style="margin: 0in 0in 12pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">This platform is a version of the .NET Framework for Windows Mobile OS platforms. It&#8217;s a subset of the standard .NET framework, but also includes some additional classes that address specific mobile device needs. For example, the library includes classes to work with the device&#8217;s touch screen. Classes specific to the PC platform were removed, such as classes associated with remoting. The CLR execution engine was rebuilt so that it runs more efficiently on mobile devices that may have limited memory, resources and power. Like Java ME, this platform targets both mobile devices and other consumer electronics. For example, the XBox 360 consoles include a version of the .NET Compact Framework. You can write applications for the platform in C# or VB.NET. The Windows Mobile OS holds a significant market share on high-end PDAs and &#8220;smart phones.&#8221;</span></p>
<h5>Binary Runtime Environment for Wireless (BREW)</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">BREW is an application runtime platform created by Qualcomm for mobile phones. It was originally created for Code Division Multiple Access (CDMA) devices, and more specifically, for Qualcomm&#8217;s CDMA devices and chipsets. Qualcomm spearheaded the development of standards for this communication technology&#8217;s use in digital cellular communications. BREW has since been ported to other devices, but largely remains a Qualcomm-specific platform. BREW provides a small runtime environment (approximately 150K in size) that runs on top of the device&#8217;s Application Specific Integrated Circuit (ASIC) or essentially its OS. Applications run atop the BREW runtime. Applications can be written in different languages, although most use C or C++. There are some Java implementations for BREW, but they require that the application run on the JVM—which runs on BREW, which runs on ASIC.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">How do these environments compare to each other? A direct comparison can be difficult, given that many features provided through the application platform are a product of their targeted devices. However, some features worth examination are listed below.</span></p>
<h5 style="margin-top: 0in; line-height: normal;">Portability and Standards</h5>
<p class="MsoNormal" style="margin-bottom: 12pt; line-height: normal;"><span> </span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span>Java&#8217;s ubiquity on a number of platforms of all shapes and sizes is notable. In 2006, Sun claimed that Java was available on 3.8 billion devices and 1.2 billion phones. Sun&#8217;s developer web site lists the </span><a href="http://developers.sun.com/mobility/device" target="_blank"><span style="text-decoration: none; color: #4f81bd;">hundreds of devices</span><span style="text-decoration: none; color: #000000;"> already outfitted with Java ME capability</span></a><span>. Java, at its core, is meant to be platform-independent, but as indicated above, Java ME is a collection of specifications that outline a layered architecture:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span>Configurations provide the basic services, libraries,      and virtual machine capabilities for a broad range of devices based on the      memory, power, and connectivity of the device.</span></li>
<li class="MsoNormal" style="line-height: normal;"><span>Profiles define the user interface, data storage, and      other APIs for a narrower set of devices in a configuration.</span></li>
<li class="MsoNormal" style="line-height: normal;"><span>Optional API Packages add capability to a configuration      and profile to support device capabilities not present on all devices      (such as multimedia and Bluetooth).</span></li>
</ul>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">This architecture allows Java to be added to devices large and small. However, the portability of an application depends on how many devices and, therefore, how many configurations, profiles, and APIs are targeted. The Java ME architecture can also impact how simple or complex application development can be.</span></p>
<p>Microsoft is .NET&#8217;s standard bearer. Proponents of .NET will claim other implementations of the .NET Common Language Infrastructure, such as Portable .NET and Mono, give .NET applications portability to other operating systems and devices, but portability is limited and these are not major players in the mobile arena. Windows Mobile OS is not a ubiquitous platform. It is common on relatively high-end &#8220;smart phones&#8221; and PDAs, but that popularity has not extended to lower end cell phones. Even on smart phones, a <a href="http://www.canalys.com/pr/2008/r2008021.htm" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">fourth quarter 2007 market data report from Canalys</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> indicates that Windows Mobile has only a 12 percent market share. Competitors such as Symbian have a much bigger share worldwide (about 2/3 of the market) and others, such as Apple, are also working to cut into Microsoft&#8217;s market share.</span></p>
<p>Unlike Java ME, BREW offers portability without the numerous APIs and environments. However, BREW is tightly controlled by Qualcomm. Developers must register (or, &#8220;authenticate&#8221; in Qualcomm terms) with Qualcomm and submit their applications for BREW testing before the applications can be put on a device. This is supposed to ensure a BREW application behaves properly and is able to port to any BREW-capable device without issue. However, the cost (at least $400) of the authentication/testing is not trivial and a barrier to the software enthusiasts. Also, there are complaints that BREW is implemented differently and inconsistently on different phones. The emulator is generic and does not demonstrate these differences.</p>
<h5 style="margin-top: 0in; line-height: normal;">Development Tools and Integrated Development Environments (IDEs)</h5>
<p style="margin: 0in 0in 12pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><br />
Java ME SDKs and basic tools are free from Sun. However, given the multiple Java ME environments and APIs, there are multiple SDKs and toolkits. Plenty of open source and commercial IDEs exist for creating Java ME applications. Eclipse and Sun&#8217;s NetBeans are the two most popular open source IDEs. Commercial products like Rational Application Developer from IBM are also available and popular. Device vendors like Motorola also offer their own SDKs. If anything, the Java ME environment suffers from having too many development choices rather than too few. The complexity of Java ME&#8217;s architecture allows for its adaptation to a great number of platforms, but also can make finding or assembling a proper development environment more of a challenge.</span>
</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">In this area, .NET Compact Framework development shines. While it is possible to write applications without it, few developers would write applications for the .NET Compact Framework (or .NET for that matter) without Microsoft&#8217;s Visual Studio. Visual Studio is not free. The latest version is Visual Studio 2008 and it can cost, depending on where purchased, $150 and up. Without question, this tool greatly simplifies mobile development for the .NET Compact Framework and has a low learning curve for those already familiar with .NET and C#/VB development.</span></p>
<p>BREW&#8217;s SDK is free and can be obtained from Qualcomm. However, developers also need an IDE. If writing BREW with C++, this means having a copy of Visual Studio 6.0, Visual Studio 2003 .NET, or Visual Studio 2005. Again, don&#8217;t forget the cost to be authenticated and have your application tested before deployment. This can be a significant hit to total cost of development.</p>
<h5>Emulation/Testing</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Through its SDKs and IDEs, Java ME environments offer a host of generic emulators for a number of devices. The Sun IDEs provide generic emulators that have &#8220;skins&#8221; that give the device emulator the appearance of a type of device with certain buttons, screen size, color depth, fonts, device controls, etc. Additionally, device vendors (Nokia, Motorola, etc.) provide SDKs that often offer more precise emulation for a particular device or set of devices. Some are able to be integrated with IDEs while others are stand alone.</span></p>
<p>The generic emulators don&#8217;t test vendor specific APIs. Additionally, as these emulators are generic in nature, they do not always accurately reflect specific device issues and capabilities. Testing on the actual target devices is always recommended, especially when it comes to Java ME applications.</p>
<p><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">The Device Emulator 2.0 is part of the Windows Mobile 6 SDK. This emulator does a great job of representing Windows OS devices and can be considered one of the strengths of developing mobile applications to the .NET platform. This emulator provides fake GPS, low battery emulation, and even goes to some length to provide an emulator that tests the behavior of your application with cellular communications state changes (incoming call, hang up, busy signal, and so on). This emulator is a true Advanced RISC Machine (ARM) emulator, which means the emulator runs the same code as real devices.</span></p>
<p>BREW&#8217;s emulator comes with the BREW SDK. However, it only runs on Windows. The testing and debugging of BREW applications is not easy and requires a lot of outside assistance. First, the BREW Emulator (called a Simulator) does not truly emulate the handset&#8217;s hardware. Instead, BREW applications are compiled to native code and linked with an x86-compatible BREW runtime library. &#8220;Simulation&#8221; hides issues related to the actual hardware. In order to avoid these issues, developers should test their applications on real BREW handsets. For this, an application must first be compiled and linked into ARM binary form to run on BREW handset. The compiler/linker is available from Qualcomm. The application must then be digitally signed. Again, another tool from Qualcomm is required. Finally, the application can be uploaded to a BREW handset for testing via another tool (and USB or serial cable) called the AppLoader that is available from… Qualcomm. After the application has tested out, it can then be submitted to Qualcomm for its &#8220;TRUE BREW&#8221; testing. By the way, once an application has been tested and ready for deployment, the operator that owns the relationship with the handset customer must be convinced to offer your application. They may choose to do more testing of your application before offering it to the customer.</p>
<p><span class="Heading5Char">Device Feature Access</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME&#8217;s access to a device&#8217;s fundamental capabilities (like camera for instance) typically requires them to be included in the configuration, profile, and/or optional API for that device. This varies greatly according to platform. Only one of the configurations (CDC) allows native interface access (JNI), so accessing the device&#8217;s feature even outside of Java may not be possible.</span></p>
<p>The .NET Compact Framework is written to the Windows Mobile OS, and so it has access to the same device capabilities as the OS. Which means the .NET Compact Framework application has access to just about everything and the device has and there is usually a convenient API to access it.</p>
<p>BREW allows direct access to the features of the device like the screen buffer, which is important for graphics intensive applications like games. At the discretion of the handset provider, BREW extension modules can add access to non-standard device functions.</p>
<h5>Performance</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME runs on a virtual machine and its performance can be an issue especially on limited power/processing mobile devices. Like the Java virtual machine, the .NET Compact Framework requires applications to ride atop a runtime environment so performance of .NET apps is considered average by most accounts.</span></p>
<p>BREW applications, on the other hand, typically have very good performance. This is because the BREW applications run closer to the hardware layer than Java ME or .NET Compact Framework applications.</p>
<h5>Platform and Application Provisioning</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Getting the application platform and applications onto the devices can be problematic especially since the devices can literally be anywhere in the world.</span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Java ME&#8217;s application provisioning strategy depends on the configuration. An Over-the-Air (OTA) Provisioning specification defines how applications can be obtained on devices that run Java ME&#8217;s Connected Limited Device Configuration (CLDC). While the specification is in place, carrier and/or vendor support for the specification and how end-users can obtain their Java ME application is not always seamless (see the blog </span><a href="http://www.nextgenmoco.com/2008/01/so-you-want-to-deploy-j2me-app-in-us.html" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">So, you want to deploy a J2ME app in the US?</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">). There is no OTA specification for Connected Device Configuration (CDC) applications and therefore no consistent technology or strategy for getting these applications to their devices—particularly over the air.</span></p>
<p>As for the Java ME runtime environment, it is often factory installed by the vendor, especially on cell phones. In some cases, however, the runtime must be installed along with the application by developers or consumers, which adds to deployment frustrations.</p>
<p>The .NET Compact Framework is already installed with Windows Mobile OS, so getting the base application platform in this environment shouldn&#8217;t be an issue. ActiveSync allows Windows Mobile OS devices to be updated quickly and easily via connection to a desktop. In addition, over-the-air provisioning is technically possible, but it requires the support of the carrier and/or vendor. In particular, they must provide a device management (DM) server. In its documentation on Windows Mobile OS, <a href="http://msdn2.microsoft.com/en-us/library/bb737226.aspx" target="_blank"><span style="font-size: 11pt; line-height: 115%; text-decoration: none; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #000000;">Microsoft notes</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> that &#8220;Microsoft does not provide an OMA DM or an OMA Client Provisioning server. The OEM, Operator, or a third party must create their own server&#8221;.</span></p>
<p>The effort to get an application to the point of delivery can be extensive with BREW. However, once ready, BREW&#8217;s application deployment and provisioning plans are well thought out and where BREW excels, especially for application developers targeting devices in the hands of the general public. The operator manages the available BREW applications for download through the BREW Distribution System (BDS). This system allows handset users to select and download applications over the air and bill them accordingly. The operator and Qualcomm conveniently handle all the distribution and billing details. Of course, this comes at a cost. <a href="http://www.developer.com/ws/brew/article.php/1454711" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">This document</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> indicates that developers receive 80 percent of the application&#8217;s wholesale price while Qualcomm and the operator take 20 percent. This over-the-air provisioning also allows the applications to be quickly updated or fixed. In fact, the handset manufacturers provide new features and fix bugs over-the-air also using BREW extensions.</span></p>
<h5>Other Resident App Options</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Again, this is not a complete list of resident application development technologies. The Open Handheld Alliance, whose members include Google, HTC, Intel, Motorola, Qualcomm, Samsung, LG, T-Mobile, and Nvidia, released Android in November of 2007. Android applications are written in Java with an Android Java SDK, but this Java is not Java ME or Java SE. Android applications are targeted to run on a custom virtual machine (Dalvik) and Linux OS. While there is considerable interest in Android, there are no major devices that run this application platform today. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Apple released its SDK for the iPhone. This is certainly an application platform that is impacting mobile development and attracts the business community to think about the iPhone as a possible platform. iPhone SDK comes with xCode IDE, iPhone simulator, Interface Builder and Performance Analysis tools. Sun is also developing a JVM for the iPhone OS. </span></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Still there are other mobile development platforms that may not fit under a heading of &#8220;major&#8221; but might be worthy of exploration given your particular platform and application needs. Nokia has released a Python interpreter for some of its mobile phones. Lazarus provides a Pascal (Object Pascal) environment for select devices. Straight C/C++ applications can be written for Windows Mobile and other platforms. And regular Java (Java SE) is available on some mobile device platforms and James Gosling </span><a href="http://sun.systemnews.com/articles/116/4/opt-dev/18847" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">has hinted</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> that this is ultimately where Java is heading in the mobile space.</span></p>
<h5>Other Application Considerations</h5>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">In addition to the considerations listed above in thin and resident application development, there are some additional issues to consider when assembling a mobile application. These issues apply to both browser-based and resident applications, but are unique to mobile development.</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span class="Heading5Char">Data Entry Complications</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;"><span>A while ago, a story on CBS Sunday Morning featured a Japanese woman that wrote and distributed novels via her cell phone! She wrote an entire novel in six months on her cell phone! Some have been clocked at text entry of about 100 words a minute. Amazing feats considering that while many are becoming more familiar with the user interface of mobile devices, it is often a clumsy interface compared to that of the desktop; especially to those of us that are older than the cell phone.<br />
</span><br />
<span>In 2006, the World Wide Web Consortium came out with the proposed </span><a href="http://www.w3.org/TR/mobile-bp/" target="_blank"><span style="color: #4f81bd;">Mobile Web Best Practices 1.0</span><span style="color: #000000;">, </span><span style="color: #4f81bd;">Basic Guidelines recommendation</span></a><span>. In it, they state &#8220;User input is typically more or a lot more restrictive on Mobile devices, which may lack pointing devices and usually do not have a standard keyboard with which to enter text.&#8221; So what do they recommend? Some of the recommendations include keeping the number of keystrokes required to a minimum, avoid free text entry where possible, and provide pre-selected default values where possible.<br />
</span><br />
This same group indicated that URL&#8217;s maybe one of the worst offenses to the mobile Web user interface. The length of the URLs to many web sites makes getting to sites painful using mobile devices.</p>
<p>Many devices also lack a pointing device (mouse, pen, etc.) for interaction. Even when a device has a touch screen, the precision of one&#8217;s finger to act as a pointing device on a small screen makes many common desktop UI &#8220;widgets&#8221; like spin boxes difficult to use. Also, mouse movements are not tracked on most mobile devices. Technically, it is a challenge to differentiate mouse movements and mouse events when there is a touch screen. Therefore, mouse events that trigger tooltips and other such actions are not available. Gestures on mobile devices may even differ from those on the desktop. For example, dragging on an iPhone is for scrolling.</p>
<p>These limitations are not killers, but they do require consideration when building an application for the mobile device and typically cause current Web sites to be revisited before they can be considered &#8220;mobile ready.&#8221;</p>
<p><span class="Heading5Char">Interruptions and Interactions</span>
</p>
<p class="MsoNormal" style="margin-bottom: 12pt;">The mobile device is many things today. In some cases, it&#8217;s a camera, text messenger, music player, personal information management system, GPS navigational system, and, oh yes, a phone. Does your mobile application interact well with all these capabilities? Does it need to interact with any of these features? What happens when a user is browsing your site or using your resident mobile application and a cell phone call comes in? As indicated earlier, it is interesting to note that the new Windows Mobile 6 developer platform goes to some length to provide an emulator that tests the behavior of your application as the state of cellular communications changes.</p>
<p>Do you need a picture from the user&#8217;s cell phone camera or a position from its GPS? Does the mobile device give your application runtime access to these features? Do these devices and their associated applications interrupt your applications use or vice versa? All points to consider (and test!) when looking at mobile application development. Also, when considering resident- vs. browser-based client application, note that access to these types of features may be tougher or impossible via the browser approach.</p>
<p><span class="Heading5Char">Display Differences</span></p>
<p class="MsoNormal" style="margin-bottom: 12pt;">Of course, the mobile device display is generally smaller than that of a desktop, but display limitations aren&#8217;t restricted to just the number of pixels available. Fewer colors and slower display speeds can also hamper the experiences of mobile users.</p>
<p>The Nokia N series devices have been manufactured to provide great multimedia capabilities. The N82 has a 2.4&#8243; display, LCD screen that offers a 240 x 320 pixel display and 16M of colors. It&#8217;s impressive, especially given most competitive mobile products today. But remember, most of our desktops and laptops have at least 800 x 600 pixels (minimum and what most of the web is built to) and 32bits (&gt; four billion colors). Doing the math for you, that&#8217;s about 1/6th the display and ½ the color of our &#8220;normal&#8221; displays.</p>
<p>The display of mobile devices is certainly better than it was five years ago. According to a <a href="http://www.reportbuyer.com/telecoms/mobile/mobile_device_market_trends_2008.html" target="_blank"><span style="color: #4f81bd;">Report Trend report on mobile trends for 2008</span></a>, we may have Apple to thank for continued improvements in the display in the not too distant future:<em></em></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;"><em>&#8220;The idea that User Interface = Culture Code is spreading in the market, and Apple iPhone can be taken as a prime example. Against this backdrop, handset vendors are expected to pursue mergers with UI companies while introducing a variety of new UI technologies, with a view to delivering differentiated OEM UI to the users.&#8221; </em></p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">The display restrictions and limited interfaces provided by mobile devices do not mean these devices can never serve as a powerful instrument to get information and product to customers. Proof positive is again from that fast-thumbed community in Japan. The New York Times </span><a href="http://www.nytimes.com/2008/01/20/world/asia/20japan.html?_r=2&amp;oref=slogin&amp;ref=technology&amp;pagewanted=all&amp;oref=slogin" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;">reported in January of this year</span></a><span style="text-decoration: underline;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: #4f81bd;"> </span></span><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">that five of the top ten novels in Japan last year were originally sold on cell phones! If thousands are willing to read a 200+ page novel over the mobile web using a cell phone, I have to believe there are still a lot of applications yet to be written and utilized on the mobile devices and technology at our disposal today.<br />
</span><br />
<strong>Time to Get in the Game</strong>
</p>
<p style="margin-bottom: 12pt; line-height: 115%;"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">With the arrival of so many mobile devices (and by default mobile users), there is no time like the present to bring mobile applications to life. Mobile development technology has arrived and is ready for prime time. As with all application development, the tough part of developing mobile apps is going to be trying to make the best architectural choices and design decisions given the needs and available technology.</span></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-three/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Development for Mobile Devices Part Deux</title>
		<link>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/</link>
		<comments>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 19:49:30 +0000</pubDate>
		<dc:creator>Michael Shpigel</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://molecularvoices.molecular.com/?p=737</guid>
		<description><![CDATA[IDC has reported that it believes 1.3 billion (that&#8217;s about 1/5 of the world&#8217;s population) will be connected to the internet via mobile phone by the end of this year. With that much thin-client capability and connectivity, it&#8217;s hard to ignore the mobile browser as a very viable means of putting mobile applications in the [...]]]></description>
			<content:encoded><![CDATA[<div class='microid-mailto+http:sha1:e4fdfe846d0ebafa46ee793b4a2c52d9a8fbaccb'><p class="MsoNormal">IDC has reported that it believes 1.3 billion (that&#8217;s about 1/5 of the world&#8217;s population) will be connected to the internet via mobile phone by the end of this year. With that much thin-client capability and connectivity, it&#8217;s hard to ignore the mobile browser as a very viable means of putting mobile applications in the hands of the consumer.</p>
<p class="MsoNormal">Developing for mobile browser however is a tricky business since the choice of browsers running on mobile devices is much greater than in the desktop world. The good news is that thin client development allows many organizations to reuse most, if not all, of the backend of their applications. Getting the apps to the device is also a lot easier. It&#8217;s the user interface portion of the application that needs to be addressed to support the mobile browser thin client.</p>
<p><!-- more --></p>
<p class="MsoNormal">Most of the mobile devices come with the built in browser however more and more devices allow you to download third party browser.</p>
<p class="MsoNormal">Here is the list of built-in default browsers:</p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><a title="Android (mobile phone platform)" href="http://en.wikipedia.org/wiki/Android_%28mobile_phone_platform%29">Android (mobile phone platform)</a> by <a title="Google" href="http://en.wikipedia.org/wiki/Google">Google</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>)</li>
<li class="MsoNormal" style="line-height: normal;">BlackBerry      Browser by <a title="Research in Motion" href="http://en.wikipedia.org/wiki/Research_in_Motion">Research in Motion</a> (proprietary)</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Blazer (web browser)" href="http://en.wikipedia.org/wiki/Blazer_%28web_browser%29">Blazer</a> by <a title="Palm, Inc." href="http://en.wikipedia.org/wiki/Palm,_Inc.">Palm</a>,      installed on all newer Palm <a title="Palm Trēo" href="http://en.wikipedia.org/wiki/Palm_Tr%C4%93o">Treos</a> and PDAs (based on <a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Danger browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Danger_browser&amp;action=edit&amp;redlink=1">Danger browser</a> by <a title="Danger (company)" href="http://en.wikipedia.org/wiki/Danger_%28company%29">Danger</a> (proprietary), installed on all      Danger-designed devices including the <a title="T-Mobile Sidekick" href="http://en.wikipedia.org/wiki/T-Mobile_Sidekick">T-Mobile Sidekick</a>.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Embider (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Embider&amp;action=edit&amp;redlink=1">Embider</a> by <a title="Infraware (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Infraware&amp;action=edit&amp;redlink=1">Infraware</a>[4] (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Internet Explorer Mobile" href="http://en.wikipedia.org/wiki/Internet_Explorer_Mobile">Internet Explorer Mobile</a> by Microsoft</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JB5 Mobile Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=JB5_Mobile_Browser&amp;action=edit&amp;redlink=1">jB5 Mobile Browser</a> by      Jataayu Software, available on Symbian Series 60, Windows Mobile and Linux      Platforms</li>
<li class="MsoNormal" style="line-height: normal;">MOTOMAGX      by <a title="Motorola" href="http://en.wikipedia.org/wiki/Motorola">Motorola</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a> by <a title="Access Co. Ltd." href="http://en.wikipedia.org/wiki/Access_Co._Ltd.">ACCESS Co., Ltd.</a> (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Nokia Series 40" href="http://en.wikipedia.org/wiki/Nokia_Series_40">Nokia      Series 40</a> Browser by <a title="Nokia" href="http://en.wikipedia.org/wiki/Nokia">Nokia</a> (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Novarra (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Novarra&amp;action=edit&amp;redlink=1">Novarra</a> nWeb (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Obigo Browser" href="http://en.wikipedia.org/wiki/Obigo_Browser">Obigo      Browser</a> by Obigo AB (Sweden), 100% owned by Teleca AB (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;">Openwave      Mobile Browser by <a title="Purple Labs" href="http://en.wikipedia.org/wiki/Purple_Labs">Purple Labs</a> (newly aquired from <a title="Openwave" href="http://en.wikipedia.org/wiki/Openwave">Openwave</a>)      (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mobile" href="http://en.wikipedia.org/wiki/Opera_Mobile">Opera      Mobile</a> by Opera Software ASA (Norway). &#8211; Capable of reading HTML and      reformat for small screens (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Picsel Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Picsel_Browser&amp;action=edit&amp;redlink=1">Picsel Browser</a> by <a title="Picsel" href="http://en.wikipedia.org/wiki/Picsel">Picsel Techologies</a> (Scotland) (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="PlayStation Portable" href="http://en.wikipedia.org/wiki/PlayStation_Portable#Web_browser">PlayStation Portable web browser</a> by <a title="Sony" href="http://en.wikipedia.org/wiki/Sony">Sony</a> (based on <a title="NetFront" href="http://en.wikipedia.org/wiki/NetFront">NetFront</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a> by <a title="Apple Inc" href="http://en.wikipedia.org/wiki/Apple_Inc">Apple Inc</a> on <a title="IPhone" href="http://en.wikipedia.org/wiki/IPhone">iPhone</a> and <a title="IPod Touch" href="http://en.wikipedia.org/wiki/IPod_Touch">iPod      Touch</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Iris Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Iris_Browser&amp;action=edit&amp;redlink=1">Iris Browser</a> by <a title="Torch Mobile (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Torch_Mobile&amp;action=edit&amp;redlink=1">Torch Mobile</a> for Pocket PCs      (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Wapaka Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Wapaka_Browser&amp;action=edit&amp;redlink=1">Wapaka Browser</a> <a title="Java platform" href="http://en.wikipedia.org/wiki/Java_platform">Java</a> micro-browser by <a title="Digital Airways (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Digital_Airways&amp;action=edit&amp;redlink=1">Digital Airways</a>.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Web Browser for S60" href="http://en.wikipedia.org/wiki/Web_Browser_for_S60">Web Browser for S60</a> by <a title="Nokia" href="http://en.wikipedia.org/wiki/Nokia">Nokia</a> (based on <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a>).<span id="more-737"></span></li>
</ul>
<p class="MsoNormal">And here is the list of browsers that can be downloaded and install on your mobile device:</p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><a title="Bluelark (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Bluelark&amp;action=edit&amp;redlink=1">Bluelark</a> Bluelark bought by      Handspring Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Deepfish" href="http://en.wikipedia.org/wiki/Deepfish">Deepfish</a> Beta from Microsoft</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Doris" href="http://en.wikipedia.org/wiki/Doris">Doris</a> by      Anygraaf Oy (Vantaa, Finland)</li>
<li class="MsoNormal" style="line-height: normal;">iPanel for      <a title="Palm OS" href="http://en.wikipedia.org/wiki/Palm_OS">Palm OS</a>,</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JB5 Mobile Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=JB5_Mobile_Browser&amp;action=edit&amp;redlink=1">jB5 Mobile Browser</a> Beta from Jataayu Software.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="JOCA" href="http://en.wikipedia.org/wiki/JOCA">JOCA</a> by      InteracT!V, another proxy-rendering free software.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Minimo" href="http://en.wikipedia.org/wiki/Minimo">Minimo</a> by      Mozilla Foundation (based on <a title="Gecko (layout engine)" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29">Gecko</a>).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mini" href="http://en.wikipedia.org/wiki/Opera_Mini">Opera      Mini</a> by Opera Software &#8211; supports most features of stand-alone Opera,      but can run on less capable phones by offloading memory-intensive      rendering to proxy server (based on Opera Mobile running on a server).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Opera Mobile" href="http://en.wikipedia.org/wiki/Opera_Mobile">Opera      Mobile</a> by Opera Software &#8211; supports all modern web standards supported      by desktop browsers, including XHTML, CSS2 and Ajax. Has advanced Small      Screen Rendering that adapts regular pages to small screen (proprietary).</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Pixo" href="http://en.wikipedia.org/wiki/Pixo">Pixo</a> by Sun      Microsystems (Pixo acquired by Sun July 2003)</li>
<li class="MsoNormal" style="line-height: normal;"><a title="PocketWeb (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=PocketWeb&amp;action=edit&amp;redlink=1">PocketWeb</a> by tlogic.de</li>
<li class="MsoNormal" style="line-height: normal;"><a title="RocketBrowser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=RocketBrowser&amp;action=edit&amp;redlink=1">RocketBrowser</a> Rocket      Mobile, Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="SAS (browser) (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=SAS_%28browser%29&amp;action=edit&amp;redlink=1">SAS</a></li>
<li class="MsoNormal" style="line-height: normal;"><a title="Stanford University" href="http://en.wikipedia.org/wiki/Stanford_University">Stanford</a> <a title="Power Browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Power_Browser&amp;action=edit&amp;redlink=1">Power Browser</a> created in      Stanford&#8217;s InfoLab</li>
<li class="MsoNormal" style="line-height: normal;"><a title="TeaShark (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=TeaShark&amp;action=edit&amp;redlink=1">TeaShark</a> &#8211; a free Java-based      browser with a desktop-like layout</li>
<li class="MsoNormal" style="line-height: normal;"><a title="ThunderHawk (web browser)" href="http://en.wikipedia.org/wiki/ThunderHawk_%28web_browser%29">ThunderHawk</a> by Bitstream Inc.</li>
<li class="MsoNormal" style="line-height: normal;"><a title="UCWEB" href="http://en.wikipedia.org/wiki/UCWEB">UCWEB</a> by UCWEB      Technology</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Universe browser (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Universe_browser&amp;action=edit&amp;redlink=1">Universe</a> by OpenMobl      Systems</li>
<li class="MsoNormal" style="line-height: normal;"><a title="Webby Mobile" href="http://en.wikipedia.org/wiki/Webby_Mobile">Webby      Mobile</a> by AnOriginalIdea</li>
<li class="MsoNormal" style="line-height: normal;"><a title="WebViewer (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=WebViewer&amp;action=edit&amp;redlink=1">WebViewer</a> &#8211; a free Java based      browser by Reqwireless</li>
<li class="MsoNormal" style="line-height: normal;"><a title="WinWAP" href="http://en.wikipedia.org/wiki/WinWAP">WinWAP</a> by <a title="Winwap Technologies (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Winwap_Technologies&amp;action=edit&amp;redlink=1">Winwap Technologies</a></li>
</ul>
<p class="MsoNormal">As you can see the diversity is staggering. However there is good news on the horizon – Forrester assures as that:</p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-family: MinionPro-Regular; color: #0070c0;">“over the next few years, the highly fragmented mobile browser market will begin to settle out as regular Web developers target fully capable browsers like Opera Mini and Internet Explorer (IE) Mobile and those based on WebKit.”</span></p>
<p class="MsoNormal">
<p class="MsoNormal">Some of the browsers mentioned above such as Opera Mobile or Safari can display HTML (or XHTML) complete with cascading style sheets and client-side scripting. Therefore, the &#8220;normal&#8221; web site written largely with HTML/XHTML, CSS and client side scripts might be completely accessible in these browsers, even if they don&#8217;t always offer the best interface given the constrains of display space and interactivity. However, in other cases, a web site or web application may need to be rewritten or otherwise dynamically converted into an alternative markup/wireless protocol. Again, there are plenty of choices. However there seems to be increased consolidation toward XHTML-Mobile Profile (MP). A lot depends on where (United States vs. Japan vs. …) and when (today, in a couple of years, etc.) you intend to offer your application and on what types of devices. Below is the list of most popular markup options in use today.</p>
<table class="MsoTableGrid" style="border: medium none; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid black; padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">Markup Language</span></p>
</td>
<td style="padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">What is it</span></p>
</td>
<td style="padding: 0in 5.4pt; background: #e5dfec none repeat scroll 0% 0%; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: #4f81bd;">Pros/Cons</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">XHTML-MP (WAP 2.0)</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Derived from and is a subset of XHTML</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+Developers can use the same tools for mobile and normal web sites.   +More formatting power than WML.+WAP Gateway no longer critical component.-   May display differently in different browsers.</p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">WML (WAP 1.x)</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">XML document with features inherited from HTML. First generation   wireless markup language</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+WML and WMLScript are fairly easy to learn.+Was widely accepted.-WAP   Gateway a concern in converting HTML to/from WML.-Soon to be phased out, but   still used heavily in places like far east.</p>
</td>
</tr>
<tr>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">cHTML</p>
</td>
<td style="padding: 0in 5.4pt; width: 119.7pt;" width="160" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">A compact and simple form of HTML. Similar to WML.</p>
</td>
<td style="padding: 0in 5.4pt; width: 225pt;" width="300" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">+ Offers features such as access keys and phone number shortcuts-   Limited use; big in Japan—especially on DoCoMo phones.</p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal">
<p class="MsoNormal">Another option for developers of the mobile Web applications is to use Mobile Development Platform such as Netbiscuits or Swift. I will describe how such platform may be used using Netbiscuits as an example.</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">When a mobile device requests a URL of your Mobile Web Application, this HTTP Request</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">will be routed to and processed by the Netbiscuits platform.<span> </span>The platform is working similar to a proxy server. In a first step, Netbiscuits will forward the HTTP-request to your Web- &amp; Application-Server (e.g.</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt;">Apache, Tomcat, IIS, etc.) which hosts the BiscuitML (<span>BiscuitML is an XML-based markup language used to build mobile web pages with the </span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;">Netbiscuits Platform</span>)Application. As in a normal web application, you will process the request and retrieve content from a Content Management System or database for example. Instead of creating HTML output, your application has to send a HTTP response back containing a valid BiscuitML document. The BiscuitML markup will then be processed by the Netbiscuits platform and be transcoded into the right markup (XHTML MP, WML etc.), specifically optimized for the mobile device that sent the initial request (Software such as WURFL or DeviceAtlas is used to determine parameters of the device) .<span> </span>Although BiscuitML pages can be static pages, in most cases you would create dynamic applications, of course. You can do that by using your preferred programming language like Java, PHP, C#/VB.NET, etc., whatever you find useful to create dynamic web applications. <span> </span>Plugins for certain IDEs are available as well, which make development with BiscuitML <span> </span>easier. The page content itself and also images that should be displayed inline in the pages of your mobile portal can reside on your Web- and Application server. Other multimedia files, especially those used as downloads (e.g. wallpapers, videos etc.), need to be uploaded to the Netbiscuits Media Repository first.</p>
<p class="MsoNormal">
<p class="MsoNormal">Below is high level architecture diagram of a Netbiscuits web application:</p>
<p class="MsoNormal"><img src="file:///C:/DOCUME~1/mshpigel/LOCALS~1/Temp/moz-screenshot-1.jpg" alt="" /></p>
<p class="MsoNormal"><a href="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/netbiscuits.gif"><img class="alignnone size-medium wp-image-738" title="Netbiscuits Platform Architecture" src="https://molecularvoices.molecular.com/wp-content/uploads/2008/08/netbiscuits-300x240.gif" alt="" width="300" height="240" /></a></p>
<p class="MsoNormal">
<p class="MsoNormal"><img src="file:///C:/DOCUME~1/mshpigel/LOCALS~1/Temp/moz-screenshot.jpg" alt="" /></p>
<h3>Mobile Web 2.0?</h3>
<p class="MsoNormal">
<p class="MsoNormal">Now we know how create Web Apps for Mobile devices. Next question is – Can we make it Rich? Can we give customers what they come to expect using regular Web? It may be surprising but the Rich Mobile Internet dubbed Mobile 2.0 is the current battleground , with companies such as Microsoft, Sun and Adobe offering their own solutions.<span> </span>Unlike their desktop counterparts, mobile RIA solutions are not always integrated as part of the browser. So each technology/RIA application may require users to install yet another engine the mobile device in order to load and display. This certainly blurs the line between RIA applications and other native or resident applications for the mobile devices. So what are the options for RIA on mobile platforms?</p>
<p class="MsoNormal"><span> </span><strong>Flash Lite</strong></p>
<p class="MsoNormal">Adobe&#8217;s Flash Lite is a scaled-down version of Adobe&#8217;s ever-popular Flash Player that is engineered specifically for mobile devices.</p>
<p>This RIA technology provides access to a mobile device&#8217;s features, including Bluetooth, camera, microphone, and GPS. Developing with Adobe Flash products is considered easy, and a large and active community is available for support and help. Flash Lite&#8217;s strength is that it uses vector-based graphics (although it also supports bitmapped graphics) which scales well on screens of varying resolutions—but sometimes at the cost of poor performance. You can conveniently convert desktop Flash content to mobile Flash Lite displays with minimal effort, which helps if your organization already uses a lot of Flash on its web site or in its web applications. Flash Lite can also run on top of other runtime environments such as Java ME or BREW.</p>
<p class="MsoNormal">Flash Lite has not been widely available on mobile devices outside of Japan and Korea, but this is rapidly changing. Adobe&#8217;s 2007 Financial Analyst Meeting notes indicate that over one billion handsets will include Flash capability before the end of 2009. Access to Flash Lite content can be expected to blossom as more carriers and devices support the platform. Most of the major cell phone providers (LG, Motorola, NEC, Nokia, Sony Ericsson, etc.) now ship with products that have Flash Lite pre-installed.</p>
<p class="MsoNormal"><strong>Silverlight</strong></p>
<p class="MsoNormal">Straight from Microsoft&#8217;s <a href="http://silverlight.net/" target="_blank">Silverlight web site</a>, Silverlight is described as: &#8220;a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the web.&#8221; What does that mean? Well, Silverlight is intended to be a competitor to Adobe Flash. However, instead of compiled applications (such as Flash delivers), Silverlight applications are delivered to the browser in the form of Extensible Application Markup Language (XAML), which is an XML-based language. The XAML is then read and used by a browser plug-in to display rich content. The plug-in reads the XAML files, which can declaratively specify the UI, and play MP3, WMV, and WMA files without a Windows Media Player or the WMP ActiveX control. Microsoft is expected to make Silverlight available for use with some mobile browsers.</p>
<p>On the positive side, because XAML is text and not a compiled file, supporters say Silverlight applications will be more &#8220;searchable&#8221; via engines like Google than Flash applications. Silverlight 1.0 is expected to be released for mobile platforms (specifically Windows Mobile 6 platforms and Nokia S60 devices) by the end of the year.</p>
<p class="MsoNormal"><strong>JavaFX Mobile</strong></p>
<p class="MsoNormal">JavaFX is meant to compete with both Silverlight and Flash. JavaFX is a family of products initially comprised of JavaFX Script and JavaFX Mobile. JavaFX Script (JavaFX for short) is a scripting language meant to provide rich user interfaces using syntax that resembles JavaScript and Scalar Vector Graphics (SVG). As its name implies, JavaFX Mobile is intended to be used on mobile platforms.</p>
<p class="MsoNormal">JavaFX Script is a scripting language that runs on top of a Java runtime. JavaFX resembles Java, JavaScript, and other scripting languages in some of its syntax, but developers can also use the standard Java syntax and make use of an extensive set of Java APIs. Sun claims that Java is the most ubiquitous application platform for mobile devices and can be found on over 2.1 billion devices—a lead it does not intend to give away to the likes of Silverlight or Flash technology. However, where Silverlight on mobile platforms may be considered a <em>young</em> technology, Java FX is, in fact, an <em>infant</em> technology &#8211; Java FX Preview SDK had just been released.</p>
<p style="margin-bottom: 12pt; line-height: 115%;">JavaFX Mobile is mostly based on technology which Sun acquired when it bought SavaJe in April last year. Sun has developed Java as a technology which it can license to others. However, JavaFX Mobile has been developed as a product it will sell.<span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"><br />
</span><br />
<strong>Mobile AJAX</strong></p>
<p>Mobile AJAX is nothing more than AJAX used on mobile browsers, in other words, mobile AJAX is just AJAX. Those who believe that writing native application software is the wrong approach to mobile software development (and that native mobile applications are on the way out) may find additional support for their case in &#8220;mobile&#8221; AJAX. Some mobile browsers do not provide all the necessary technologies and standards (such as JavaScript, CSS, and DOM) required to create usable AJAX applications on mobile devices. Increasingly, however, and as discussed earlier, many do. Opera Mobile and Mini(version 4), IE Mobile, Mozilla&#8217;s Minimo as well as browsers on the Nokia S60 and the iPhone, all run AJAX, albeit sometimes with limitations.</p>
<p>The mobile browsers listed above typically fall on mobile devices classified as smart phones or PDAs (or both). Even on these devices, some limitations of AJAX technologies on the devices can lead to issues. For example, JavaScript performance is quite poor on the first iPhone resulting in slow rendering of AJAX pages (on the new iPhone the performance should be much improved). Also, DOM manipulation and extensive JavaScript execution can tax the devices&#8217; CPU and memory—which can impact the device&#8217;s performance and quickly drain its power supply. But as the capabilities of mobile devices increase, the availability and use of AJAX in all its forms may also increase. In fact, mobile AJAX may actually help resolve some of the issues associated with mobile browsing. For example, AJAX can be used to make it appear as if the content loads faster by loading only the necessary parts of a page (typically much smaller), on a mobile device. Also of note, in September of 2007, the World Wide Web Consortium (W3C) and the OpenAJAX Alliance held a <a href="http://www.w3.org/2007/06/mobile-ajax" target="_blank"><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">workshop on Mobile AJAX</span></a><span style="font-size: 11pt; line-height: 115%; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">. </span></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://molecularvoices.molecular.com/2008/development-for-mobile-devices-part-deux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
