In terms of mobile application development, Kotlin and Flutter are currently two hotter technologies. Among them, Kotlin was developed by Jetbrains and later strongly supported by Google, while Flutter was independently developed by Google itself. Judging from the current official attitude of Google, these two technologies are infinitely optimistic, and Google has also invested a lot of resources in them. But it is precisely because of Google’s attitude that many developers have become confused: Should I learn Kotlin or Flutter?
I have also been asked countless times on this question, but I can only reply a few simple sentences each time, which cannot be summarized in a comprehensive way, and may not be able to reach the point. Therefore, I have always prepared an article to compare Kotlin and Flutter in detail to help you answer your questions.
Coincidentally, while browsing the web some time ago, I accidentally saw an English article dedicated to an in-depth analysis of this issue. After reading it, I felt that I could not write a better and more comprehensive article than this, so I decided to write this directly. This article is translated and shared, I believe it will be helpful to everyone.
1. Should I choose Kotlin or Flutter?
This question depends on the situation.
However, before discussing the specific situation, we should first examine whether this is an appropriate question. Because comparing Kotlin and Flutter is like comparing apples and oranges to a certain extent.
Conceptually, Kotlin is a programming language, and Flutter is a cross-platform UI toolkit.
However, due to the huge difference between the two technologies, the problem itself is actually a huge problem. Therefore, in order to answer this question well, we must first understand some other related issues.
2. Why do you want to learn Kotlin or Flutter?
First of all, the first question you have to ask yourself is: “Why should I learn Kotlin or Flutter? What can I do after I learn it?” This question can be expanded into the following 3 points.
- Do you want to learn mobile development?
- Do you want to get a job as a mobile developer?
- Do you want to develop your own mobile product as an individual developer or a small team?
3. Do you want to learn mobile development?
If your primary goal is to dabble in mobile development and be able to build a small side project, then choosing Kotlin or Flutter is actually not much different.
However, it should be remembered that when you choose between Flutter and Kotlin, you are actually choosing.
Flutter is a complete application development tool set, which includes the use of Dart as a programming language, a series of UI components, and some unique programming modes, best practice techniques, debugging methods, workflows, etc.
To compare Flutter with other platform toolsets, you also need to have a more complete understanding of the ecology they are in.
4. Which is easier to get a job, Kotlin or Flutter?
If your primary goal is to get a job as a mobile developer, then a better choice is to see which skills are more in demand.
Search for jobs related to Kotlin and Flutter on LinkedIn, and the results are as follows (the data is limited to the US region, and the time is as of June 2019).
- Flutter 315 results
- Kotlin 3342 results
After all, Flutter is still a relatively new technology, and for a mobile developer, the learning cost is relatively huge. In contrast, Kotlin is very easy to use for Android developers. Perhaps because of these reasons, Flutter has relatively fewer jobs.
The difference in the number of jobs may mean both things at the same time.
- In your area, it is relatively difficult to find a Flutter-related job.
- If you already know enough about Flutter, it will be easier to get a job in some areas where there is a high demand for Flutter.
This seems to be somewhat contradictory, and the feasibility of this plan depends on your current living conditions, the urgency of finding a job and other factors.
On the other hand, there is still a large demand for recruiting Android native developers, and Kotlin is easier to learn for more people. Of course, a large number of jobs means that there will be more choices, and it also means that there will be more competitors.
5. Which Kotlin or Flutter is more suitable for individuals or small teams to develop products?
If you want to use Kotlin or Flutter to develop your own application and put it into commercial operation, then you can forget all the things discussed just now, let’s rethink a more complete layout.
If you are developing a mobile product, you most likely want it to run on both iOS and Android platforms.
You can do this easily with Flutter, but it is very difficult with Kotlin.
If you want to use Kotlin for cross-platform development, you can build a Kotlin multi-platform project, or you can develop a set of iOS and Android project projects separately, but no matter which method you use, you must also understand the native iOS and Android Development has enough understanding.
So, if your goal is very clear, is to develop a cross-platform application in a low-cost way, then Flutter is undoubtedly a more suitable choice. We will discuss this in more detail later.
Regarding this question, it can also be expanded into the following 5 points in more detail.
- Do you want to develop a great Android application?
- Do you want to develop a great iOS app?
- Do you want to develop an application that can run on both iOS and Android platforms?
- Do you want your application to not only run on mobile platforms?
- Do you need to write the background server program yourself?
6. Do you want to develop a great Android application?
If your goal is to develop an excellent Android application, and use the latest features provided to us by the Android platform, then please choose native Android development.
Of course, this does not mean that you have to use the combination of Android+Kotlin. The combination of Android+Java will still work perfectly for a long time in the future. However, I firmly believe that learning Kotlin can make you more enjoy the code development process.
7. Do you want to develop a great iOS app?
Similarly, if your goal is to develop a great iOS application and use the latest features provided by the platform, then my suggestion is to use the Swift language for native iOS development.
8. Do you want to develop an application that can run on both iOS and Android platforms?
If you want to develop an application that can run on both mobile platforms at the same time, this question becomes interesting, because you will have 3 options for Kotlin and Flutter.
- Both Android and iOS applications use native development methods.
- Develop two native applications, but use Kotlin multi-platform projects to share code.
- Develop a Flutter application.
At the same time, the method of using native development requires you or your team to implement the two platforms separately, and there is no code sharing. If you are an individual developer, this may be the most inefficient option, unless you are very proficient in both iOS and Android native development. But at the same time, this is also the safest option, because native development is the most mature way of development. No matter Apple or Google, it is impossible to give up support for native development in the future, and you can use all kinds of options as soon as possible. The latest features of the platform.
And if you want to develop two native applications, but share as much code between the two platforms as possible, then you can consider building a Kotlin multi-platform project. However, this should not be the best option for inexperienced developers, because Kotlin’s multi-platform features are still very new, and there are very few tools and third-party libraries that can be used.
And developing a Flutter application should be the fastest way to make your application run on both iOS and Android platforms, especially when you are an individual developer, using Flutter will save a lot of development time. In addition, because you don’t need to touch the underlying APIs of the system as much, and don’t care about the visual experience and user experience differences between different platforms, you can save a lot of time to write platform-specific optimization code.
9. Do you want your application to not only run on mobile platforms?
The Flutter team did not just limit the function to the mobile platform, but further extended it to the web platform. Of course, this function is still under development. The convenience that Flutter provides us is that we can use the same code to run applications on different platforms, and as Flutter supports more platforms, the cost-effectiveness of using Flutter will be higher.
Of course, you can also consider using Kotlin multi-platform projects to support the development of web platforms, but always remember that the core idea of Kotlin multi-platform projects is to share code, so you still have to write native code for each platform, such as developing UI Interface, and call shared code, etc. Note that the more platforms you have to support, the greater the cost of this solution.
10. Do you need to write the background server program yourself?
In addition, there may be a relatively rare scenario, do you need to write the background server program yourself? General companies will have dedicated server personnel to develop back-end server programs, and if you need to write server programs yourself, Kotlin is worth studying, because you can easily write server-side programs with the help of Ktor framework, and master the Kotlin language It is a prerequisite for using the Ktor framework.
Regarding whether to choose Kotlin or Flutter, we also need to take an important factor into consideration, that is, what level of your current development experience and technical capabilities are. The following two possibilities are discussed here.
- Are you already an Android developer?
- Are you already an iOS developer?
11. Are you already an Android developer?
If you are already very familiar with Android native development, learning Kotlin will be many times faster than learning Flutter. Kotlin will iterate on the basis of your current knowledge and make your Android program development more efficient.
In addition, learning Kotlin can also give you the ability to develop back-end server programs. You can quickly develop a simple back-end server program with the help of the Ktor framework, thus making your workflow easier.
And learning Flutter requires you to master a new language (Dart), and also to understand a new development ecology, which will take many times longer than learning Kotlin.
If you don’t want to enjoy the convenience of Flutter’s cross-platform features, it is meaningless to use Flutter to develop exclusive applications for the Android platform.
12. Are you already an iOS developer?
If you are an iOS developer and now want to know whether you should learn Flutter or Kotlin, the situation is a little different.
If you want to continue to use native methods to develop iOS programs, neither Kotlin nor Flutter will actually do much. But Kotlin can at least provide you with the ability to write backend server programs.
And if you want to develop cross-platform applications, then you need to choose between Kotlin multi-platform projects and Flutter.
As discussed earlier, Flutter applies a set of independent development processes to two mobile platforms, while Kotlin multi-platform projects require you to have a certain understanding of Kotlin and the native development of each platform.
So in this case, you must learn a new language (Dart or Kotlin) and a new development framework (Flutter or Android) no matter what.
13. Have you considered the risks of choosing Kotlin or Flutter?
Whenever you are ready to learn a new technology, it will be accompanied by certain risks. In the choice of Kotlin and Flutter, there are some risks that are worth considering.
Kotlin is already a fairly stable technology and has supported the development of the Android platform for more than two years. It can be fully compatible with the existing Android project code. It is a very low-risk solution and will not affect the stability of your current project.
In comparison, Flutter is a relatively high-risk technology because it has completely separated from the native development method of applications. At present, there are fewer successful project cases using Flutter technology, and there are fewer developers who are very familiar with this technology. This will cause a certain degree of difficulty in recruitment, and it may require existing teams to learn this new technology.
In addition, Google has a history of shutting down a project without any notice, so some people may worry about whether Google may give up support for FLutter or Kotlin in the future.
In fact, both Flutter and Kotlin already have a certain scale. Google is unlikely to give up these two technologies in the short term, so no matter what your choice is, you don’t have to worry about this.
14. So, will you learn Kotlin or Flutter?
Seeing this, perhaps this article has already brought you some inspiration on the choice of Kotlin and Flutter, but it ultimately has no standard answer. So if you want me to give a conclusion, my answer is still, it depends on the situation.
Let’s briefly summarize the specific situation at the end.
- If you want to quickly find a job as a mobile developer, it is recommended to learn Kotlin for native Android development (or Swift for iOS development).
- If you want to quickly build your own cross-platform application, I suggest you try Flutter.
- If your team wants to build cross-platform applications, you can consider using Flutter, native development, and Kotlin multi-platform projects. These three options are actually feasible, and the specific choice depends on the size and structure of your team, as well as the project itself.
- If you or your team want to reuse some important functional logic on multiple platforms, it is recommended to learn about the Kotlin multi-platform project.