Best Programming Languages To Learn For Mobile App Development

By Eddy Chung

There are so many languages out there for mobile software development it can be overwhelming.

The best languages to learn for mobile app development are:

  • Swift
  • Kotlin
  • Java
  • Objective-C
  • JavaScript
  • Dart

The language you should learn depends on your needs and desires. Different languages are better for different projects. It’s important to know the pros and cons of each language before making your choice

Swift

Swift is the best language to learn if you’re looking to become a professional iOS developer. It’s also a pleasure to learn due to how modern it is. Apple created it based on the latest researching of coding languages. It eliminates entire breeds of bugs by design and is very easy to read. Personally, it’s my favorite language and the developer experience is amazing.

All new iOS apps are being developed in Swift and the demand for Swift software engineers in the market is only growing every day. The language is also still being actively worked on by Apple and improvements are coming out every year.

It’s also climbing the ranks of popularity. It’s TIOBE rating is #12.

zero to app store

The TIOBE rating is an indicator of the popularity of programming languages, based on the number of developers, courses, vendors and search engine results.

Some of Swifts best features include:

  • Great memory management
  • Variables are always initialized before use.
  • Array indices are checked for out-of-bounds errors.
  • Structs that support methods, extensions, and protocols
  • Optionals ensure that nil values are handled explicitly.
  • Functional programming patterns, e.g., map and filter
  • Native error handling using try / catch / throw
  • Statically typed, type inferred and type-safe
  • Protocol oriented programming

The safety features of Swift make it almost impossible to get a null pointer error – which is a very common problem in other languages. The ability to set a variable to be optional saves developers time and sanity.

Community support is also growing rapidly in size. There are tons of third-party libraries, guides, and tutorials online. The documentation is also very complete and robust. According to a StackOverflow survey in 2017, it is the 4th most loved language amongst developers.

The Swift playground also makes it easy for new developers or developers from other languages to jump in and try things out quickly.

Salaries for Swift developers is also high according to Indeed.com

zero to app store

Its popularity in the last 5 years has been a steep incline according to Google Trends.

zero to app store

Vapor is also the first server-side Swift framework and looks very promising, bringing a lot of the advantages of Swift into the backend.

Kotlin

Kotlin is a statically typed language that runs on the Java virtual machine. This makes it easy to use in existing Java projects, which in the mobile development world is Android.

As of Android Studio 3.0, released in 2017, Google announced their full support of Kotlin. Developers are able to select from either Kotlin or Java in their IDE now. Android Studio now ships with Kotlin by default.

According to Google Trends, in the last 5 years the searches for Kotlin has been on a steep incline.

zero to app store

Kotlin is much more concise than Java and promotes more functional programming patterns. It’s has null safety built in as well, preventing the dreaded null pointer exception that often causes a runtime crash in Java.

Here’s a list of complete features Kotlin has that Java does not:

  • Lambda expressions
  • Inline functions
  • Extension functions
  • Null-safety
  • Smart casts
  • String templates
  • Properties
  • Primary constructors
  • First-class delegation
  • Type inference for variable and property types
  • Singletons
  • Declaration-site variance & type projections
  • Range expressions
  • Operator overloading
  • Companion objects
  • Data classes
  • Separate interfaces for read-only and mutable collections
  • Coroutines

According to a survey conducted by RebelLabs of over 2000 Java developers, Kotlin is a language that they’re excited about learning. It also has a very high developer satisfaction rating of 9.1 out of 10.

The Kotlin development community is also thriving. Third-party libraries and tools can be found on GitHub in Kotlin. Tutorials, guides and support are plentiful online, making it easy for new developers to pick up Kotlin.

Developers switching over from Java should be able to pick up Kotlin almost instantly.

Many Android apps are being developed completely in Kotlin. What’s great about Kotlin is that it can also be used in the backend in traditional Java environments. Kotlin has a very bright future ahead of it as its still very early in this languages lifetime.

Java

Java is an extremely popular language. Android apps were mostly built in Java before the arrival of Kotlin. Still today, Java remains one of the most popular languages according to the TIOBE rating.

zero to app store

The TIOBE rating is based on the number of developers, courses, vendors and search engine results of the language worldwide.

Java is ridiculously popular, especially in any of the older companies. I’ve had to use a little bit of Java at every company (except startups) that I’ve worked at.

It was a revolutionary language when it came out, as it allowed application developers to write once and run anywhere. This was due the Java virtual machine which makes it capable to run on Windows, Linux and OSX.

I first learned Java when I was in a high school computer science class building my first Android app. It was maybe Android 2.1 at the time and my Java skills have served me very well throughout my career.

Although it may be on the decline due to new languages being introduced, its still a solid pick for Android app development.

Salaries for Java developers has also been slowly on the decline according to the survey by Indeed.com.

You can also see this steep incline in the last 5 years on Google trends.

Although Java development is declining, the sheer amount of lines of code written Java will mean it will stick around for some time.

Objective-C

Objective-C was the first language you could develop iOS applications in. It was released 1984, over 30 years ago! I’ve had to learn the language due to working at companies with older iOS apps. Swift was released in September of 2014, so any iOS apps written before then will surely have Objective-C in their code base.

Objective C was popularized by a company called NeXT. NeXT developed the first Interface Builder. NeXT was then acquired by Apple in 1996. Apple then merged together some different technologies into a package now known as Xcode. This lead to wide spread adoption of the Objective-C language.

Companies that have iOS apps for a couple of years are likely to have some or a lot of Objective-C in their code base. The migration to Swift is a large engineering effort, so it is usually done in small parts, feature by feature. Working in Objective-C has made me appreciate the progress of iOS development.

Objective-C is a thin layer on top of C code, making it possible to compile any C program with the Objective-C compiler. It’s very verbose and can be difficult to read.

There’s still a large number of tutorials online and libraries that are written in Objective-C. However, since the introduction of Swift, the use of Objective-C has declined greatly over years.

Objective-C uses message passing inspired by the SmallTalk programming language. A developer doesn’t call a method in objective-c, they send a message instead. This has some pros and cons.

Objective-C also requires that the interface and the implementation of a class be declared in separate files. That is while you’ll the interface files always defined in a header (.h) file, while the implementation is always defined in a method file (.m). This makes it easy to read over the interface of any class, but also means you must make two files for every class.

We can see that objective-c’s popularity is declining rapidly on StackOverFlow. It’s only at 7.0% and continues to drop.

zero to app store

StackOverflow Developer Survey From Google Trends we can also see a similar decline over the last 5 years.

zero to app store

Objective-C decline on Google Trends Most Objective-C developers will have to learn Swift as the language continues to decline in usage. Swift is growing as the standard for native iOS development as Apple continues to improve it. However, for those looking to work in the mobile industry, it is likely you will encounter some Objective-C code in your career.

JavaScript

JavaScript is the new kid on the block when it comes to mobile app development. With the release of React Native by Facebook, JavaScript developers rejoice in being able to use a single language for web development, app development and backend development (through libraries like Node.js).

zero to app store

Having one language for all the platforms is shows appealing for companies looking to get more done with their current developers. It is very efficient for developers code in one language throughout the product and limits context switching when coding in different languages.

Although React Native is still an early library and that there are definitely growing pains associated with it, it still shows a lot of promise for mobile app development.

React Native uses the same building blocks as a native application and looks exactly like an Android or iOS app. It also has an amazing hot reload feature that speeds up development exponentially.

Hot Reloading Demonstration React Native also allows you to use native code when you want to. It combines smoothly with components written in Java or Swift, making it simple to integrate into an existing mobile app.

This mobile JavaScript framework is being used by thousands of mobile applications and reputable Fortune 500 companies. These companies include Facebook, Instagram, Pinterest, Skype, Tesla, Uber, Walmart, Wix and more.

Airbnb recently stopped using React Native, realizing that it instead of turning two problems (Android & iOS) into one (React Native), it turned two problems into three (Android, iOS and React Native). So its not a perfect library, but since its still early, I suspect React Native will only become a lot better over time.

The benefit of learning JavaScript is that you’ll be able to transfer those skills beyond mobile app development. JavaScript is by far the most popular language. A survey on StackOverflow stated that over 69% of respondents claiming to use it. The dominance of JavaScript is undisputed and it’s definitely the most popular language in the world currently.

zero to app store

JavaScript salaries have only risen over the last so many years and I predict it will continue to rise year after year. React Native searches by google trends also shows that it’s on a major incline.

zero to app store

Right now is a great time to become a JavaScript developer for mobile app development or in general!

Dart

Dart is a language for mobile apps as well. It has entered the mobile development scene with the release of Flutter by Google.

Dart was released by Google for developers to craft applications on the web, mobile and backend. It has the following main benefits:

Client optimized Rich and powerful frameworks Awesome tooling Dart began being optimized for web apps. It works with Angular Dart to deliver rich and fully featured experiences for the web. With the release of Flutter, Dart enabled developers to do the same with mobile applications.

Dart’s syntax is easy to read and concise. Strict and sound typing allows you identify common errors early, before runtime. It’s large ecosystem consisting of thousands of battle-tested libraries enabled developers to be very productive.

It’s a very fast language as it uses ahead of compilation. Enabling fast startup across mobile apps and web apps. Dart compiles to ARM and x86 code, so it runs natively on Android and iOS. For the web Dart will transpiles into JavaScript.

I found Dart easy to learn and that’s by design. The syntax is similar to C++ or Java. Programmers that have written in those languages will find the language very to easy to pick up.

Flutter allows you to build awesome amazing mobile apps from a single code base. This is huge for productivity. Engineering teams can code once and deploy twice. This cuts down engineering time and costs greatly, eliminating the need to maintain multiple code bases.

Flutter has hot reload, which allows you develop rapidly. Its user interface is also simply express in Dart code. All of Flutters UI widgets are fully native performant.

The documentation for Flutter is also comprehensive. They have sections dedicated to developers switching from a variety of different platforms including:

  • iOS
  • Android
  • Web
  • React Native
  • Xamarin

Although its still a very new platform, my developer experience with Flutter was extremely pleasant. I found it easy to pick up and the documentation clear and helpful.

The development community around Flutter is also growing rapidly. New libraries and vendors are popping up regularly for Flutter.

Flutter is being used by Alibaba, Google Ads, AppTree and many other companies.

Flutter is rising in popularity and it will be exciting to see where it goes.

If you liked this post, you'll love my free guide: Secrets To iOS Development. Speed up your learning curve - hundreds of students have already downloaded. Thanks for reading!
Profile Picture of Eddy Chung

Eddy Chung

I am a professional iOS developer in Silicon Valley. I teach iOS development on ZeroToAppStore.com. If you'd like to learn more about me click here or you can contact me at: eddy@zerotoappstore.com

Similar Posts