Introduction
What is Kotlin?
It is a new programming language built by JetBrains, and as you may already know, Google announced at Google I/O 2017, that they will now officially support this language. It is inspired by existing languages such as Java, C#, JavaScript, Scala and Groovy.
What are the advantages of using Kotlin?
- it’s a more concise language (40% cut in the number of lines of code)
- less NullPointerException errors by making all types non-nullable by default
- New features like:
- smart casting
- high order functions
- Coroutines
- Lambdas, etc
Hello World, Kotlin
Let’s create a Hello World project. Create a new project by checking Kotlin option that is available starting with Android Studio 3.0 (Note! If you already have a project and want to convert it to Kotlin, Android Studio has an option to do this too, but we will talk about it in another post).
Step 1
File – New – New Project
Step 2
Step 3
Step 4
Step 5
Step 6
Notice that a kotlin-android plugin was added to the module gradle file.
Step 7
Also, notice these changes in the project build.gradle file.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="ro.funcode.kotlinproject.MainActivity"> <TextView android:id="@+id/textViewKotlin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
MainActivity
Now, in the MainActivity class, the onCreate() method, looks like this:
package ro.funcode.kotlinproject import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textViewKotlin.setText("Kotlin is great!"); } }
As you can see there are changes in the writing (obviously :P):
- instead of “MainActivity extends AppCompatActivity” now we have to use “:“
- onCreate is now a function
- the onCreate parameters look like this now “savedInstanceState: Bundle?” (we will get more into this in other posts)
COOL FACT: Notice that we could set a text on our TextView without using findViewById()! We just wrote the id itself and set the text and that’s it. Cool, ha? :)