When one thinks about a smartphone or a tablet, the image that will surely pop into your mind will be that of an Android terminal or an iPhone. And that’s not without reason, because they both take up about 100% of the phone user pie. The main decision we need to make when we’re developing our app is simple… Android, iOS or both? It will certainly depend on the several factors that determine our project, such as our human assets, their knowledge, or simply on whether or not we have the development material we need to do it (iOS development requires a Mac with an OS X system, to be able to sign the code with Xcode).

The development of Android has evolved favorably over time, improving its performance and the tools needed to work on its projects. We’re certainly talking about AndroidStudio, the development environment that Android urgently needed, because previously it had to base itself on existing environments where it could install its SDK, a solution that was sometimes tortuous, as which wasn’t specifically aimed at this technology. The main development language is Java, but it isn’t the only one or closes doors for others such as C++. The latter is an older language, but which has an obviously smoother functioning on any platform. Java however, has a greater range of developers, given that it’s a more widespread technology that facilitates development with an automatic memory management, avoiding the manual use of pointers.

Android-IOSThe Android’s structure has undergone several stages, but something these all have in common is the amount of layers with which they are formed, with a virtual Java machine as a last lever before the system’s kernel, which has always been criticized and blamed for in terms of the Android’s poor performance in comparison to the iOS. Google’s efforts to solve the problem led them to change this machine for the ART, which entered the Lollipop Android 5.0 system, and which arrived to replace the old Dalvik, which has been the JVM Ade Android since its inception until today.

The need for these virtual machines and therefore the layers of their operating system, are directly related to the chosen language, given that Android is a Linux-based system, with a kernel programmed in C, so Java is in a “non-native” situation for the system, and therefore needs a translation layer to compile it with the kernel.

The Apple world inhabits a different planet, from the peculiarity of the UNIX-based system, to a better choice in system components. The historically dominant language for development in iOS is Objective-C, a direct derivative of the LISP language, which initiated others like C++. It goes without saying, that this language is native for the iOS system kernel, so it’s needless to say that, along with a great optimization and set design software for hardware, they achieve a clean and smooth functioning, which actually Android is approaching, getting closer to overlapping with the green robot system.

The main problem with iOS development is the need for initially expensive materials. We need a Mac, be it a MacBook, Mino, iMac or any model that has an installed OSX. The main reason is that to develop iOS, we have to do it in Xcode, Apple’s quintessential development environment, which is also a necessary tool if we want to publish an application in the AppStore, because we have to sign the code with that environment.

A curious circumstance is the compulsory need for an iPhone to test development, because, with the Xcode 7.1 update, one can only test his work on an iPhone or iPad, without having to pay the developer fee which amounts to $99 per year. In our opinion, nothing is better than testing your developments in a real device, therefore it’s almost necessary to have an iPhone if you want to delve into the app programming world for the Apple system.

Currently, intermediate solutions are proliferating, which are helpful in terms of the time that it takes to develop applications that work similarly in every available operating system (mainly Android, iOS or Windows Phone), using native languages which are common to every technology, creating savings and allowing for the simultaneous creation of apps for the main platforms in the market. One of the most interesting ones is Xamarin, the global technology that can enhance what was described above efficiently, even when it requires solving specific details for each platform when generating an application (as for example, signing the code for IOS).

There are other possibilities for developing cross-platform applications using HTML5 and other Web-oriented technologies. These applications are called “hybrid” or Webapps but have basic problems such as performance in comparison to conventional applications, and the absence of its native experience.

Due to all of this, it’s key to have a team trained in the latest technologies, and with a knowledge of the current scene, for the appropriate development and future of a project.