For the past few years, mobile network operators and manufacturers manage and control the mobile application development industry. The arrival of new platforms and mobile phone models changed the application development process. The development of mobile applications has generated more interest in both independent and big players in the industry, freelance developers and start-ups. The constant improvement of hardware related to mobile computing e.g. larger wireless network bandwidth better computing power clearly enhanced and improved the capabilities of mobile devices thus the challenges in the development process are already expected.
According to a Deloitte study (via Time), Americans across all age groups, on average, check their phones 46 times per day. I have three screens of icons, so let's say I see the side screens every third time I am in the apps. Even for a company whose app got relegated to my side screens, I am viewing their app icon nearly 5,600 times a year! That kind of advertising is priceless, so make sure your creative team comes up with a unique, eye-catching app icon – Forbes.
Major software application development companies, such as Google and Apple, are constantly disturbing the fairly safe and established actors of the mobile application development business. These newcomers, together with the big players in the industry, have caused significant structural and multi-cultural changes in the mobile application development field by enforcing and imposing their own rules in the future of the mobile application development industry. The implications of these constant changes do not only concern the mobile phone manufacturers and mobile network operators. The change in the development structure also brings both additional opportunities and constraints for current and new mobile application developers. Because of this, there’s been a demanding need for developers to assess their options while making sure that they are making the most of the advantages of these current trends.
The software development kit (SDK) is the center of every development platform. It enables third-party developers to deliver mobile applications running on a specific platform. Software development kits usually include libraries, handset emulators, and debuggers.
Existing popular platforms such as Android and IOS, have taken different approaches when it comes to sharing their SDK with application developers. Some have chosen to restrict access as much as possible, whereas others have chosen to disclose the entire source code of their SDK and OS. SDK approaches can be presented into two main models:
Proprietary platforms all keep the source code of their SDK and OS are hidden from any outsider. The only difference is their level of control over what developers can install on the platform. Apple, for example, has almost unlimited control over third-party applications since all applications pass through an approval before they can be released on the platform. RIM and Microsoft, on the other hand, are more lenient. Advantages of closed technology for the platform provider include being to sell and control your platform, thus increasing the value in return.
Android appears to be the best-selling mobile operating system and it is developed by no other than Google itself. According to Gartner (2016), Android achieved 84% of the global share in terms of selling during the first quarter of 2016. At the core of the Android, the system is Linux's other libraries and application frameworks. The first version of the operating system Android 1.0 was released in 2008. Since then, Google has regularly released an upgraded version of the system to keep up with the trends and ever-changing mobile platforms. According to Statista (2016), Google Play Store has over 2 million applications available to download every day and is continuously growing.
The Android operating system is made of different layers - Linux Kernel sitting at the lowest layer, and Dalvik Virtual Machine on top together with other system libraries. Higher layers contain application frameworks and user application layers.
Android applications are develop using Android Software Development Kit (SDK) with Java being its default programming language for application development. C and C++ programmers also can build android applications using a tool called Native Development Kit (NDK1). Programmers write Java source codes for an application, then the source codes are converted or compiled to Java Bytecodes, then the Bytecodes are cross-compiled to a Dex File afterwards. The APK Builder is then use to package the finished Dex file, Resource file and other files into one whole APK file. This APK file is the application file installed in mobile phones.
IOS is developed and solely used by Apple Inc. in its mobile devices. Originally developed in 2007, for a smartphone, Apple then decided to customize its existing Mac Operating System for the company’s flagship mobile phones.
Using the native application development model, it appeared to be convenient for Mac application developers to build mobile-friendly applications for Apple devices. Initially, the operating system was named as iPhone OS, but Apple renamed it iOS after the release of version 4. The iOS Kernel is called XNU which was developed by Apple in 2003. XNU is part of Darwin which is an open-source Unix-based operating system also developed by Apple last 2000. By June 2016, the number of available applications in Apple’s App Store has reached 2 million but it's still way lesser than Android applications (Statista 2016).
The underlying IOS architecture can be classified into four different layers. The Core Operating System layer sits at the bottom of the architecture while the core services are defined at the second layer from the bottom. There is also Media Services layer that contains audio and video frameworks with graphics that sit at the third layer next to the Core Services. Cocoa Touch which contains the key technologies for building applications is at the topmost layer of the iOS architecture.
The required programming languages for iOS development are Swift and Objective-c. It is also possible to develop iOS applications with C and C++. Once the mobile application development is completed, the application goes through an approval process for the iOS system. Apple released its initial Software Development Kit (SDK) for iOS in 2008. By the release of Xcode 3.1, it became the default development platform for iOS SDK. Xcode could be used free of charge but test deployment to a device or publishing the application to the Apple App Store requires an annual subscription cost. Once the application is published in the App Store, Apple receives thirty percent of the sales revenue.
Windows 10 Mobile architecture is also divided into different layers. The Kernel is obtained from the Windows Operating System and it has been modified to work both for computers and mobile devices.
This layer manages networking, security, storage, application frameworks, and core hardware communications. The layer above is the programming and service system framework layer. This layer provides the application developers with all the required frameworks and libraries to build the mobile applications. The topmost layer contains the system applications that come with the operating system and user applications that are downloaded and installed by the user (Windows 2015).
Microsoft introduces Universal Windows Platform (UWP) which allows developers to build and run software on different Windows 10 platforms such as a mobile, tablet, PC, and Xbox. Microsoft Visual Studio uses an emulator for testing. Once the development is finished, the respective application packages could be created for the compatible windows devices ie. mobile, PC or Xbox. Several programming languages support the development of the Universal Windows Platform (UWP). Supported languages could be grouped in the following order: HTML, CSS, and JavaScript, XAML and C# XAML, DirectX, and C++. Among the supported languages, group a and b support cross-platform development with the help of Cordova and Xamarin (Hissibini 2015).
Over the past few years, we have observed that a relatively stable market for mobile application development. It has evolved in three distinct directions. First, there seems to be a strong trend towards portal centralization. Second, there is an increased number of actors providing open source technology. Third, platforms are moving towards a higher level of integration. Whichever it is, the trend for mobile application development is expected to be continuously competitive for years to come.