apps

Which programming language should you learn to make mobile apps?

apps
You might have heard that you create Android apps with Java or Kotlin and IOS apps with Objective-c or Swift. But actually, you have a lot more options which can be more compelling.

We can divide the method of creating apps in three categories. Pure native language, hybrid Apps or compiled native apps. Let us dive deeper into what those three categories mean, and what the benefits are.

Just to be clear, in this post, I am talking about mobile apps which can be published in the app stores mainly for IOS and Android.

Pure Native Apps

This has been the most common way to make apps and is how most apps have been created. The language is designed for the specific platform and is how the company intended it to be. For Android, the native languages are Java or Kotlin, and for IOS it is Objective-c or Swift.

Why should I develop pure native apps?
  • This is the way the majority of the apps in app stores has been created. This means there are a lot of resources online if you get stuck.
  • Great performance. Since this is the intended way to make apps, you get complete control over native features.
  • There are a lot of jobs which are looking for pure native developers.
What are the cons of pure native apps?
  • You can’t reuse the codebase. Since Android apps use Java/Kotlin and IOS apps use Objective-c/Swift, you have to basically develop the apps twice. And if you need to update both, you have to update both the code for Android and the code for IOS.

Hybrid Apps

Hybrid apps are wrapped in a webview. This means it is a web page, but without the address bar. You can still get access to native features with plug-ins. In the end, this is just a normal app which can be uploaded to the app stores.

Which programming languages/framework can I use?

The biggest and most popular hybrid framework today is Ionic Framework. Ionic uses Typescript programming language, which is a superset of Javascript. This means that you can write vanilla Javascript in Typescript, but you have options to add extra features like types, etc. For styling, they use SASS which is CSS with some extra feature, and HTML.

You get a rich set of pre-styled components and icons, and the same codebase is used to compile to IOS and Android apps. They will automatically style the app differently for IOS and Android to give their natural look.

They use Cordova (previously PhoneGap), to connect the webview to native features like camera and flashlight. These are plugins which you can call.

Until recently, Ionic was built on Angular which is a web framework from Google. But now, they support multiple other frameworks/libraries like Vue.js.

Why should I create hybrid apps?
  • You can use the same codebase for IOS and Android apps, which saves a lot of time when creating and updating your apps.
  • It uses standard web technology. If you got skills in that area, it will be a piece of cake to learn.
  • Since you are using standard web technology, you can import javascript libraries as you please, like chart.js to make beautiful charts and lots more.
  • You get a rich set of pre-styled components, which makes creating good-looking apps fast a breeze.
  • There are possible to create Progressive Web Apps within the framework.
  • Very good documentation.
What are the cons of hybrid apps?
  • The app is wrapped in a webview. Running things on a webview has a higher cost performance-wise than it’s native counterpart. That being said, since Ionic Framework came out, the team over there have done an amazing job of boosting the performance, and at the same time, mobile phones are a lot faster. On top of that, the webviews on the different devices have also become much more performant. But if your app contains heavy graphics, and there are a lot of things going on, you should consider a native alternative.
  • You do not have the same “hands-on” control on native features like the native alternatives, you are relying on Cordova plugins being supported.

Compiled Apps

These are apps which use same framework/programming language but they are compiled to their native counterparts. This means that even though you don’t use pure native languages like Java or Swift, these frameworks knows how to translate the app into native code.

There are a few different good options on different frameworks here. I will go through the different options.

React Native

React Native is based on the javascript library React created by Facebook. First public release in early 2015. Uses jsx files for templating which renders the view very fast.

Why should I create apps with React Native?
  • You can use Javascript to develop for both IOS and Android.
  • Great Performance
  • Uses something called “Hot Reloading”. This is a feature that you can see the results in UI while you are developing. Just hit save and you will see the changes immediately.
  • A mature and the most popular cross-platform framework. Backed by big companies like Airbnb, Netflix, and Facebook.
  • Since it is so popular, you can find tons of resources and there is a good chance if you are stuck, that there is someone who has a solution.
What are the cons of React Native?
  • Have few pre-styled components, and you need to get different modules like navigation and state management from the community. That being said, it’s very light-weight.
  • The official documentation could be better.
  • You need to customize more to each platform than Ionic. But on the other hand, this gives you more control.
  • Works well with IOS since it was originally created for that platform. Has some bugs on Android.

NativeScript

An open-source cross-platform framework developed by Telerik. First public release in early 2015.

Uses XML files to design the user interface.

You can Integrate Native script against Angular and Vue.js.

Why should I create apps with NativeScript?
  • Great performance.
  • If you like developing in Angular or Vue.js.
  • More reusable components compared to React Native.
What are the cons of NativeScript?
  • NativeScript is not nearly as popular as React Native, and they do not have apps build by any big company.
  • NativeScript runs inside Google’s V8 engine, which increases the size of the application.
  • Fewer contributors in the open source community.

Flutter

Created by Google. The first alpha release was published in May 2017. Currently in beta.

Flutter is the newest addition to a cross-platform framework. Uses Dart as its programming language which has similarities to C# and Java.

Why should I create apps with Flutter?
  • Uses like React Native hot reload in development, which shows UI changes immediately without losing the state.
  • Has built in beautiful UI widgets.
  • Uses Dart which compiles the code ahead of time. This means it does not have to use a JavaScript bridge which in turn makes the app run faster.
  • Easy to install and get started.
What are the cons of Flutter?
  • A brand new framework which is still in beta. This means you have to expect issues in stability and API changes in the future.
  • Uses Dart as a programming language which is a fairly unknown language.

Other Frameworks

There are a few other frameworks available apart from those I have mentioned. I just want to list them up with a brief description, so you know what is out there.

Xamarin

This is a cross-platform framework which uses the C# programming language. It’s been around for quite a while. If you have a lot of experience from C# development, then this could be an interesting choice.

Framework7

This is a hybrid framework with a lot of similarities to Ionic Framework. Has a rich set of nice UI components. Are not as popular as Ionic Framework.

Fuse

A cross-platform framework which compiles to native code. Runs on Javascript.

Conclusion

So now you know about your option on which frameworks that are available. But which one should you choose? This of course depends. All the frameworks I have mentioned in this article are excellent tools. I don’t think you will go wrong if you choose any of them. It is a few things you should think about before choosing a framework.

Do you have any experience with any of the languages?

If you know Angular, you should consider Ionic Framework or NativeScript. When you don’t have to relearn a new language, you will get a head start and get up to speed developing app really fast, which you usually want to do. Do you know React, then the obvious choice is React Native.

But If you, as most developers are, curious about new technology and just want to learn stuff for fun. Then you can check out Flutter.

Who are you developing for?

If you are making an app which you want to publish to the app store and make money, you want to reach as many potential users as possible. In that case, I would choose a cross-platform framework. With pure native, you have to essentially create the app twice, and you need to maintain two codebases.

If you on the other hand love Swift, and you just want a job as an IOS developer, then go pure native.

I hope you in this article got some more insight on what is possible and have an idea of which framework you should choose. I wish you good luck and happy coding.

Similar Posts