This article is published on my wechat official account at the same time. You can follow it by searching “Guo Lin” on wechat. The article will be updated every working day.

Kotlin and Flutter are two of the hottest technologies in mobile application development. Kotlin was developed by Jetbrains and subsequently supported by Google, while Flutter was developed by Google itself. According to Google’s current official attitude, both technologies are highly promising and Google is investing a lot of resources in them. But because of Google’s attitude, many developers are confused: Should I learn Kotlin or should I learn Flutter?

About this question, I also have been asked countless times, but each answer can only reply a few words simply, can not be comprehensive summary, may not do until the key. So I have been planning to write an article that compares Kotlin and Flutter in detail to help you answer your questions.

Coincidentally, while browsing the web some time ago, I came across an English article that specifically analyzed this issue in depth. After reading it, I felt that I could not write a better and more comprehensive article, so I decided to directly translate and share this article. I believe it will be of great help to you.

The original address of this article is goobar. IO /2019/06/13/…

Should I take Kotlin or study Flutter?

The question depends.

But before we get into specifics, it’s better to examine whether this is an appropriate question. Because comparing Kotlin and Flutter is, in a way, like comparing apples and oranges.

Conceptually, Kotlin is a programming language, while Flutter is a cross-platform UI toolset.

However, the differences between the two technologies are so great that this question is a huge one in itself, so to answer it well, we must first understand some other relevant questions.

Why do you want to learn Kotlin or Flutter?

First of all, the first question you should ask yourself is: “Why should I study Kotlin or Flutter? What can I do with it?” This problem can be expanded into the following three points:

  • Do you want to learn mobile development?
  • Would you like to get a job as a mobile developer?
  • Do you want to develop your own mobile product as an individual developer or as a small team?

Do you want to learn mobile development?

If your primary goal is to dabbled in mobile development and build a small side project, then Kotlin or Flutter is not a big deal.

However, it is important to remember that when you choose between Flutter and Kotlin, you are choosing:

  • Flutter/Dart
  • iOS/Swift/Objective-C
  • Android/Kotlin/Java

Flutter is a complete application development toolset that includes the use of Dart as a programming language, a set of UI components, and unique programming patterns, best practice tips, debugging methods, workflows, and more.

To compare the Flutter to other platform toolsets, you need to have a complete understanding of the ecology in which they live.

Which is more likely to get a job, Kotlin or Flutter?

If your primary goal is to get a job as a mobile developer, a good choice is to see which skills are in higher demand.

A LinkedIn search for jobs related to Kotlin and Flutter yields the following results (data are limited to the United States as of June 2019) :

  • Flutter: 315 results
  • Kotlin: 3342 results

The Flutter is, after all, a relatively new technology, and it is costly for a mobile developer to learn. Kotlin, by contrast, is easy for Android developers to pick up. Perhaps for these reasons, the number of jobs at Flutter is relatively low.

And the difference in the number of jobs could mean two things at once:

  1. Finding a job with Flutter can be difficult in your area.
  2. If you already know the Flutter well, it will be easier to get a job in some areas where the demand for Flutter is high.

This may seem paradoxical, and the feasibility of this plan depends on your current living situation, the urgency of your job search, and other factors.

On the other hand, there’s still a lot of demand for native Android developers, and Kotlin is easier for more people to learn. Of course, a large number of jobs will mean more choices as well as more competitors.

Which is better for individuals or small teams to develop products, Kotlin or Flutter?

If you want to use Kotlin or Flutter to develop an app of your own and get into business, then you can forget all that and start thinking about a more complete map.

If you’re working on a mobile product, chances are you want it to run on both iOS and Android.

With Flutter you can do this easily, while with Kotlin it is very difficult.

If you want to use Kotlin for cross-platform development, you can build a Kotlin multi-platform project, or you can develop a separate set of projects for iOS and Android, but either way, You need to know a lot about native development for both iOS and Android.

So if you have a very specific goal of developing a cross-platform application in a low cost way, Flutter is definitely a better choice. We’ll discuss this in more detail later.

This question can also be expanded in more detail into the following 5 points:

  • Want to build a great Android app?
  • Want to build a great iOS app?
  • Want to build an app that runs on both iOS and Android?
  • Do you want your application to run on more than just mobile platforms?
  • Do you need to write your own backend server program?

Want to build a great Android app?

If your goal is to develop a great Android app that takes advantage of the latest features that the Android platform has to offer, then develop native Android.

Of course, this doesn’t mean you have to use the Android+Kotlin combination, the Android+Java combination will work perfectly for a long time to come. However, I do believe that learning Kotlin will help you enjoy developing code more.

Want to build a great iOS app?

Similarly, if your goal is to develop a great iOS app with all the latest features that the platform has to offer, then my recommendation is to use Swift for native iOS development.

Want to build an app that runs on both iOS and Android?

This becomes interesting if you want to develop an application that can run on both mobile platforms at the same time, because you will have three options between Kotlin and Flutter:

  1. Both Android and iOS apps are developed in a native way.
  2. Develop two native applications, but use the Kotlin multi-platform project to share code.
  3. Develop a Flutter application.

Using native development at the same time requires you or your team to implement it separately between the two platforms without any code sharing. If you’re a solo developer, this is probably the least effective option, unless you’re proficient in native development for both iOS and Android. But it’s also the safest option because native development is the most mature form of development, neither Apple nor Google are likely to abandon native development support in the future, and you’ll be able to use the latest features of each platform as quickly as possible.

If you want to develop two native applications but want to share as much code as possible between the two platforms, consider building a Kotlin multi-platform project. This may not be the best option for inexperienced developers, however, as Kotlin’s multi-platform capabilities are still new and there are few tools and third-party libraries available.

Developing a Flutter application is probably the fastest way to get your application running on both iOS and Android, especially if you are a personal developer, using Flutter will save you a lot of development time. In addition, since you don’t have to deal with much of the system’s underlying apis, and you don’t have to worry about the visual and user experience differences between platforms, you can save a lot of time writing platform-specific optimized code.

Do you want your application to run on more than just mobile platforms?

The Flutter team has not limited its functionality solely to mobile platforms, but has extended it further to the web, which is currently under development. The convenience that Flutter provides is the ability to use the same code to run applications on different platforms, and the more platforms that Flutter supports, the more cost-effective it becomes.

You can also consider using the Kotlin Multi-platform project to support web platform development, but always remember that the core idea of the Kotlin multi-platform project is to share code, so you will still have to write native code for each platform, such as developing the UI and making calls to the shared code. Note that the more platforms you have to support, the more expensive this option will become.

Do you need to write your own backend server program?

And perhaps less commonly, do you need to write your own backend server program? Most companies have dedicated server personnel to develop back-end server programs. If you need to write your own server programs, Kotlin is worth studying because you can easily write server-side programs with the help of the Ktor framework. Mastering Kotlin language is a prerequisite for using the Ktor framework.

One important factor to take into account in deciding between Kotlin and Flutter is your current level of development experience and technical competence. Two possibilities are discussed here:

  • Are you already an Android developer?
  • Are you already an iOS developer?

Are you already an Android developer?

If you are already familiar with Android native development, learning Kotlin will be many times faster than learning Flutter. Kotlin will iterate on what you already know and make your Android application development more efficient.

In addition, learning Kotlin also gives you the ability to develop a background server program. You can quickly develop a simple background server program with the help of the Ktor framework, thus making your workflow much simpler.

Learning Flutter requires you to master a new language (Dart) and to learn a whole new development ecology, which will take many times longer than learning Kotlin.

If you don’t want to enjoy the cross-platform nature of Flutter, there is no point in using Flutter to develop an application that is proprietary to the Android platform.

Are you already an iOS developer?

If you’re an iOS developer trying to figure out whether you should learn Flutter or Kotlin, it’s a little different.

If you want to continue to use the native way of developing iOS applications, neither Kotlin nor Flutter will do much good. But Kotlin at least gives you the ability to write back-end server programs.

If you want to develop a cross-platform application, you will need to choose between the Kotlin Multi-platform project and the Flutter.

As discussed earlier, Flutter applies a separate development process to two mobile platforms, whereas Kotlin multi-platform projects require some knowledge of Kotlin and the native development of each platform.

So in this case, either way you have to learn a new language (Dart or Kotlin) and a new development framework (Flutter or Android).

Have you considered the risks of choosing Kotlin or Flutter?

Every time you’re ready to learn a new technique, there’s a risk involved. In the choice of Kotlin and Flutter, there are some risks to consider.

Kotlin is already a fairly stable technology and has been supporting Android development for over two years. It is fully compatible with existing Android engineering code and is a very low-risk solution that will have little impact on the stability of your current project.

The Flutter, on the other hand, is a relatively risky technology because it is completely removed from the native application development approach. There are few successful projects using the Flutter technology and few developers who are familiar with the technology, which may make recruitment difficult and may require existing teams to learn the new technology.

In addition, Google has a history of shutting down projects without notice, so some might wonder if Google might drop its support for FLutter or Kotlin in the future.

In fact, both the Flutter and Kotlin are now of such scale that Google is unlikely to give them up any time soon, so whatever you choose, don’t worry about it.

So, will you learn Kotlin or Flutter?

Reading here, this article may have given you some inspiration on the choice of Kotlin and Flutter, but in the end there is no standard answer. So if you want me to make a conclusion, my answer is still: it depends.

The specific situation finally to a simple summary:

If you want to quickly land a job as a mobile developer, it’s recommended to learn Kotlin for native Android development (or Swift for iOS).

If you want to build your own cross-platform app quickly, try Flutter.

If your team wants to build cross-platform applications, consider using Flutter, native development, and the Kotlin Multi-platform Project. All three options are available, depending on the size and structure of your team, and the project itself.

If you or your team want to reuse important functional logic across multiple platforms, it is recommended to look at the Kotlin Multi-platform project.

Follow my technical public number “Guo Lin”, every day there are quality technical articles push.