In the world of mobile development, we have modern languages, both for iOS and Android, to develop native applications for each platform.
In addition, there are some cross-platform tools to program once and compile for different operating systems. The best known are Apache Cordova, or Capacitor/Ionic. These tools are known as hybrids, since they are a mix between standard web code and native code. For their execution, they use the so-called webviews, which are basically browsers embedded in the apps. That is, they “look like” native applications, but they really are not: they are web applications that run as native.
Besides, over the past few years, some of those cross-platform tools evolved to compile directly to native code (for example, React-native, Native Script, Xamarin, or Flutter), keeping the concept of programming once and compiling for each platform.
In this note, we will answer some questions about native languages and modern cross-platform technologies, and when it is more appropriate to use one or the other option for mobile development.
When to use native apps
If the project has too many external services or access to functionalities of the operating system, a solid platform, with native code, is better, because it is complex to carry out this type of task with multiplatform tools.
What problems can I have with the hybrid applications mentioned above?
There are cases in which we might have problems when publishing in the Apple store, because Apple can prohibit the use of libraries or components (for example, if there is a library that is deprecated) which use multiplatform tools. In these cases, it would be enough to update, but we could have other problems in the later revision.
Apple, by policy, prefers native applications. Although it tolerates hybrid apps, it prefers to avoid them. In fact, in Apple’s guidelines, it is clarified that apps that are only a webview and do not use native code will not be published.
When to use hybrid or multiplatform applications?
If the application is very simple or is a prototype or an idea that is not planned to be maintained for a long time, hybrid alternatives are a great option, because they are simpler and therefore more affordable.
What is Flutter?
Flutter is a framework for developing applications for different platforms, developed by Google and published for the first time as an open source project at the end of 2018. This development kit offers a large number of libraries for standard elements of the Android and iOS user interface, although it can also be used to develop desktop web applications.
Flutter is supported by Google. This is where you want to take Android development, because it is a solid tool at the level of libraries and compatibility. The most interesting thing about Flutter is that it compiles to native for Android and iOS and it is not an embedded web application (webview).
Mobile development with Kotlin or Java?
Kotlin is the programming language that Google wants to replace Java in the development of Android applications. Everything indicates that Java will be replaced by Kotlin, so it is beneficial to implement the latter in a new development.
Kotlin is interoperable with Java, which means that it can take advantage of all existing Java libraries, JVM, and frameworks.
Developers who are familiar with Java can learn Kotlin with ease, as the learning curve is easy.
Swift or Objective C?
Swift‘s syntax is much simpler. There, Apple aims: a modern, robust and powerful language. Swift is ahead of the pack when it comes to power and performance.
Objective-C is based on the C programming language, which is one of the most popular among programmers.
An interesting point is that they are not mutually exclusive: both can work as a team, being able to create programs with parts written with both of them. Swift is the future, but Objective-C is the foundation.
We hope that the answers to these questions about mobile development have helped you to define some of your doubts and to find the best way for your business project. If you have a project in mind, do not hesitate to reach out.