A little while ago, while enjoying a nice Friday beer, we asked our technical colleagues which is the best way to build a mobile app. Soon enough, we found out that there are four superstars that rule the market, React Native, NativeScript, Xamarin and Ionic. These four are called hybrid technologies, and they are the most popular because they are fast and give “that native feel”. So as expected, our inquisitive nature did not allow us to leave things at that. We now needed to know more. To start with, if these are hybrids, what other technologies are developers using for mobile apps? Also, what is a native technology, and why do we need the “native feel”?
However, before we dive in, we want to make a quick disclaimer. Today, we are focusing only on Android and iOS apps, since these are the champions on the market. So, if you missed our post about hybrid technologies, make sure you read that first. Everything will make so much more sense. Ok, ready? Let’s begin!
What’s the difference?
Native apps are based on native languages, such as Java and C++. Naturally, this type of apps use native APIs built specifically by Android and Apple developers for each platform. As expected, Android native apps look and feel different from iOS ones, even though they share the same functionalities.
Differences are easy to spot. While Android focuses more on design and minimalistic UI, iOS focuses on simplicity in UX and functionality. For example, on an Android phone the “send” button for email functions or social media apps is usually a little stylish arrow. On iOS it is an actual string of text saying “Send”. The same goes for the “back/cancel” buttons, as well as the rest of the layout.
But make no mistake, none of the designs or functionalities in either application are the way they are just by chance. Everything is based on extensive user research to align with their preferences and ensure the optimal UI/IX results.
Communication is the key
The better the communication between APIs and the backend code, the better the performance and quality of the app. So implicitly, with hybrids, it all depends on the developer’s skills and the requirements of the project. The simpler the app, the better the code and, as expected, the better the performance.
At the same time, hybrid APIs will always be one or two steps behind, as developers need to spend time to replicate the originals. By the time they finish building one hybrid API, native developers have already released an updated version. So they have to start over, and the cycle goes on, and on.
However, when using native technologies, programmers don’t need to build the interface solutions from scratch. Hence, performance and quality for native apps are often quite superior. Not to mention that native APIs can be used immediately after they are released, as they have already been through extensive testing and bug fixing. But, don’t get excited just yet, there’s more.
When should you go native?
To better understand why or when you should go native, let’s meet John and Jenny. John is a 20 year old student, living in Copenhagen. He has a part-time job, and spends his days going to uni, relaxing with friends and working on weekends. Overall, John’s entire life spreads on a 15-20 km radius. So for him, a bike is the perfect mean of transportation. It’s affordable and it meets all of his needs.
Jenny, on the other hand, is a suburb mum, with two children, and a full time job. She lives outside the city but works in the center of Copenhagen. Her kids go to different schools and participate in all kinds of extracurricular activities, like sports, art classes and so on. Simply put, Jenny’s life is a turmoil. Every day, she runs in a 60km radius circle and still finds time for her family. As you guessed, for Jenny a bike is not an option. She needs something bigger, faster, and safer than a bike, with a large storing capacity. So Jenny will use a car as her mean of transportation.
In this example, John is a small company or startup, with limited resources and a small number of users. For startup John, a “bike”, or in this case a hybrid is the natural choice. Just like a bike, a hybrid app is affordable, cool and functional.
Jenny represents a large company or corporation. Corporate Jenny’s app has a massive amount of users, so she needs a reliable and highly functional solution. As a result, Corporate Jenny will choose the “car”.
Building Native Apps
Restrictive language choices
Building hybrid applications is simple because developers have the choice of using a language they know. Also, they don’t have to be mobile developers, specifically, to build hybrids. Experienced programmes can easily transit from web developer to mobile.
With native technologies, on the other hand, it is not that simple. First of all, the languages used are platform specific. In the most part, to build a native application you need to know Java and/or C++.
Second of all, hybrids use the same set of code for frontend, for every platform, with only a few adjustments. Which is why they are also called cross-platform technologies. Native applications cannot do that since native APIs are different for Android compared to iOS. Hence, developers need to build separate front ends that fit each platform. In other words, to build a native app in iOS, you will need to learn to work with one set of technologies. To build a native in Android, you will need to know a different set.
iOS Native Apps
Every Apple application, be it mobile, desktop, wearable or TV, is built using a MAC OS specific software called Xcode. This development environment allows Apple developers to “code like a pro”. In short, this solution enables them to choose between Swift, C, C++ or Objective-C, which was not always the case with native iOS apps.
In fact, when App Store was launched in July 2008, all iOS native applications were built only in Objective-C, which is a supraset of C++ . The veteran, C++, has been on the market since 1979, and was one of the first object-oriented programming languages created. However, a few years later, Objective-C emerged and took the spotlight away from C++.
As the name implies, Objective-C is also an object-oriented, general-purpose language, and it was created by Brad Cox and Tom Love. The reason Apple choose Objective-C over the original, is functionality and timing. Simply put, Objective-C was the most dynamic and more practical solution available at the time.
As technology progressed, however, neither C++ or Objective-C could keep up with the challenges brought up by modern GUIs. So, soon enough Apple needed a new and better solution.
When Apple realized that about Objective-C, they did what Apple does best, and created their own programming language. So, in 2014, when the company publicly announced the new Xcode 6, they also revealed Swift 1.1. This first version of Swift took the Apple universe by storm and was quickly embraced by the community.
As Apple puts it, Swift is the “Objective-C… without the baggage of C”. From the simplified code to better speed in encryptions and better performance rates, Swift is already superior to Objective-C. But more importantly, Swift is secure and modern, and it introduced a level of incomparable dynamism, that would take native iOS apps to a whole new level.
<iframe width=”789″ height=”444″ src=”https://www.youtube.com/embed/MO7Ta0DvEWA” frameborder=”0″ allow=”accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>
Android Native Apps
As many Android services are developed using native C and C++ libraries that use Java APIs, native Android apps are built using the same two technologies. However, one of the reasons Android didn’t give up on C++, like Apple did, is well…it’s connection to Java.
Since it’s release in 1996 by Sun Microsystems, Java quickly spread throughout the digital world. From basic web applications, to native desktop and mobile applications, to console applications, Java is everywhere. But the fact that it is an intuitive and volatile language is not the only reason behind its success. Applications written in Java also showed over the years how reliable, secure and scalable it can be.
To give only a few examples of Java’s outstanding performance, by using this technology, Twitter runs 400mil. tweets a day on web and mobile. Still not impressed? Java has also enabled Netflix to host 57 mil. users in 50 countries and more than a billion hours of streaming and downloadable content. That all amount to about 2 billion requests per day with thousands of java processes running simultaneously at all times. Pretty cool, huh?
Going back to our subject, just like Apple, Android uses their own specific environment for native apps development. In this case, we are talking about the Android Studios, and it can be downloaded for Windows, Mac or Linux. That gives Android developers a lot more freedom, as they don’t need to use a specific OS to build Android apps.
Developers can access the native C++ libraries directly from Android Studio, along with the entire features set of Java APIs. Basically, developers can recreate any native feature, including those for core applications like SMS and mail functions.
At the end of the day
From a business perspective, building a native app depends simply on you. Are you the next Netflix or the next Twitter? If yes, then natives are what you need. But, if not, keep in mind, Facebook created their own JS library and their own hybrid app. So if Facebook can fair so well with a ReactNative application, maybe your business will too.
At the end of the day, what you need are experienced developers. Be it native specialists or hybrid masters, hiring an expert is by far the best way to go, because so many things can go wrong while building an app.
Our advice? Keep an eye on our blog for more interesting web and mobile posts. Every other Friday we will have a new and fresh article for you. But, if you have an idea for a native of a hybrid app or a web application, don’t hesitate to contact us! Let’s make the world digital together.