GSN Games is completely satisfied with Program-Ace's technical expertise and the quality of services they provide. We look forward to collaborating with Program-Ace again...
In this review we will define what a cross-platform mobile application is, which cross-platform frameworks and engines are most popular now, how they differ from the native apps for iOS or Android, and when it is not necessary to spend time on developing a cross-platform.
Before we start the argument on the subject of cross-platform development we need to make sure that we clearly understand the difference between cross-platform frameworks and native development. For simplicity, we will project the process of developing cross-platform applications and compare it with the development of native applications for iOS. So, what is the hidden meaning behind these terms?
If we talk about the development of mobile applications for Apple iOS, than a native application will be the solution developed using the programming language Objective-C or Swift (Apple programming language for developing applications for iOS and OS X, presented at WWDC 2014), within an integrated development environment Xcode.
From a user perspective, the native application does not differ from the high-quality cross-platform application, but it's worth noting that native applications developed for a specific mobile operating system, usually have a user friendly (native) interface. Convenience lies in the fact that during the development of native applications the bunch of UI/UX specialist and a programmer is most effective: the designer knows exactly what UI approaches are usual for users of a particular operating system (e.g. the «Back» button and bottom Tab Bar in iOS) and iOS developer knows exactly how to implement certain UI features for Apple mobile devices. As a result, the user opens a native app and intuitively interacts with the new interface.
It is important to understand why the application is called cross-platform. The fact is that self-executable file compiled for one mobile platform cannot be launched in the other operating system. So if we develop a cross-platform solution and compile it for Android, it does not mean that we can take a file with the extension * .apk and run it on iPad. The idea of cross-platform solutions is not in its usability, but in the optimization of mobile application development process. Therefore, cross-platform application is a solution developed to minimize development efforts by compiling the source code for further execution on multiple mobile platforms. But the result of each separate compilation will be an individual executable file. For example, iOS executable file has .ipa extension, and for Android it is *.apk, etc.
Most often this is an application developed using web technologies, rather than native development environment (ex. a bunch of Xcode and Objective-C in case of developing iOS app). The result is a web application that runs in a "wrapper" and serves not as a web page, but as a standalone application. It requires no installation and has a separate icon. Hybrid solutions are quite popular among developers of cross-platform engines. It is caused by the fact that almost any mobile operating system can equally handle the function of a web browser, which means if the application is already running under any mobile OS, then there won’t be any difficulty to run it on the other OS.
What tasks can be solved with cross-platform engines? Why someone decided that it makes sense? If you ask a Java-developer for Android or Objective-C developer for iOS what they think about cross-platform frameworks for mobile platforms, in most cases you will get a clearly negative response.
The main reason for such reaction is that good developers, like any other professionals, are very sensitive to the concept of development, efficiency and productivity; every of them has his own vision of "what is good and what is bad?", but usually it is all about technology set that use, care and cherish. It is important to understand that not every developer can sacrifice programming romance and make an objective assessment of what is actually good for business at a particular moment. In general it happens that the budget decides everything, so the basic background for the emergence of cross-platform solutions was their benefits to business, namely:
It is important to understand that there are many reasons why one developer chooses this or other platform. For example, RubyOnRails developer will hardly develop a mobile app using Xamarin, because more likely he would have limited or no development experience in C #. But if Xamarin will be in hands of an experienced C # developer, the client will definitely receive an application for Android and iOS that is highly competitive with a native app.
On the other hand, despite the fact that the team has at least 2-3 experienced C # developers, Xamarin can be expensive in implementation giving way to cheaper PhoneGap. Because PhoneGap can become a good alternative for projects that do not require any special graphics and hardware handling of devices, and are planned only as MVP prototypes to test the business model and should be implemented within a very limited budget. Another quite important parameter is the price to access the development environment in a specific framework.
Utilizing our 6 years’ experience in mobile development we know exactly what approach to use for specific customer requirements, budget and deadlines. Cross-platform mobile development with Program-Ace is always cost-effective and succesfull.