Showing posts with label kotlin. Show all posts
Showing posts with label kotlin. Show all posts

Sunday, March 18, 2018

Kotlin Android Extensions - improve support for Android development

Hello guys! berjumpa lagi bareng gw yang bakal ngebahas Kotlin Android Extensions yang merupakan sebuah plugin yang bisa diimplementasikan di Android Studio dengan beberapa kekuatannya untuk membantu dalam pengembangan aplikasi android.

Oh ya guys, perlu diketahui juga dalam blog kali ini bahasa yang bakal digunain yaitu kotlin. Untuk yang belum tahu mengenai kotlin itu apa atau cara instalasinya begimana, kalian bisa cek blog sini yang di post oleh mas Adi Trioka.

Support apa aja sih yang di improve oleh Kotlin Android Extensions ini?

Beberapa kekuatan yang disajikan plugin ini diantaranya ViewBinding dan Parcelable objek yang sering kita gunain dalam development. Lengkapnya dapat kalian cek di sini.

Implementasi

Oke guys, lanjut implementasi aja yuk! Sebelumnya kalian perlu install kotlin nya terlebih dahulu sebelum menggunakan plugin ini. Bagi yang masih aja belum tau kotlin itu apa atau cara instalasinya begimana, cek lagi deh blognya mas Adi Trioka.

Selanjutnya, setelah instalasi kotlin selesai, cukup tambahin line berikut di module app build.gradle :
apply plugin: 'kotlin-android-extensions'

Oh ya, karena bahasan kita kali ini ada Parcelable-nya juga. Tambahin juga line berikut di module app build.gradle :
androidExtensions {
    experimental = true
}

Oke, instalasinya cukup sekian guys. Lanjut ke bagaimana implementasi ViewBinding di plugin ini, sebagai contoh kasus sebuah view sederhana yang bernama content_main.xml berisikan TextView :
<?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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.nostratech.mahdi.helloworld.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:id="@+id/textView"
        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>

Kemudian view tersebut bakalan kita panggil di MainActivity cukup dengan import kotlinx.android.synthetic.main.content_main.* untuk dapat memanggil langsung component yang tersedia pada view tersebut seperti code berikut :
import kotlinx.android.synthetic.main.content_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView.text = "Hello guys!"
    }
}

Simpel banget kan? kalian ga perlu melakukan findViewById() bla bla bla ... lagi atau menggunakan third party library seperti Butterknife yang pernah dibahas mas Andy Wiranata di blognya atau Android Annotations yang pernah gw bahas di blog sebelumnya. *cheers*

Oke, selanjutnya kita coba Parcelable objeknya ya!
Buat objek yang nge-extend Parcelable. Dalam contoh kasus kali ini gw ngebuat sebuah objek kontak yang berisi id, firstName, lastName, phoneNumber, dan homeAddress seperti pada code berikut :
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Contact(
        val id: Long,
        val firstName: String,
        val lastName: String?,
        val phoneNumber: String,
        val homeAddress: String) : Parcelable

Setelah objeknya dibuat, masukin objek tersebut ke dalam intent seperti biasanya. Dalam contoh kasus, gw mau ngedit sebuah kontak yang telah dipilih dalam sebuah daftar kontak untuk diedit di activity buat ngeditnya dong seperti yang nampak di code berikut :
private fun editContact(contact: Contact) {
    val intent = Intent(this, EditContactActivity::class.java)
    intent.putExtra("contact", contact)
    startActivity(intent)
}

Kemudian pada EditContactActivity-nya, ambil extra dengan kata kunci "contact" untuk mengambil parcel yang telah dibungkus di intent tadi seperti pada code berikut :
private fun getContact(): Contact? {
    return if (intent.hasExtra("contact")) intent.getParcelableExtra("contact")
    else null
}

Simpel kan? Alright guys, untuk fitur lengkapnya bisa kalian akses di sini. Sekian dulu dari gw. Semoga dapat bermanfaat dan sampai jumpa di blog berikutnya! See ya!

Saturday, December 16, 2017

Intro to Kotlin: Extension, Lambda Expression and Higher Order Function

Pada tulisan sebelumnya tentang Kotlin, saya telah membahas 4 fitur unggulan yang dimiliki Kotlin yaitu Multiple Top Declaration, Named Parameter, Optional Semicolon dan Default Parameter. Selain 4 fitur keren di atas, terdapat beberapa fitur lain yang ada pada bahasa ini yang menurut saya tidak kalah kerennya. Fitur yang dimaksud adalah Extension, Higher Order Function dan Lambda Expression.

Extension

Extension adalah fitur pada Kotlin yang memungkinkan kita untuk menambahkan property dan function pada suatu kelas tanpa mengubah atau meng-extend kelas tersebut. Fitur ini sangat berguna jika kita menggunakan library yang dibuat oleh orang lain dan menemukan kekurangan dan ingin menambahkan sesuatu pada library tersebut. Berikut ini adalah contoh bagaimana extension dapat digunakan.

Misalnya kita menggunakan library yang memiliki kelas Person di dalamnya dan ingin menambahkan fungsi untuk menari dan dan ingin menambahkan property untuk mengetahui apakah objek Person yang kita buat itu sudah tua atau belum. Salah satu cara untuk melakukan ini tanpa extension adalah dengan membuat kelas baru yang meng-extend kelas Person dan menambahkan secara manual property dan fungsi yang diinginkan pada kelas tersebut. Tetapi, karena Kotlin memiliki fitur extension, hal ini dengan mudah dapat dilakukan dengan cara seperti di bawah ini.


Lambda Expression

Fitur lainnya yang ingin saya bahas adalah Lambda Expression. Lambda expression atau juga sering disebut sebagai anonymous function adalah fungsi yang tidak dideklarasikan tetapi langsung digunakan dalam bentuk expression. Berikut ini adalah contoh Lambda Expression.

Di atas adalah contoh lambda expression yang merepresentasikan fungsi yang menerima satu parameter berupa objek Person dan mengembalikan boolean. Lambda expression akan terasa berguna saat kita menggunakan Higher Order Function yang akan saya bahas pada poin berikutnya.

Higher Order Function

Apakah yang dimaksud dengan Higher Order Function(yang selanjutnya akan disebut dengan HOF)? HOF adalah fungsi yang dapat menerima parameter berupa fungsi dan dapat mengembalikan fungsi. Lalu apa gunanya HOF? Pada Functional Programming, HOF sangat berguna untuk melakukan perhitungan yang direpresentasikan dengan bentuk fungsi. Salah satu bidang ilmu yang menggunakan functional programming adalah matematika. Pada bidang ilmu matematika, suatu masalah sering direpresentasikan dengan bentuk fungsi, dan biasanya fungsi pada matematika dapat berupa fungsi komposisi, yaitu fungsi suatu nilai yang juga merupakan sebuah fungsi. Di bawah ini adalah contoh dari HOF.

Fungsi di ataas adalah fungsi yang menerima tiga buah parameter. Parameter pertama adalah List of Person, parameter kedua adalah conditon dan parameter ketiga adalah action. Fungsi ini akan melakukan action pada setiap elemen di List of person jika condition terpenuhi.

Demikianlah tulisan saya kali ini tentang Kotlin, semoga dapat bermanfaat :)

Keep on hackin'!

Referensi

Reference - Kotlin Programming Language

Sunday, June 18, 2017

Kotlin on Android Studio

Sebelum didukung resmi oleh Google, Kotlin sudah cukup lama digunakan oleh programmer-programmer di berbagai platform. Pengembangan program dengan bahasa Kotlin dapat dilakukan dengan dua cara, yaitu dengan mengunakan stand-alone compiler, dan dengan mengunakan IDE yang dipasang plugin untuk bahasa Kotlin. IDE yang dapat digunakan untuk mengembangkan perangkat lunak dengan bahasa Kotlin adalah IntelliJ, Eclipse, Netbeans, dan juga Android Studio.

Sebelum resmi didukung, sudah terdapat banyak aplikasi android yang production code-nya menggunakan bahasa Kotlin. Bersamaan dengan diumumkannya Kotlin sebagai bahasa resmi pegembangan aplikasi Android, Google meluncurkan Android Studio 3.0 Preview (Canary Channel).

Android Studio 3.0 Preview (Canary Channel)

Pada Android Studio versi 3.0, terdapat banyak fitur baru dan perbaikan-perbaikan yang dapat memudahkan programmer dalam mengembangkan aplikasi Android. Fitur-fitur dan perbaikan-perbaikan tersebut diantaranya:
  • Core IDE changes
  • Kotlin language
  • Support for Java 8 language features
  • New Android Profiler
  • Instant Apps Support
  • APK Debugger
  • New Device File Explorer
  • Support for the Android O Developer Preview
  • New Templates for Android Things
  • Layout Editor Improvements
  • Layout Inspector Improvements
  • Google's Maven Repository
  • APK Analyzer Improvements
  • New Android Plugin for Gradle
  • New Android Emulator Features
Tulisan ini tidak akan membahas semua fitur-fitur baru atau perbaikan-perbaikan pada Android Studio 3.0 dan hanya akan fokus pada fitur dukungan bahasa Kotlin. Untuk pembahasan lebih lengkap mengenai fitur-fitur dan perbaikan-perbaikan di atas, dapat dilihat pada halaman ini.

Android Studio 3.0 includes support for the Kotlin language. You can incorporate Kotlin into your project by converting a Java file to Kotlin (click Code > Convert Java File to Kotlin File) or by creating a new Kotlin-enabled project using the New Project wizard. Learn more about Kotlin and Android.

Kotlin Support in Android Studio

Dukungan untuk bahasa Kotlin pada Android Studio Meliputi:
  • Kotlin Enabled Project

Dengan fitur ini, kita dapat membuat project baru pada Android Studio yang menggunakan bahasa Kotlin sebagai bahasa default yang digunakan dalam menulis program logic.
  • Pertama pilih opsi "Start a new Android Studio project" saat membuka Android Studio
  •  Setelah itu Masukan properti yang diinginkan, seperti nama aplikasi, domain perusahaan. Pada tahap ini, jangan lupa check pilihan include Kotlin support.
  •  Selanjutnya, untuk menambahkan activity dapat dilakukan seperti biasa pada menu File.
  •  Pada tahap ini pilih Kotlin sebagai source language
  •  Setelah klik Finish, Android Studio akan men-generate berkas .kt sebagai logic aplikasi dan juga berkas .xml

  •  Saat Pertama project dibuat, Android Studio otomatis membuat sebuah activity yang menggunakan bahasa kotlin.
  •  Convert Java to Kotlin

Selain membuat project baru dengan Kotlin, Android Studio 3.0 juga memiliki fitur untuk mengubah kode java yang ada menjadi kode Kotlin. Prosesnya adalah sebagai berikut:
  •  Pilih Project yang ingin diubah

  •  Setelah project berhasil dibuka, pilih kelas java yang ingin diubah menjadi Kotlin
  •  Pada menu Code, pilih opsi "Convert Java File to Kotlin File"
  •  Setelah itu akan muncul dialog proses pengkonversian kelas java ke Kotlin
  •  Pada Android Studio 3.0 masih terdapat bug yang mengharuskan kita untuk mengkoreksi pengkonversian yang belum sempurna
  •  Setelah pengkonverisan selesai, akan muncul error seperti gambar di bawah ini. Untuk dapat memperbaiki error ini, kita harus mengganti jenis deklarasi variable menjadi "protected lateinit"
  • Saat pertama kali melakukan konversi kelas java ke Kotlin, Android Studio akan meminta kita untuk mengkonfigurasi library Kotlin pada Gradle. Konfigurasi ini dilakukan secara otomatis, yang harus kita lakukan hanya menentukan cakupan kelas Kotlin pada project.


  •  Setelah menambahkan dependency untuk Kotlin (yang dilakukan secara otomatis), kita akan diminta untuk sinkronisasi ulang Gradle

  •  Setelah sinkronisasi gradle selesai, proses pengkonversian kelas java ke Kotlin telah selesai. Aplikasi dapat dijalankan seperti biasa dengan menggunakan emulator atau device Android.

Demikianlah tulisan saya mengenai Kotlin pada Android Studio, selamat mencoba :)

Reference


Intro to Kotlin

Sampai dengan 17 Mei 2017, java merupakan satu-satunya bahasa yang secara resmi didukung oleh Google sebagai bahasa yang digunakan untuk mengembangkan aplikasi Android. Pada Acara Google I/O 2017 yang diadakan Google di Mountain View, California, Google mengumumkan Kotlin ditambahkan sebagai bahasa resmi untuk mengembangkan aplikasi Android.

Dengan diumumkannya berita ini, saya tertarik untuk mencari tau tentang bahasa Kotlin dan ingin berbagi sedikit mengenai Kotlin dengan tulisan ini.

About Kotlin

Apa itu Kotlin? Kotlin adalah bahasa pemrograman yang dikembangkan oleh tim dari JetBrains yang dipimpin oleh Andrey Breslav. Proyek ini dimulai pada tahun 2010 dan secara resmi diumumkan ke publik pada tahun 2011. Satu tahun berikutnya sekitar Februari 2012, proyek ini dijadikan open source dan siapapun dapat berpartisipasi dalam pengembangan bahasa ini.

Sama seperti java, Kotlin diambil dari nama sebuah pulau. Pulau Kotlin terletak di Negara Rusia. Tujuan dibuatnya bahasa ini adalah sebagai bahasa umum yang dapat digunakan sebagai alat yang aman, ringkas, fleksible dan 100% interoperable dengan java. Saat ini Kotlin dapat berjalan pada JVM, Javascript compiler dan Android Dalvik Virtual Machine (DVM).

Pro & Con

Berikut ini adalah beberapa pertimbangan dalam menggunakan bahasa Kotlin. Terdapat banyak alasan mengapa kita harus menggunakan bahasa Kotlin, diantaranya adalah sebagai berikut:
  • Concise
  • Safe
  • Interoperable with java
  • Tool-friendly
  • Many cool feature:
    • Data class,
    • Multiple top level declaration,
    • Names parameter,
    • Optional semicolon,
    • Extensions,
    • Default parameter,
    • Single expression function,
    • Safe operator.
  • Officialy supported by Android
  • Kotlin/Native
Sedangkan untuk contra-nya adalah, kita membutuhkan waktu untuk mempelajari bahasa baru dan ukuran file .apk yang dihasilkan akan sedikit lebih besar jika dibandingkan dengan menggunakan bahasa java.

Overview

Berikut ini adalah overview perbandingan syntax Kotlin dengan java:

 

Try Kotlin

Dalam bagian ini saya akan sedikit menjelaskan fitur-fitur pada Kotlin yang menurut saya keren dan dapat memudahkan programmer dalam menulis program.
  • Multiple Top Level Declaration
Fitur ini memungkinkan kita untuk menulis sebuah fungsi dan kelas pada level yang sama, berbeda dengan bahasa java yang mewajibkan top level declaration-nya adalah sebuah kelas.
  • Names Parameter
Dengan Fitur ini, kita tidak perlu lagi mengingat-ingat urutan sebuah parameter dari sebuah fungsi. Fitur ini sangat berguna jika suatu fungsi memiliki banyak parameter dan kita tidak ingat urutan parameter-parameternya.
  • Optional Semicolon 
Salah satu target dari bahasa kotlin adalah programmer java. Dalam bahasa pemrograman java, semicolon merupakan suatu hal yang wajib. Pada Kotlin, keberadaan semicolon bukanlah suatu hal yang penting. Itu artinya kita dapat menulis sebuah statement dengan atau tanpa menggunakan semicolon. Hal ini sangat memudahkan dalam transisi dari bahasa yang mewajibkan semicolon di setiap statement ke Kotlin.
 
  • Default Parameter
Seringkali kita dihadapkan pada suatu objek yang memiliki lebih dari satu macam jenis deklarasi. Kotlin mengakomodasi hal ini dengan fitur default parameter.

Pada kelas Money di atas, jika kita tidak menginisalisasikan nilai amount dan atau currency, Kotlin akan otomatis menginisialisasikannya dengan default parameter yang telah kita tentukan saat mendefinisikan kelas Money. Currency akan otomatis diinisialisasikan dengan string kosong, dan amount akan diinisialisasikan dengan nol. 

Conclusion

Terdapat banyak fitur dari kotlin yang dapat meningkatkan produktivitas dalam menulis program. Sebagai Software Enginner yang lahir dan besar dengan bahasa java, bagi saya mempelajari bahasa baru untuk menulis program bukanlah hal mudah dan menyenangkan. Meskipun demikian, setelah mengenali Kotlin saya tertarik untuk mempelajari bahasa ini dan menggunakannya sebagai bahasa dalam menulis program.

Kesimpulan dari tulisan ini adalah jangan ragu atau bahkan takut untuk mempelajari sebuah bahasa baru meskipun kita sudah familiar dan mahir dengan satu bahasa. Karena pada akhirnya, bahasa pemrogramman hanyalah sebuah alat yang kita gunakan untuk membuat program.

Reference