One of the first choices I had to make when going into Android app development was which programing language to choose. After this, it was a matter of where to get information about my chosen language. Then actually getting started with my chosen language.
First thing is first, which is the best programming language for Android app development. Read on.
I recommend Android Studio hands-down for anyone who wants to develop Android apps.
Android Studio is an IDE. This means it offers an Integrated Development Environment.
The IDE comes with Android SDK, a valuable set of tools for developing Android apps. In short, Android Studio has everything needed to start developing apps for Android. This includes the Android Virtual Device. This is an emulator for testing apps in the midst of being developed.
I left the checkboxes ticked for the additional tools during the installation of Android Studio. It is possible to add them later, but that only complicates matters.
A word of warning, Java needs installing on the computer when using Android Studio. This means installing the Java Development Kit if it is not installed. This interprets the code written and then goes on to compile it so the CPU understands it.
Android Studio has plenty of tutorials and documentation. It also gives access to the biggest libraries in programming languages along with the free code. It makes life easier for coders, offering such as:
- A visual designer;
- Suggestions as you work;
- Features that are powerful and advanced;
- Access to cloud storage.
Choosing the Right Programming Language
Just because a language was right for me it does not necessarily mean my choice is right for you. So how do you choose a language?
I can testify that learning a programming language and coding is complicated. There is no getting away from this fact. Choosing the most suitable language will depend on the type of Android application you are developing.
For instance, if I were developing an Android app that was a 3D adventure or first-person shooting game, Unity and C# would be my choice of programming language.
If I was developing a very simple app that relied upon the accelerometer or the camera of the tablet or phone, I might go with PhoneGap. It all hinges on the type of app.
Before choosing the right programming language, I took a look at all the popular choices. They are:
- Java – The most popular choice for developing Android apps, plus it has the support of Android Studio;
- C/C++ – Also supports Android Studio;
- C# – Supports Unity for game development;
- Corona/LUA – a cross-platform tool;
- Kotlin – Similar to Java but easier to use;
If you are new to coding and programming language, you might be scratching your head and furrowing your brow at the above names. Yes, they are all names for coding language used for developing Android apps. I was amazed at the choices out there.
Now I am not saying that you have to learn them all inside out before choosing which language to use. What I am saying is that you need to check them out briefly before going ahead and making your choice.
For instance, you might want to develop an Android app and want a language that has support for Android Studio. You might want the game to be compatible with the game engine Unity. The game or app you are building will largely depend on the language you choose.
The Choices of Programming Language
Now I will give you information in more detail about the different programming languages out there, along with the pros and cons of each.
Sun Microsystems launched Java in 1995. Today numerous programming applications utilize the language. Java is on just about all devices, including smart phones, tablets, and PCs.
I would class Java as the king of programming languages. Java was the original language for game developers and remains the most popular option.
Google classifies it as an official language for the development of Android apps. It is also the most chosen by developers with games in the Play Store.
Java relies on virtual machine. This means that it does not compile to processor code that is native. The virtual machine understands the Java bytecode format. The virtual machine is able to interpret the bytecode, the set of instructions, and then executes the program.
There are two separate types of compilation of data used by virtual machines, Just-in-time and ahead-of-time, with the latter being faster.
Developers have the opportunity to develop apps for Android using Windows, OS X or Linux, while the Java compiler turns the source code into bytecode, which is executed on Androids virtual machine.
The original virtual machine on Android phones and tablets has the name of Dalvik. The next generation VM is ART.
On the downside, Java is among the most difficult programming languages to learn. On hearing this, I was shaking in my shoes, but it did not stop me from delving deeper into it.
There are pros and cons to using it, as with every programming language.
- Lots of free code available for games;
- Plenty of tutorials and how-to’s;
- Google and the Play Store love it;
- One of the most widely used to make Android apps;
- Supports Android Studio;
- It is versatile.
- Comes with a learning curve that is steep;
- Many confusing topics to learn as it is an object-oriented programming language;
- It is not the easiest computer language to read;
- Takes a long time to learn;
- Updates are rapid which makes it difficult to keep up.
On saying the above, I encourage you not to put off learning Java if it turns out to be the best language for your need and find it fun to work with.
It does work with Android Studio. This is a big plus as far as I am concerned as it brings a visual designer along with features that are powerful and advanced. Android Studio also comes with everything needed for starting to code. Another huge bonus of Java is there are many tutorials online for starters.
Basic is short for “Beginners All-purpose Symbolic Instruction Code”. This is a computer language that is a pleasure to use. When I was learning how to code this was my choice, to begin with.
Now I am going to tell you about another option related to Basic you might want to consider for developing Android apps, B4A.
B4A is BASIC 4 Android. The name says it all. It is BASIC but for Android apps.
Again, it comes with both pros and cons.
- BASIC 4 Android allows for developing Android apps;
- It is a good way to start coding;
- Powerful apps can be developed using BASIC 4 Android;
- The community is supportive.
- Basic does not support Android Studio;
- BASIC 4 Android is not the most popular choice for coding Android apps;
- This is not suitable for developing high-end Android apps;
- It is very difficult to develop apps with the “Material Design” specifications;
- It is not free to use.
Basic, is, basic among the choices of computer language out there. However, it is one of the easiest to use so it is worth checking out. More so if you are not developing a high-end app for Android.
I have included C/C++ on the list of computer languages, as after all, it is a language. On saying this, it is not an obvious choice for developing Apps on the Android platform.
While C/C++ is not often the first choice of programming language among developers, there are benefits to learning and using it.
One of the biggest benefits is coding is faster with C/C++ thanks to C++ not having a standard user interface. It is also worth mentioning that it does not have garbage collection so it has a memory footprint that is smaller. Native machine code is useful in gaming, signal processing, and physics simulation. Java can do the same but there is a little bit of an overhead.
There is support for Android Studio with C/C++. However, this is through the Android NDK. To put this in simple terms, the code written will not run on Java Virtual Machine. Instead, it runs natively.
C/C++ is compatible with Microsoft Visual Studio. It may be compiled to work on Android apps using the CLANG tool chain. This is a tool developed by Microsoft when they worked on Android app development. Visual Studio offers an emulator for Android that is fast, plus Android Development Kits.
- I found that when writing code for Android games using C/C++ there is more control over memory thanks to it running natively on the device;
- When developing a 3D game performance is better;
- Access many libraries written using C/C++.
- Not the most popular choice among Android developers;
- Does not run using Java Virtual Machine.
C# is an object-oriented version of C/C++ that is pure. I also found it much easier to utilize.
This language combines the power offered by C++ with ease of use that Visual Basic offers while reading like Java, but easier. Anyone new to learning coding might want to start with C# when dipping their toes in the water.
I recommend starting out using a combination of C# and Unity as they work extremely well together. Unity is a game engine perfect for 3D games offering physics. What I love about Unity is the fact that it is free and it is very easy to develop a 3D game. The basics of a 3D game can be obtained in as little as 1 hour thanks to a few lines of code.
- C# is easy to get into and use;
- It is object-oriented;
- It is as powerful as C++;
- It is easy to read;
- No memory leaks thanks to garbage cleaning;
- It works very well with Unity game engine;
- C# and Unity are good together for developing 3D games but not so good for standard apps;
- Does not conform to Material Design language of Google;
- It limits employment chances as a professional Android developer.
I recommend C# and Unity if developing an Android 3D game as it is easy and enjoyable with fast results. C# is also a terrific choice for learning to code.
Corona is among the simpler choices for developing Android apps. On hearing this, I was surprised to find out that it offered good power and control.
Coding in Corona is LUA. This is easier to use than Java as it is used with the Corona SDK.
There are some benefits to using Corona SDK for developing Android apps. The people behind Corona say that their product allows developers to work on mobile apps with ten times the speed. They also brag complex functionalities can be incorporated with only a few lines of code. It has a simulator built-in, which means developers can see how the app or game is progressing.
I made a comparison of Corona SDK with other SDKs and found it offers faster FPS (Frame per second). The advantage to this is ensuring the app runs smoother and more consistently. It is a good choice for developing games on Android owing to the fact screen resolution can be changed easily.
Corona also has features for graphic content and interactivity in Android games and apps. It also provides a huge range of design choices.
Corona has a community of developers that are growing along with a mutual repository for codes, code snippets, and knowledge sharing. It also has support for monetizing apps built-in, including app purchases, banner ads and a choice of currency.
Native libraries are supported so publishing games on multiple platforms is easy. Corona is generally used in games; however, I found it possible to use it in other apps too. A good text editor is needed, such as Notepad++. This is used for writing the code. As with other programming languages, there are both pros and cons to using Corona/LUA.
- Offers an easy introduction into coding;
- It is a very fast programming language to use;
- Support for all of the native libraries which means the ability to publish on multiple platforms;
- Ability to run code using an emulator without compiling.
- A text editor is needed for entering the code, I recommend Notepad++;
- The language does need some coding skills to use;
- It is limited compared to some of the other programming languages;
- Features such as in-app purchases or using Android API mean users have to pay a fee.
Having to download an additional text editor is a little bit tiresome. This language may not be suitable for those who are new to coding, as some skills are required. However, it does have support for native libraries for multiple platforms and is easier to use than Java.
Kotlin is relatively new to the world of programming languages but has come on in leaps and bounds. Since it came into the spotlight, it has become something of an official language when coding Android apps.
Kotlin relies on Java Virtual Machine. One of the main things I love about Kotlin is that it does not lead to any slowdown. Neither does it cause file sizes to increase. The computer language is not difficult to read using less “boiler plate”.
There are factors why you might want to choose Kotlin over one of the other programming languages. While being a relatively new addition to programming languages, Kotlin was only released after having gone through numerous stages before its final release. I did some homework and found that it had been several years in the alpha stage, before going on to beta and then the final version.
Kotlin has an IDE plugin that works very smoothly. It includes numerous features offered in Java. Another similarity it shares with Java is the compilation time. In some cases, I found compiling in Kotlin faster than in Java.
Android Studio and Kotlin integrate seamlessly. Even when just starting out with the language it only takes around 10 minutes to create a project to get started. The language supports Kotlin Android Extensions along with Anko libraries and others.
Errors such as null point’s exceptions are not an issue with Kotlin. Overall, it is a very easy programming language for first-time users developing Android apps. Now I will highlight the pros and cons.
- The language supports Java Virtual Machine;
- Does not cause file sizes to increase or bring about any slowdown;
- It is streamlined with it being easy to read;
- Ideal for anyone learning to code for Android apps;
- Supports Android Studio.
- While it is easy to learn it is not as easy as learning C# along with Unity;
- Virtually no community support;
- Android Studio beta version is needed for support out of the box.
Kotlin is worth considering by anyone new to coding Android apps but there is little by way of community support. It does have support for Android Studio and I would consider it an entry point.
I had an interest in looking at PhoneGap as a computer language as I already knew how to build interactive websites. This gave me a good starting point with PhoneGap.
With PhoneGap, the difference is it is packaged like an Android app and shown through “Web View”.
PhoneGap, as the name suggests, bridges the gap, giving Android app developers access to features of the phone such as the camera or the accelerometer.
I have included PhoneGap on the list of the best programming languages for Android apps. However, it does not constitute a true programming language. I would not call anyone who uses PhoneGap a true Android app developer. On saying this, if only the basics are required it may be suitable.
Now I will summarize the pros and cons of PhoneGap.
- PhoneGap is not a true programming language for Android app development.
Factors to Consider When Choosing a Programming Language
I would like to point out some of the factors to consider when choosing a programming language for the development of Android apps.
Is the Language Fun to Use?
Above all else, when choosing a programming language I think one of the most important factors is whether the language is fun to use.
It is no good choosing a programming language and sticking with it if it is tedious to use.
The most apt is the one you have fun with, full stop. As when learning anything, fun plays a huge role. If I find something dull and boring it is not fun and if I am not having fun learning becomes more difficult. If you find the language fun, there is more chance of what you are learning sticking in your mind. You will also want to use it more and find learning new things much easier.
Is the Language Suitable for the Task?
This is another important factor when choosing the best programming language for Android app development.
Finding a programming language that is fun to use is important. However, if it does not suit the task, it is no good regardless of the fun factor.
With this in mind, it is important to find a language suitable for your project but it is also just as important to find one that is fun to use. This can only be decided through trial and error by trialing the different languages.
Is There Plenty of Help Out There?
When I was starting out in coding, I needed help and lots of it.
This brings up another crucial factor, the amount of help available online. I am talking about tutorials and video tutorials, books, forums, support centers, and documentation.
Therefore, choosing a language you can have fun with, which is suited for the project and which offers plenty of help and support is important.
I will tell you now that getting into Android app development, learning a new programming language is difficult, and it requires dedication. I will also inform you that it is extremely satisfying and well worth the dedication and time spent learning.
If you have made it this far and you are still reading, you have proven you have the dedication needed to become an Android app developer. All you need to do now is stick with your chosen programming language and start off small.
Take full advantage of all the books, tutorials, forums, documentation and help videos available online.
When starting out do not be frightened to play around and try out something to find out what happens. Build up from a small app that is straightforward. Mess around with the text in the app, change colors, add in buttons and rules and you will be well on your way to developing apps for Android.
Make a pot of coffee, pull up a comfortable chair in front of your computer and get typing out the code. Before you know it you will have written, compiled and built your very first Android app or game and can call yourself an Android app developer. Good luck.