Kotlin dalam perspektif javascript developer

Aditya Putra Pratama
3 min readAug 29, 2022

--

Photo by Marc Reichelt on Unsplash

Setelah sekian lama berkutat dengan javascript saya berniat untuk mendalami kotlin karena satu dan lain hal, saya memilih kotlin sebagai bahasa utama karena memiliki fitur-fitur yang sangat menarik

Apa itu Kotlin?

Kotlin adalah bahasa pemograman modern yang di kembangakan oleh jetbrain, bahasa pemograman yang statis, berjalan pada platform Java Virtual Machine (JVM), mendukung multiplatform. Kode program Java bisa dipanggil dengan Kotlin, begitu pun sebaliknya. kotlin juga dapat mengkonversi kode java kedalam kotlin secara otomatis, selain itu kotlin juga dapat dijalankan di javascript. Kotlin menggunakan compiler LLVM yang artinya, dapat dikompilasi ke dalam kode JavaScript. berbeda dengan javascript kotlin merupakan statically typed sedangkan javascript merupakan dynamically typed

Apa perbedaan statically typed dan dynamically typed?

statically typed:

  • Harus di mendefenisikan tipe variabel dan tipe variable tidak dapat diubah
  • Harus di kompilasi dulu sebelum di jalankan
  • lambat dalam pengembangan aplikasi karena harus dicompile sebelum dijalankan
  • penggunaan memori lebih optimal

dynamically typed:

  • Tidak perlu mendefenisikan tipe variabel dan variabel dapat diubah
  • biasanya tidak memiliki compiller, tapi memiliki penerjemah untuk mengecek tipe variable ketika program ini di eksekusi
  • cepat dalam pengembangan aplikasi karena tidak perlu compile
  • penggunaan memori lebih boros

Kenapa Harus Kotlin?

saya coba membandingkan beberapa kelebihan kotlin

  • Concise
    kotlin menyediakan method yang lebih singkat contoh for in, keyword fun, lamda expresion, on line function, dibawah ini terlihat bahwa kotlin lebih singkat dan lebih manusiawi
Kotlinfor(i in 0..100){
println(i)
}
Javascriptfor(let i= 0; i<=100; i++){
console.log(i)
}
  • Safe
    biasanya dalam setiap bahasa pemograman ada konsep NullPointerException, hal ini terjadi ketika kita mengakses referensi object tetapi objek nya itu sendiri, sebenarnya di javascript sendiri sudah ada fitur ini dengan Optional chain atau nullish coalescing, tetapi kotlin memiliki lebih banyak variasi
Kotlinval name:String? Null check
name?.firstname Safe Call Operator
name?.let{} let method
name.also{} also method
name?:'aditya' elvis operator
name!!.firstname not null assertion operator
Javascriptname?.firstname optional chain
name?? 'aditya' nullish coalescing
  • Interoperable
    Kode program Java bisa dipanggil dengan Kotlin, begitu pun sebaliknya. kotlin juga dapat mengkonversi kode java kedalam kotlin secara otomatis, juga kotlin dapat dicompile menjadi javascript
// Write Kotlin code, compile it to JavaScript, and run it in the browser
// Use existing JavaScript APIs and libraries
import kotlinx.browser.windowfun main() {
val body = window.document.body
body?.innerHTML += "<b>Hello, <i>Kotlin</i></b>"window.setInterval({
body?.innerHTML += "!"
}, 1000)
}

juga dapat dijalankan di framework React

// Use Kotlin wrappers to build applications with JavaScript frameworks such as Reactimport react.*
import react.dom.*
import kotlinx.html.js.onClickFunction
val counter = functionalComponent<Props> {
val (count, setCount) = useState(0)
button {
attrs.onClickFunction = { setCount(count + 1) }
+count.toString()
}
}
  • Multiplatform
    kotlin mendukung berbagai platform, dari mulai Android, IOS, Server Side, Data Science sebenarnya javascript juga mendukung berbagai platform jadi dalam hal ini sama-sama memiliki keunggulan ini

Kesimpulan

Kotlin maupun javascript memiliki kelebihan masing-masing, dua bahasa pemograman ini dibuat berdasarkan kebutuhan, saya sendiri memilih kotlin karena ingin mendalami android, walaupun javascript juga mendukung mobile development dengan react native namun native android menawarkan fitur yang lebih kaya, juga performa yang lebih baik

Ikatlah ilmu dengan menulisnya — Al-hadits

Semoga bermanfaat!

--

--

Aditya Putra Pratama
Aditya Putra Pratama

Written by Aditya Putra Pratama

Exploring the intersections of technology and humanity. Seeking insights and sharing discoveries.

No responses yet