A smartphone is a mobile phone offering advanced capabilities beyond a typical mobile phone, often with PC -like functionality. There is no industry standard definition of a smartphone.  For some, a smartphone is a phone that runs complete operating system software providing a standardized interface and platform for application developers. [
The market of smartphone Operating systems is much more fragmented than the PC. Different screen sizes, are a challenge even on the same OS Mobile phones come with different input methods, some come with keypad, some with full keyboard some with touch some with both touch and keyboard. Mobiles comes with different H/W architectures, one of the most dominant architectures in the market of CPUs is the ARM architecture, most of the CPUs of the smartphones are ARM based. Digital signing include Digital signing fend off the hobbyist and small players but it have the advantage of security.
Symbian OS is the leading OS in the &quot;smart mobile device&quot; market. Symbian has many Ineterfaces, S60 is for most Nokia smartphones, UIQ for Sony Ericsson supports touch screen However, with a view that the average mobile phone user shouldn't have to worry about security, Symbian OS 9.x has adopted a capability model. Installed software will theoretically be unable to do damaging things (such as costing the user money by sending network data) without being digitally signed – thus making it traceable. Commercial developers who can afford the cost can apply to have their software signed via the Symbian Signed program. Currently, developers also have the option of self-signing their programs. However, the set of available features is smaller, and certain operators have opted on fully disabling certificates other than the Symbian Signed certificates. Windows Mobile is a compact operating system combined with a suite of basic applications for mobile devices based on the Microsoft Win32 API . Windows Mobile 6, formerly codenamed &quot;Crossbow&quot;, was released on February 12 , 2007  It comes in three different versions: &quot;Windows Mobile 6 Standard&quot; for Smartphones (phones without touchscreens), &quot;Windows Mobile 6 Professional&quot; for Pocket PCs with phone functionality, and &quot;Windows Mobile 6 Classic&quot; for Pocket PCs without cellular radios. Windows Mobile programming is popular for programmers because they are using similar Windows APIs, Visual C++ programmers are using the already familiar MFC class libraries and they can use .NET languages like C# or Visual Basic Another reason is the existence of a large code base for thousands of applications already written for Windows PC that only needs porting. BlackBerry OS Mandates digital signing. BREW is Qualcomm Binary Runtime Environment for Wireless it is used for Qualcomm CDMA mobiles but lately migrated toward GSM world. Can develop in C/C++ or JAVA, the native C/C++ mandates digital signing. iPhone SDK is now available but mandates digital signing for native development. Embedded Linux provides the ability to modify the kernel but it is a very fragmented OS with more than 22 different versions, newcomers are Google Android
Rationale behind programming language selection is same reasons for using them on the desktop. Some languages are for web, some are for performance, some for portability, some of skills and preferences. .NET and JAVA are competing with each other on mobile. Also SilverLight and JAVAFX are competing with Adobe FlashLite
CDC stands for ‘Connected Device Configuration’ and CLDC for ‘Connected Limited Device Configuration’. CDC aims at devices that are a little bit more powerful than a mobile phone; devices like a Set-top box or a Car Navigation system. I have mentioned that configuration contained the JVM. The virtual machine in CDC is called CVM (Compact Virtual Machine). Connected Device Configuration The Connected Device Configuration is a subset of Java SE, containing almost all the libraries that are not GUI related. It is richer than CLDC.  Foundation Profile The Foundation Profile is a Java ME Connected Device Configuration (CDC) profile. This profile is intended to be used by devices requiring a complete implementation of the Java virtual machine up to and including the entire Java Platform, Standard Edition API. Typical implementations will use some subset of that API set depending on the additional profiles supported. This document describes the facilities that the Foundation Profile provides to the device and other profiles that use it. This specification was developed under the Java Community Process.  Personal Basis Profile The Personal Basis Profile extends the Foundation Profile to include lightweight GUI support in the form of an AWT subset.  Personal Profile The Personal Profile is an extension of the Personal Basis Profile, and includes a more comprehensive AWT subset and adds applet support. The JAVA ME platform support only minimum portability, lot of implementation issues remain. Also one of the issues is the lack of JNI to access native APIs on the OS. An Advantage is that JAVA Me apps are safe to operate and require minimum time to port on different platforms.
The main reason behind all the Hardware limitations is due to the lack of sufficient battery power. CPU manufacturers are forced to underclock their CPU speed to save power, some even offer switchable CPU speeds depending on the user needs. This also explains why there is no floating point unit support. Low CPU Speed affect real time CPU intensive applications like Voice recognition, Video Streaming, 3D Games The market shows sometimes companies switch back and forth between higher and lower CPU speeds which mean that this is a big problem. New battery technology or for example using 45 nm for CPUs in mobile phones may lead to a breakthrough in CPU speed. CPU speed and lack floating point support leads to limitation on the real time applications like speech recognition and force them to limit their capability and do some trade off with their accuracy and potential. Microphone, In embedded devices like car voice command or home automation controlled by voice microphone arrays are typically used which is impossible to be placed on a mobile. Limited Camera resolution affects the accuracy of image recognition applications like face recognition, card readers,etc…
Multi Modal Interface Combines Face recognition, speech recognition, text to speech, touch and keyboard. Combining the face and speech recognition together helps to increase speech recognition accuracy and lower word error rate Simplified Algorithms - Simplified acoustic modeling for speech recognition. - Formant synthesizer in text to speech Mathematical Transformation -Using Log Domain for Probability Calculations Data Compression (Size vs Speed). -Using ZLIB real time compression library. Real time Audio and Video Compression. Pre-Computing (Speed vs Size) Sine Cosine Tables Adaptive Systems Adaptive speech recognition Distributed Computing: Speech Recognition Front end parameterization (signal processing) on the handset, Back end recognizer on the server. Programming Language Selection: Use C/C++ (native programming) for realtime applications (C is 30% faster than C++). Use JAVA for portable non realtime applications. Unicode Support - Only for the interface
Mobile Software Developement
<ul><li>Mobile Software Development </li></ul>Technology Overview By Dr. Maged Nofal
On July 20 th 2008, our name has changed from to
<ul><li>Mobile Software Development Challenges </li></ul><ul><li>Code Signing. </li></ul><ul><li>Lack of good language support. </li></ul><ul><li>Installed applications. </li></ul><ul><li>Cracking. </li></ul><ul><li>Reverse Engineering </li></ul>
<ul><li>Smartphone Operating Systems </li></ul><ul><li>Symbian (S60/UIQ/MOAP/Other) </li></ul><ul><li>Windows Mobile </li></ul><ul><li>Embedded Linux (MontaVisa/Android/Other) </li></ul><ul><li>BlackBerry OS </li></ul><ul><li>BREW </li></ul><ul><li>iPhone </li></ul><ul><li>ACCESS (Palm OS) </li></ul>
<ul><li>Hardware Limitations </li></ul><ul><li>Battery Power </li></ul><ul><li>CPU Speed </li></ul><ul><li>RAM </li></ul><ul><li>ROM </li></ul><ul><li>Floating Point Support </li></ul><ul><li>Graphics Support </li></ul><ul><li>Microphone Support </li></ul><ul><li>Camera Resolution </li></ul>
<ul><li>Solutions to Challenges </li></ul><ul><li>Multi Modal Interface. </li></ul><ul><li>Simplified Algorithms (Speed vs Accuracy). </li></ul><ul><li>Mathematical Transformation. </li></ul><ul><li>Fixed Point Processing. (Speed vs Accuracy). </li></ul><ul><li>Data Compression (Size vs Speed). </li></ul><ul><li>Pre-Computing (Speed vs Size). </li></ul><ul><li>Adaptive Systems. </li></ul>
<ul><li>Solutions to Challenges </li></ul><ul><li>Distributed Computing. </li></ul><ul><li>Programming Language Selection. </li></ul><ul><li>Screen independent graphical coordinates or layout managers. </li></ul><ul><li>Unicode Support </li></ul><ul><li>Using Anti Cracking Techniques. </li></ul><ul><li>Use Obfuscation for managed code. </li></ul>
<ul><li>Future Trends </li></ul><ul><li>More powerful real-time Applications. </li></ul><ul><li>GPS aware applications. </li></ul><ul><li>More distributed Applications. </li></ul><ul><li>More AJAX web applications for mobile phones. </li></ul><ul><li>More multi-threading. </li></ul>