Program which smartphones
?How to program a mobile device? What frameworks will make it easier? What programming language to use? Can I make my app portable? Which operating system should you choose? We will try to answer all these questions.
The number of smartphone and tablet users rotating third-party applications is already greater than the number of desktops. So it is obvious that the programmer should now give preference to this market.
Do not count on compatibility with desktop systems (even if emulators are provided for development under Windows, Mac, Linux). The interface, screens are different and if you are not limited to applications in the browser, then you need to rethink the application and plan to use different APIs.
Mobile Operating Systems and Programming
Languages and tools vary by operating system. We will indicate them, but we will not go into the details of the application structures specific to each system, they are described in their development centers.
iOS
The iPhone system works mainly with applications in C or Objective C, or in HTML 5.
By banning the use of third-party frameworks (such as Flash) to create an app that is accepted in the AppStore, on September 9, 2010, Apple changed its policy and waived any restrictions on the tools that can be used to create iOS apps.
Clause 3.3.1, in order for the application to be included in the App Store, said that the software must be written in Objective C, C++ or JavaScript and without an intermediate layer with the iOS API. Now she's part of the story .
Statistics show that 80% of iOS developers do not have enough income to support the business, and 60% to offset development costs. According to a recent article in Register, there are 700,000 apps on the AppStore, but 25 take 50% of revenue and come from game developers like Disney, Zynga, EA!
Cocoa is a tool for Apple development and variations of the C language, along with the UIKit framework.
Android
Google's system now has a very wide installed base, equal to an iPhone in the US and therefore one of two privileged markets for developers.
The Android SDK provides an API for creating applications. In December 2015, OpenJDK replaced the standard Java API with an implementation on Google. The kit includes a mobile Android emulator for testing applications for Windows, Mac, Linux.
The ADT plug-in for Eclipse adds an IDE to it.
NDK, N for native, allows you to add native code, so written in C, or another compiled binary language.
The original programming language is Java, but thanks to SL4A, you can use another language, for example C # with Xamarin .
Cordoba widely used to create Android applications in JavaScript.
The LLVM virtual machine can also be used, in particular, using the Scsi compiler (since version 4.3).
- Android Studio. The IntelliJ IDEA-based IDE, which is more intuitive than Eclipse (with which Google originally collaborated), makes it easier to create Android apps on Windows. Monetization is a supported feature. Version 1.3 allows development in C++.
- Dulwick. The first Android virtual machine.
Thiesen
This is the successor to Meego, supported by Intel, Samsung, NEC and many other companies, it uses HTML 5 as an interface, and Linux as a backend. The name is probably an acronym for "citizen," a citizen in English.
It also succeeded Limo, a Linux Foundation initiative to build a Linux-based mobile system.
This is an alternative to Windows 8, which will allow you to run Linux applications on tablets and support Qt and GTK. If Microsoft is going to download 30% of Metro apps, Tizen will certainly interest publishers. Applications developed in HTML 5 and WAC will work on all devices.
Its availability with the SDK is planned for the first quarter of 2012.
- Thiesen. Hosted by the Linux Foundation .
- Teezen vs. Miego, Android, WP7.
Firefox OS

Android on the mobile revolution
The Mozilla platform, which equipped its first models in 2013, is the most open because it uses only web standards. Therefore, programming is done in JavaScript and HTML using the API to use hardware components.
For the backend, it uses Linux and Gecko, and all HTML 5 for the interface has advantages:
- no fragmentation.
- Compatibility with all devices.
- Free, on the contrary, Android, as Microsoft makes you pay patent rights for it.
- Applications work in HTML and JavaScript as a dy system interface.
Some devices, such as Revolution, allow you to choose between Android and Firefox OS at launch, which provides more durability, as updates to the former are limited, and not in the latter.
Firefox OS was abandoned on December 9, 2015.
Windows Phone
Unlike the iPhone, Microsoft's system favors writing C # applications, but C++ can also be used. Applications run on a lightweight version of .NET.
The WP 7 interface can be built using Silverlight or XNA, a game framework.
WP 9 may not be compatible with WP 8 due to necessary unification with Windows .
Blackberry OS
OS 6 of the former RIM (whose name becomes Blackberry) supports multipoint. Programming is done in Java or using the SDK for web applications.
Qnx is used on a tablet and allows you to run Android applications, provided that they are accepted on the App World distribution platform.
Blackberry 10 is based on Qnx and is its successor, it is a single platform for tablets and smartphones. In 2016, Blackberry turned to Android for new models and BB10 system can be considered buried.
WebOS
Linux is based on most Linux tools, including the SDL for games. WebOS supports HTML 5, JavaScript, CSS. He's multitasking. It includes Node.js, which allows you to create truly compatible applications that run even on your desktop.
PDK allows you to enter C or C++ code into applications. The SDK includes a simulator for testing applications running Windows or Linux, and Enyo includes an Ajax framework that includes widgets. You can add your own widgets. Enyo replaced Mojo with a faster and more HTML-compatible 5 framework suitable for tablets .
- WebOS. Full description on this site.
MeeGo/Sailfish
The Meego system on Linux (and hosted in Linux Funding) was the result of Moblin's merger with Intel and Maemo with Nokia.
Many industrialists have joined the Meego consortium - a system for mobile devices, tablets and netbooks. Common code that can be used for all of these devices.
Abandoned Nokia, Meego is replaced by Tizen, supported by Intel and Samsung using HTML 5. The original system continues with an independent company called Jolla called Sailfish OS. Jolla is a company founded by ex-employees laid off en masse. In July 2012, he found the first manufacturer. In August 2013, it has enough pre-order to run, unlike Ubuntu Mobile. According to testers of the first model, distributed in November 2013, Sailfish is the most intuitive of all interfaces for mobile devices.
Sailfish uses the Qt framework and can be programmed using the Qt Creator editor. MeeGo UI Toolkit is a layer added to Qt. It is complemented by Handheld UX for mobile devices and Neetbook UX for tablets and netbooks.
The programming language is C++.
Sailfish allows you to run Android apps.
Maui
Based on Linux, it is a mixed system for desktop and mobile PCs (which Ubuntu also strives to be), which uses either a touch or keyboard and mouse depending on the machine. Using the latest technology such as Wayland, it is particularly sensitive.
Not yet stable, it can be used to replace an outdated OS on an older device.
When Wayland replaces X, the same versatility will be possible with any Linux distribution.
- Maui.
Symbian (in process of abandonment)
Symbian 3 is an open source platform. You can download the Product Development Kit (PDK) to create an application. ADT (Application Developed Kit) contains tools for developing an application running on Symbian.
The languages used are C++ with Carbide, Java ME with Eclipse Mobile or NetBeans Mobility, Python with PyS60, Ruby with Symbian Ruby, Flash with Flash Lite, widgets using HTML 5. .NET support is not sure.
With the Nokia Qt SDK, you can develop and test desktop applications that will run on Symbian and Meego.
Symbian will gradually be replaced by Windows Phone 7 and, undoubtedly, a new Linux-based system for cheap models. Symbian development was taken over by third-party company Accenture in June 2011.
Universal platforms

They can now be used on iPhones until apps download executable code, as Flash can.
Titan
Development interface for Android or local applications. It has its own SDK, an interface to the system API, which facilitates a port from one platform to another.
Unity3D
Unity is a platform for development and Unity3D a specialized version for games. The API can be programmed in JavaScript or C #.
These languages are compiled in their native language (ARM) for mobile devices.
The same applications can run on the browser through the plugin. They also run on Windows and Mac, on .NET.
In March 2014, Unity announced support for WebGL and Asm.js alongside their browser plugin. This allows you to run applications on any device.
- Unity3D. All versions, mobile and desktop are free for developers and small businesses.
Xamarin
Free and open source since April 2016, this C # framework is included in Visual Studio Community Edition and allows you to run applications for iOS, Android, Windows, Mac, Linux.
HTML 5
HTML 5 remains a universal platform that works on all mobile devices without any code adaptation, but with limitations.
Nokia offers a tool for developing portable applications without native code.
A lightweight version of the Opera Mini browser dedicated to mobile has appeared in the iPhone AppStore. However, it seems that this browser is not a web application platform. Indeed, Opera Mini 5, supporting SVG and CSS 3, does not have support for the most important components: HTML forms 5, Ajax.
Firefox for Android will know when it has 100% HTML 5. Similarly, the native browser .
- What is the 5 HTML framework for the mobile app?
- HTML 5, Titanium or native?
- HTML 5 in the app store. The HTML 5 app or online service can be included in Amazon's App Store and generate revenue as a native app.
Own reality
Provided by Facebook in 2015, this alternative to HTML 5 (or Swift, Java) allows you to create native mobile applications with the React framework and JavaScript. 90% of the code is common for iOS and Android.
The application code is a combination of HTML and JavaScript.
The platform is used by Facebook, Instagram and several major sites.
- A real native. Development can be done on Mac, Linux, Windows or Android
Flutter
This platform, based on the Dart language, can now be used in 2017, and authors are already ditching their native iOS or Android platform for it to take advantage of the language's capabilities.
Supports hardware design, gesture recognition, interactive widgets, etc.
C++ Mobile
Microsoft suggests making mobile applications written in C++ from Visual Studio. It can work on iOS, Android, Windows.
JVM: JUniversal
Strangely proposed by Microsoft in February 2015, the JUniversal platform allows Java software to be developed into a language that matches mobile, Android, Windows (C #) or iOS (Objective C). The tool was actually developed by Nokia employees transferred to Microsoft along with the acquisition. But the user interface must be written in the native language.
RoboVM was an alternative that would generate binary code from Java, but after the purchase of Xamarin by Microsoft, development was discontinued ..
- JUniversal. The code hasn't been updated on GitHub in a year.