เมื่อวันที่ 28 พฤศจิกายนที่ผ่านมา Kotlin 1.2 ถูกปล่อยออกมา
เป็นอีกก้าวที่สำคัญของ Kotlin
คือการ reuse code ระหว่าง JVM และ JavaScript
โดยที่ Kotlin 1.1 เน้นในเรื่องของ JavaScript เป็นหลัก

ดังนั้นทำให้นักพัฒนาสามารถเขียน business logic ด้วยภาษา Kotlin
ส่วนการทำงานอื่น ๆ เช่น frontend, backend และ Android app
สามารถใช้ code เหล่านี้ได้เลย

โดยที่ Kotlin 1.2 นั้นถูกเพิ่มเข้ามาใน IntelliJ IDEA 2017.3

ซึ่งจะถูกปล่อยออกมาในสัปดาห์นี้
แต่ถ้าใช้งาน Android Studio หรือ IntelliJ IDEA เก่า ๆ
ต้องทำการติดตั้งเอง โดยเข้าไปที่เมนู Tools -> Kotlins -> Configure Kotlin Plugin

ใน Kotlin 1.2 นั้นมีความสามารถมากมายที่มาจาก contributor ภายนอก
ทำให้เห็นว่าชุมชนของ Kotlin โตขึ้นเป็นอย่างมาก
มาดูความสามารถที่น่าสนใจกัน

Multiplatform Projects

สามารถทำการสร้างระบบงานต่าง ๆ ทั้ง Backend, Frontend และ Android app จาก code ชุดเดียวกันได้
ซึ่งในแต่ละ project ประกอบไปด้วย

  • Common module สำหรับ code ที่ใช้ในทุก ๆ platform
  • Platform module สำหรับ code ของแต่ละ platform เช่น JVM และ JavaScript โดยสามารถเรียกใช้งาน code จาก common module ได้

แสดงโครงสร้างของ project ดังรูป

ในส่วนของ common module นั้นจะมี common code จาก common library ของ Kotlin ประกอบไปด้วย

  • kotlin.test  สำหรับการทดสอบ
  • kotlinx.html สำหรับ Isomorphic rendering หรือ render HTML
  • kotlinx.serialization สำหรับการ marshal พวก Kotlin object ทีส่งไปมาระหว่าง platform ซึ่งสนับสนุนพวก JSON และ PhrotoBuf

ปล. ความสามารถนี้ยังอยู่ในขั้นการทดลองเท่านั้น (experiment)
นั่นหมายความว่าพร้อมใช้งาน แต่อาจจะมีการเปลี่ยนแปลงอีก
แต่ถ้าเป็นอย่างนั้น ทีมพัฒนาจะมีเครื่องมือในการ migrate ให้

Compilation Performance

ใน Kotlin 1.2 นั้นทำการปรับปรุงเวลาในการ compile ให้รวดเร็วขึ้น
โดยเร็วกว่า Kotlin 1.1 ประมาณ 25%
และจะทำการปรับปรุงให้เร็วขึ้นใน minor release ต่อ ๆ ไปอีกด้วย

รูปแสดงความเร็วในการ compile ของ Kotlin ในระบบงานใหญ่ ๆ ของ Jetbrains

การปรับปรุงความสามารถของภาษาและ library ต่าง ๆ

มีการปรับปรุงบ้างเล็กน้อย ประกอบไปด้วย

  • ปรับปรุง syntax สำหรับการส่ง multiple argument ผ่าน annotaiton
  • สามารถใช้ lateinit สำหรับ property และ local variable ได้แล้ว
  • เรื่องของ Smart cast และ Type inference
  • เพิ่ม package kotlin.math เข้ามาใน standard library
  • เพิ่ม function ใหม่ ๆ สำหรับการทำงานกับ sequence และ collections

สามารถดูข้อมูลและ code ตัวอย่างเพิ่มเติมที่ What’s New in Kotlin 1.2

มาดูความเคลื่อนไหวของ Kotlin

หลังจากที่ในเดือนมีนาคมได้ปล่อย Kotlin 1.1 ออกมา
มีการนำไปใช้งานจำนวนสูงขึ้นอย่างมาก
มีงาน Kotlin Conference ครั้งแรก
ซึ่งมีคนมาร่วมงานประมาณ 1,200 คนจากทั่วโลก
สามารถตามไปดู VDO ต่าง ๆ ได้เลย

ที่สำคัญภาษา Kotlin นั้นเป็นอีกภาษาหนึ่งที่ใช้พัฒนา Android app ได้

เป็น Official language สำหรับการพัฒนา Android app
โดยใน Android Studio 3.0 นั้นสนับสนุนภาษา Kotlin เลย โดยไม่ต้องทำการติดตั้งอะไรเพิ่มเติม
สามารถอ่านเอกสารจากทาง Android ได้อีกคือ ตัวอย่าง code และ Style guide

ข้อมูลที่น่าสนใจจาก Android Studio 3.0 คือ

มี project ที่สร้างด้วยภาษา Kotlin ถึง 17% กันเลยทีเดียว

ในฝั่ง Server side ก็ไม่น้อยหน้า

Spring Framework 5.0 ก็สนับสนุนความสามารถต่าง ๆ ของภาษา Kotlin
รวมทั้ง vert.x 3.4.0 ก็สนับสนุนเช่นกัน
ฝั่ง Gradle ก็สามารถเขียน Kotlin DSL ได้อีกเช่นกัน

มาดูข้อมูลจาก Github พบว่าจำนวนบรรทัดของ code

ที่เขียนด้วยภาษา Kotlin มีมากกว่า 25 ล้านบรรทัดแล้ว
รวมทั้งข้อมูลจาก StackOverflow ก็สูงขึ้นมาเช่นกัน

ยังไม่พอนะ community ก็มีมากกว่า 100 กลุ่มทั่วโลก

สำหรับผู้เริ่มต้นศึกษาสามารถเรียนรู้ได้จากหนังสือต่าง ๆ เช่น

  • Kotlin in Action
  • Kotlin for Android Developers
  • Modern Web Development with Kotlin

อีกทั้งยังมี online course และเอกสารต่าง ๆ
ลองไปศึกษากันดูนะ

ถ้าต้องการ upgrade Kotlin สามารถทำได้ดังนี้

เริ่มด้วยการศึกษาผ่าน online คือ Try Kotlin
ส่วนช่องทางอื่น ๆ เป็นดังนี้

  • สำหรับ Apache Maven, Gradle และ npm ให้ทำการระบุ version 1.2.0 สามารถอ่านเพิ่มเติมได้
  • สำหรับ IntelliJ IDEA 2017.3 จะมี Kotlin 1.2 มาด้วยอยู่แล้ว ส่วน version ก่อนหน้าต้องทำการ update Kotlin plugin 1.2 เอง
  • สำหรับ Android Studio ให้ทำการติดตั้งและ update ผ่าน Plugin Manager
  • สำหรับ Eclipse IDE ให้เข้าไปยัง Marketplace
  • สำหรับ command-line compiler ให้ทำการ download จาก Github

สุดท้ายเรื่อง compatibility หรือความเข้ากันได้กับ version ก่อนหน้า

ยังคงใช้งานได้ปกติ
รวมทั้งยังสามารถปิดความสามารถใหม่ ๆ ได้อีกด้วย

ขอให้สนุกกับการเขียน code นะครับ

Tags: