Java vs Kotlin
Selamat pagi teman-teman , berjumpa lagi dengan Saya sebagai Android Developer. Kali ini Saya akan sharing ilmu mengenai perbedaan source code Java dan Kotlin untuk membuat aplikasi android. Sejak dilirisnya IDE Android Studio 3.0 ( Oktober 2017 ) penasaran kan dengan bhs pemprograman kotlin atau mungkin ada yang mau migrasi dari Java ke Kotlin. Kebetulan sekali nih Kita akan membahas perbedaan Java dan Kotlin.
Sebagai android developer yang pernah menggunakan bahasa pemprograman Java pasti sudah sangat familiar dengan NullPointerException(NPE). Nah dengan Kotlin tak perlu khawatir lagi dengan masalah NPE, karena kotlin telah memiliki fitur Null Safety sebagai salah satu keunggulannya lho teman -teman. Kotlin mampu membedakan objek yang boleh dan tidak boleh null ketika objek Kita buat.
Lalu, apa saja yang membedakan kotlin tersebut dibandingkan dengan bahasa pemprograman java ? Mari kita bahas satu persatu teman-teman.
1.SEMICOLON
JAVA
//menggunakan semicolon (;)println("Hello World");
KOTLIN
//tidak menggunakan semicolon (;)println("Hello World")
2. DEKLARASI VARIABEL
JAVA
//variabel yang nilai nya tidak dapat diubah (immutable)final String name = "Nanda Adisaputra";//variabel yang nilai nya dapat diubah (mutable)String name = "Nanda Adisaputra";
KOTLIN
//variabel yang nilai nya dapat diubah (immutable)val name = "Nanda Adisaputra"//variabel yang nilainya dapat diubah(mutable)var name = "Nanda Adisaputra"
name = "Nanda"
3. INTENT
Perpindahan dari satu Activity ke Activity lainnya baik dengan ataupun tanpa data
JAVA
//Intent untuk pindah activity ke Activity keduaIntent Pindah = new Intent(Activity pertama.this,Activity Kedua.class);
startActivity(Pindah);
finish();
KOTLIN
Ada 3 opsi yang dapat kalian pilih//tanpa menggunakan library anko commons val intent = Intent(this, ActivityKedua::class.java)
startActivity(intent)//menggunakan library anko commonsstartActivity(intentFor<ActivityKedua>())//menggunakan library anko commonsstartActivity<ActivityKedua>()
4. LAMBDA
JAVA
//deklarasi id menggunakan library butterknife@BindView(R.id.btn_login)
Button btnLogin;btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//tambahkan aksinya apa disini
}
});
KOTLIN
//menggunakan library anko dan Kotlin Extensionsbtn_login.onClick {
//tambahkan aksinya apa disini
}
5. TOAST
Pesan atau peringatan yang ditampilkan dengan durasi beberapa detik.
JAVA
Toast.makeText(LoginActivity.this, "Gagal Terhubung ke Server", Toast.LENGTH_SHORT).show(); (durasi pendek)Toast.makeText(LoginActivity.this, "Gagal Terhubung ke Server", Toast.LENGTH_LONG).show(); (durasi panjang)
KOTLIN
//menggunakan library anko common
toast("Gagal Terhubung ke Server") (durasi pendek)//menggunakan library anko common
longToast("Gagal Terhubung ke Server") (durasi panjang)
6. INHERITANCE ( Pewarisan )
JAVA
class WaterMelon() extend Fruits(){}
KOTLIN
class WaterMelon() : Fruits(){}
7. ABSTRACTION
JAVA
class WaterMelon() implements Fruits{}
KOTLIN
class WaterMelon(), Fruits{}
8. SETTER AND GETTER
JAVA
String name;
String getName(){
return ""
}
void setName(name: String){
this.name = name;
}
KOTLIN
var name : String
get() = ""
set(value) = value
9. Class Model
JAVA
class Person(){
String name;
Int age;
String address;
Person(String name, int age, String address){
This.name = name;
This.age = age;
This address = address;
}
//Setter Getter
.
.
.
}
KOTLIN
data class Person(
val name: String,
val age: Int,
var address: String
)
10. WHEN EXPRESSION
JAVA
switch(x){
case 1 :
//do something
break;
Default :
//do something
break;
}
KOTLIN
when{
1 -> //do something
2..5 -> //do something
6, 8, 10 -> //do something
is Int -> //do something
else -> // do something
}
11. DEKLARASI FUNGSI
JAVA
String run(int far){
return "So far";
}
KOTLIN
fun run(far: Int): String{
return "So far"
}
12. PERULANGAN
JAVA
for (int a=0; a<8; a++){
//do something
}
KOTLIN
for (a in 1..8){
//do something
}
NULL SAFETY dan NON NULL ASSERTED
Safe Calls (?) di Kotlin digunakan untuk mengatasi Null Pointer Exception (NPE), sehingga ketika ada error di aplikasi yang kita buat tidak akan langsung terjadi force close.
var dream : String? = null
var yourDream = dream ?: "Tidak punya Impian"
//jika dream bernilai null maka yourDream berisi "Tidak punya Impian"
!! (Operator ) sebagai non-null asserted, cara ini akan memaksa objek menjadi non-null dan akan berakibat Null Pointer Exception jika objeknya adalah null. Sehingga sangat tidak disarankan ya guys.
Di kotlin kita dapat langsung menampilkan nama, tanpa harus mendeklarasikan terlebih dahulu guys. Dengan menambahkan import yang ada di bawah ini, kita dapat langsung menggunakan semua id pada xml main setelah setContentView kita panggil.
import kotlinx.android.synthetic.main.activity_main.*
Untuk dapat memanggil id tanpa menggunakan findViewById seperti pada Java , Kita dapat menggunakan Kotlin Extensions dengan menambahkan kode sebagai berikut di bagian build.gradle ( Module: app ) setelah dependencies { }
androidExtensions {
experimental = true
}
Getter dan setter pada Kotlin. Kita cukup menambahkan “data” didepan class lho guys, kemudian tambahkan parameternya. Dengan begitu maka akan otomatis menambahkan getter dan setter serta constructor.
data class MainModel(val nama:String)
Kotlin Library
ANKO https://github.com/Kotlin/anko
// Anko Commonsimplementation "org.jetbrains.anko:anko-commons:$anko_version"
// Anko Layoutsimplementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
// Coroutine listeners for Anko Layoutsimplementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"// Anko SQLiteimplementation "org.jetbrains.anko:anko-sqlite:$anko_version"}
Nah sekarang sudah mengerti kan teman-teman mengenai perbedaan bahasa pemprograman Java dan Kotlin. Sekarang kembali ke teman-teman ingin migrasi ke Kotlin dengan aneka kelebihan nya atau masih ingin bertahan di Java ?
Semua kembali lagi ke tujuan awal Kita belajar programming , apapun bahasanya yang paling penting adalah dapat menyelesaikan masalah disekitar dengan karya yang Kita buat .
Sekian tutorial dari saya tentang perbedaan java dengan kotlin. Semoga tutorial ini bermanfaat bagi teman-teman. Selamat Belajar….