นับตั้งแต่ Android Studio ถือกำเนิดขึ้นมา นักพัฒนาแอนดรอยด์เกือบทั้งหมดก็ได้เปลี่ยน Build Tools จาก Ant มาใช้ Gradle ตั้งแต่นั้นเป็นต้นมา ซึ่งที่ผ่านมานั้นจะเขียน Build Script ใน Gradle ด้วย Groovy DSL กันมาตลอด
แต่รู้หรือไม่? ตั้งแต่ Gradle 5.0 และ Android Gradle Plugin 4.0 เป็นต้นมา นักพัฒนาสามารถเขียน Build Script ด้วย Kotlin DSL ได้แล้วนะ
บทความที่เกี่ยวข้อง
- Introduction [Now Reading]
- Migration
Kotlin DSL คือ?
DSL หรือ Domain-specific language คือภาษาโปรแกรมที่ออกแบบมาเพื่อแก้ปัญหาใน Domain ที่เฉพาะเจาะจง (ใน ณ ที่นี้คือการทำงานของ Gradle Build Script) มีการใช้งานที่จำกัดขอบเขตและมีความยืดหยุ่นน้อยกว่าการเขียนภาษาโปรแกรมแบบ General-purpose Programming Language จึงทำให้ DSL ทำงานได้เร็วและใช้งานได้ง่ายกว่า
โดยปกติแล้วนักพัฒนาจะเขียนโค้ดภาษา Kotlin ในลักษณะของ General-purpose Programming Language แต่เนื่องจากภาษา Kotlin มีความสามารถที่เรียกว่า Type-safe Builder จึงทำให้นักพัฒนาสามารถเขียนภาษา Kolin ในรูปแบบของ DSL หรือที่เรียกกันว่า Kotlin DSL ได้นั่นเอง
รู้หรือไม่ การสร้าง UI ด้วย Jetpack Compose ก็ใช้ Kotlin DSL นะ
การใช้ Kotlin DSL ใน Gradle ดีกว่า Groovy DSL อย่างไร?
- เขียน Gradle Build Script ด้วย Syntax ของ Kotlin ที่คุ้นเคยกันดี
- Kotlin เป็น Static Type จึงทำให้ใช้ตัวช่วยอย่าง Code Completion ได้ง่ายและตรงกับที่ต้องการมากกว่าการใช้ Goovy
- จากการที่ Kotlin เป็น Static Type จึงทำให้ IDE สามารถแสดง Syntax Error ได้ทันที โดยไม่ต้องเสียเวลา Sync Gradle ก่อน
- สามารถกดเข้าไปดูคำสั่งต่าง ๆ ของ Gradle ได้สะดวก เหมือนกับตอนที่เขียนโค้ดในแอปแอนดรอยด์
การเปลี่ยนให้ Gradle ใช้ Kotlin DSL แทน Groovy DSL
อย่างที่บอกไปในตอนแรกว่า Gradle และ Android Gradle Plugin นั้นรองรับการใช้ Kotlin DSL อยู่แล้ว จึงไม่ต้องตั้งค่าอะไรในโปรเจคเพิ่ม สามารถสร้างไฟล์ Build Script ด้วย Kotlin ได้เลย
โดยการสร้างไฟล์สำหรับ Kotlin สามารถทำได้ง่าย ๆ เพียงแค่สร้างไฟล์ใหม่ที่ลงท้ายว่า .gradle.kts
แทนของเดิมที่ลงท้ายด้วย .gradle
ยกตัวอย่างเช่น
build.gradle
เป็นbuild.gradle.kts
settings.gradle
เป็นsettings.gradle.kts
ถ้ามีไฟล์ Build Script ที่เป็น Groovy และ Kotlin ชื่อเดียวกันอยู่ทั้งคู่ Gradle จะเลือกใช้ไฟล์จาก Groovy ก่อนเสมอ
สิ่งที่ควรรู้
- นับตั้งแต่ Android Studio Giraffe เป็นต้นไป เวลาสร้างโปรเจคใหม่ Android Studio จะเลือกให้ Gradle ใช้ Kotlin DSL เป็นค่าตั้งต้น (สามารถเลือกเป็น Groovy DSL เหมือนเดิมได้)
- Gradle รองรับการใช้ Goorvy และ Kotlin ร่วมกันได้ ดังนั้นถ้าโปรเจคไหนที่ใช้ Groovy อยู่และอยากจะเปลี่ยนไปใช้ Kotlin ก็สามารถ Migrate ทีละไฟล์ได้ ไม่ต้องทำทีเดียวทั้งหมด
- รองรับ Gradle Version Catalogs เหมือนกับ Groovy
สรุป
ถึงแม้ว่า Gradle จะรองรับ Kotlin DSL มาซักพักใหญ่แล้ว แต่ในปัจจุบันก็ยังมีโปรเจคแอนดรอยด์อีกมากมายที่ยังใช้ Groovy DSL อยู่ อาจจะด้วยปัญหาบางอย่าง เช่น ไม่รู้ว่าจะต้องแปลงโค้ด Groovy ให้กลายเป็น Kotlin อย่างไร เพราะมันจะมีเรื่องของ Gradle Build Script เข้ามาเกี่ยวข้องด้วย แต่ในช่วงเวลาที่ผ่านมาก็ดูเหมือนว่าทีมแอนดรอยด์จะสนับสนุนให้นักพัฒนาเปลี่ยนมาใช้ Kotlin กันมากกว่า
ดังนั้นเจ้าของบล็อกจึงเขียนบทความนี้เพื่อเกริ่นถึง Gradle Kotlin DSL เพื่อให้นักพัฒนาเข้าใจถึงจุดเด่นและข้อดีกันก่อน และในบทความต่อไปก็จะเป็นรายละเอียดในการเปลี่ยนโค้ดใน Gradle Build Script ที่เป็น Groovy ให้กลายเป็น Kotlin กันครับ