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:
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 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.
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:
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
Its popularity in the last 5 years has been a steep incline according to Google Trends.
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 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.
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:
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 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.
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 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.
StackOverflow Developer Survey From Google Trends we can also see a similar decline over the last 5 years.
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.
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.
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.
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.
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:
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.