Meta รายงานถึงความคืบหน้าในการย้ายโค้ด Android จาก Java ไปเป็น Kotlin หลังจากเปลี่ยนแนวทางมาใช้ Kotlin เป็นหลักตั้งแต่ปี 2020 แต่ก็ยังมีโค้ด Java จำนวนมาก แต่ในช่วงหลังก็สามารถเร่งความเร็วในการแปลงโค้ดได้จากการทำงานร่วมกับ JetBrains ผู้สร้าง IntelliJ
ก่อนหน้านี้ Meta แปลง Java เป็น Kotlin โดยอาศัยฟีเจอร์แปลงโค้ดของ IntelliJ เป็นหลัก การแปลงแต่ละครั้งอาศัยนักพัฒนาคลิก IDE ทีละไฟล์เอง กระบวนการนี้ทำให้การแปลงโค้ดช้ามาก ทาง Meta เข้าไปช่วย IntelliJ พัฒนา J2K ที่เป็นเอนจินแปลงโค้ดภายใน IntelliJ ให้สามารถรันได้โดยไม่ต้องการ IntelliJ
หลังจากนั้น Meta พัฒนาเครื่องมือภายใน ชื่อว่า Kotlinator ที่ใช้ J2K เป็นแกน แต่มีฟีเจอร์ต่างๆ เพิ่มเติม
JetBrains เปิดตัวภาษา Kotlin เวอร์ชัน 2.0 มีของใหม่ที่สำคัญคือคอมไพเลอร์ตัวใหม่ K2 ที่เริ่มทดสอบมาตั้งแต่ปี 2022 และเข้าสถานะเสถียร
จุดเด่นของ K2 คือเรื่องประสิทธิภาพในการคอมไพล์ที่เพิ่มขึ้นเกือบเท่าตัว และยังทำงานร่วมกับตัว IDE (IntelliJ IDEA) เพื่อเพิ่มประสิทธิภาพของการไฮไลท์โค้ดได้เร็วขึ้น 1.8 เท่า, เติมโค้ดได้เร็วขึ้น 1.5 เท่า
K2 กลายมาเป็นคอมไพเลอร์สำหรับแปลงโค้ดภาษา Kotlin ไปใช้งานกับแพลตฟอร์มอื่นๆ แบ่งได้ 4 หมวดกว้างๆ คือ
กูเกิลประกาศซัพพอร์ต Kotlin Multiplatform (KMP) แนวทางการเขียนแอพข้ามแพลตฟอร์มด้วยภาษา Kotlin อย่างเป็นทางการในงาน Google I/O 2024
Kotlin Multiplatform เป็นโครงการของ JetBrains ที่พัฒนาให้ภาษา Kotlin เขียนแอพข้ามแพลตฟอร์มได้ทั้ง Android, iOS, Web, Desktop, Server
แนวคิดของมันคือการที่แอพ Android ยุคใหม่เขียนด้วย Kotlin เป็นหลักอยู่แล้ว ก็นำโค้ดส่วนนี้ไปใช้กับแพลตฟอร์มอื่นๆ จะได้เขียนครั้งเดียวใช้ได้ [เกือบ] ทุกที่ โดยงานฝั่งจัดการ UI ของแต่ละแพลตฟอร์ม ตัวเฟรมเวิร์ค KMP จะช่วยจัดการให้
ดัชนีภาษาโปรแกรมยอดนิยม TIOBE Index ประจำเดือนพฤศจิกายน 2023 มีการเปลี่ยนแปลงน่าสนใจคือ อันดับของภาษา Kotlin ไต่ขึ้นมาอย่างรวดเร็ว โดยเริ่มติดชาร์ทอันดับ 20 เมื่อสองเดือนก่อน, เดือนที่แล้วขึ้นมาเป็นอันดับ 18, เดือนนี้ขึ้นมาอยู่อันดับ 15 แล้ว
อีกภาษาที่มาแรงในเดือนนี้คือ Scratch ที่ปีที่แล้วอยู่อันดับ 17 ตอนนี้อยู่อันดับ 11 ใกล้เข้ามาแตะ Top 10 เรื่อยๆ
ส่วนภาษาโปรแกรมยอดนิยม 10 อันดับแรกยังเหมือนของเดือนที่แล้ว ได้แก่ Python, C, C++, Java, C#, JavaScript, PHP, Visual Basic, SQL, Assembly
JetBrains ประกาศว่า Kotlin Multiplatform (KMP) ที่ช่วยให้เขียนโค้ดเป็นภาษา Kotlin แล้วแชร์โค้ด (ส่วนใหญ่หรือทั้งหมด) ข้ามแพลตฟอร์มได้ เข้าสถานะเสถียรพร้อมสำหรับงานโปรดักชันแล้วใน Kotlin 1.9.20 เวอร์ชันล่าสุด
Kotlin Multiplatform เริ่มจากการใช้งานเขียนแอพบนมือถือ Kotlin Multiplatform Mobile (KMM) โดยแปลงโค้ดจากฝั่ง Android ที่เขียนด้วย Kotlin อยู่แล้วให้ไปรันแบบเนทีฟบน iOS ได้ด้วย ช่วยลดการดูแลโค้ดลง และภายหลังก็ขยายมายังแพลตฟอร์มอื่นอย่างเดสก์ท็อปและเว็บ จึงเปลี่ยนชื่อเป็น Kotlin Multiplatform (KMP) ให้ครอบคลุมมากขึ้น
ข่าวนี้เหมาะสำหรับครูบาอาจารย์ที่สอนวิชาโปรแกรมมิ่ง และกำลังสนใจสอนภาษา Kotlin ในฐานะภาษาใหม่ที่กำลังมาแรง
JetBrains ในฐานะบริษัทผู้สร้าง Kotlin เปิดเอกสารทั้งหมดในคอร์ส Programming in Kotlin ให้ใช้งานได้ฟรี ครอบคลุมถึงสไลด์ประกอบการบรรยาย ควิซ การบ้าน และคลิปวิดีโอการบรรยายของ Anastasia Birillo ผู้สอนวิชานี้ เอกสารสามารถดาวน์โหลดได้จาก หน้าเว็บ Kotlin Educator
JetBrains เปิดตัวปลั๊กอิน Kotlin Notebook สำหรับ IntelliJ IDEA เพื่อให้ผู้สนใจภาษา Kotlin สามารถลองเขียนโค้ด ใส่ตารางข้อมูล ทำภาพ visualization ได้จบในตัว แบบเดียวกับโน้ตบุ๊กภาษา Python
JetBrains บอกว่าแนวคิดการใช้โน้ตบุ๊ก Jupyter ได้รับความนิยมมากขึ้นเรื่อยๆ ทั้งในการทำโปรแกรมต้นแบบ, การวิเคราะห์ข้อมูล และงานสาย data science จึงต้องการขยายผลมายังภาษา Kotlin ด้วย รูปแบบการทำงานยังเหมือนกัน ตัวไฟล์โน้ตบุ๊กจะใช้นามสกุล .ipynb และมีโครงสร้างการจัดเก็บข้อมูลแบบเดียวกัน
ในเบื้องต้น ปลั๊กอิน Kotlin Notebook ยังมีสถานะเป็นแค่การทดลอง (experimental) ต้องอิงกับบางส่วนในปลั๊กอิน Python อยู่ แต่จะแยกขาดจากกันในภายหลัง
กูเกิลและ JetBrains โชว์การนำภาษา Kotlin มาเขียนเว็บ โดยคอมไพล์เป็น WebAssembly เพื่อให้รันในเบราว์เซอร์ได้ มีประสิทธิภาพเกือบเทียบเท่าเนทีฟ
ในยุคสมัยที่โลกมี 3 แพลตฟอร์มใหญ่คือ Android, iOS และเว็บ การมีแอพ 3 เวอร์ชันเป็นภาระในการดูแล จึงมีคนหาวิธีสร้างแอพด้วยภาษา-เครื่องมือเดียวกันกับทุกแพลตฟอร์ม (ด้วยวิธีการทางเทคนิคที่ต่างกัน แต่เป้าหมายเดียวกัน) เช่น .NET/Xamarin (C#) หรือ Flutter (Dart)
ตัวแทนกูเกิลไปขึ้นเวทีงาน KotlinConf '23 เล่าสถิติการใช้งานภาษา Kotlin ในหมู่นักพัฒนาสาย Android และสถิติภายในของกูเกิลเอง
แวดวง Android
Compose Multiplatform เฟรมเวิร์คสำหรับเขียน UI ของภาษา Kotlin ที่พัฒนาโดย JetBrains และออกเวอร์ชันแรกในปี 2021
รากเหง้าของ Compose มาจาก Jetpack Compose ที่กูเกิลสร้างขึ้นเพื่อเขียน UI บน Android โดย JetBrains นำมาพัฒนาต่อให้รองรับแพลตฟอร์มอื่นๆ คือบนเดสก์ท็อป (Windows, macOS, Linux)
ล่าสุด JetBrains เปิดตัว Compose Multiplatform สำหรับ iOS แล้ว สถานะยังเป็นรุ่นทดสอบแบบ Alpha และจำเป็นต้องใช้ Xcode บน macOS ช่วยคอมไพล์ออกมาเป็นแอพบน iOS ให้
Gradle ซอฟต์แวร์ build automation ชื่อดัง เดิมทีต้องใช้ภาษา Groovy เขียนสคริปต์คอนฟิกวิธีการ build แต่ล่าสุดเปลี่ยนมาใช้ภาษา Kotlin เป็นดีฟอลต์แทนแล้ว
Gradle เริ่มสร้างในปี 2008 โดยตอนนั้นยังรองรับเฉพาะ Groovy เป็นภาษาแบบ domain-specific language (DSL) เพื่อเป็น build script แต่ในปี 2016 ก็เพิ่ม Kotlin DSL เข้ามาเป็นอีกทางเลือกหนึ่ง
JetBrains ประกาศแผนการใช้งานคอมไพเลอร์ตัวใหม่ K2 ของภาษา Kotlin ที่เริ่มทดสอบใน Kotlin 1.7 โดยจะขยับเลขเวอร์ชันของ Kotlin 2.0 เพื่อสะท้อนการเปลี่ยนแปลงนี้
ปัจจุบัน Kotlin เวอร์ชันล่าสุดคือ 1.8.10 หลังจากนี้จะออกเวอร์ชัน 1.9 มาก่อน แล้วเปลี่ยนใหญ่เป็น Kotlin 2.0 ที่ใช้คอมไพเลอร์ K2 เป็นดีฟอลต์
คอมไพเลอร์ K2 ถูกเขียนขึ้นมาใหม่ทั้งหมด ใช้สถาปัตยกรรมใหม่ มีประสิทธิภาพในการทำงานดีขึ้น 2 เท่า ออกแบบให้ต่อขยายได้ง่าย และแก้บั๊ก แก้หนี้ทางเทคนิคของคอมไพเลอร์ตัวที่ใช้อยู่ในปัจจุบัน
Meta เขียนบล็อกเล่าประสบการณ์ย้ายภาษาโปรแกรมที่ใช้เขียนแอพ Android จากเดิม Java มาเป็น Kotlin ซึ่งตอนนี้ย้ายไปแล้วเกิน 10 ล้านบรรทัด (ยังย้ายไม่เสร็จทั้งหมด)
Meta ระบุว่า Kotlin เป็นภาษาที่ได้รับความนิยมมากขึ้นเรื่อยๆ ในโลกของ Android โดยมีข้อดีเหนือกว่า Java 11 (ที่ใช้ในวงการ Android) หลายด้าน เช่น nullability ที่ระดับของตัวภาษา, รองรับการทำ functional programming ดีกว่า Java, โค้ดสั้นกว่า และรองรับการทำ Domain-specific language (DSL)
ภาษา Kotlin ได้รับความนิยมมากขึ้นเรื่อยๆ หลังกูเกิลเลือกเป็นภาษาหลักในการสร้างแอพบน Android ถึงขั้นมีบางองค์กร เช่น Netflix เริ่มผลักดันการใช้ Kotlin เขียนแอพมือถือทั้ง Android/iOS ไปพร้อมกันเลย
ทีม JetBrains เองก็รับลูกแนวทางนี้ และพัฒนาออกมาเป็น SDK ชื่อว่า Kotlin Multiplatform Mobile (KMM) ที่ตอนนี้เข้าสถานะ Beta แล้ว
แพลตฟอร์มภาษา Kotlin ออกเวอร์ชัน 1.7.0 มีของใหม่ที่สำคัญคือคอมไพเลอร์ตัวใหม่ K2 ที่ให้ประสิทธิภาพดีขึ้นจากเดิมมาก เริ่มเข้ามาให้ลองทดสอบแบบอัลฟ่า
ตัวภาษา Kotlin สามารถเขียนแล้วนำไปใช้งานได้ 3 แนวทางคือ Kotlin/JVM, Kotlin/JS, Kotlin/Native โดยจุดเริ่มต้นของ Kotlin เริ่มมาจากภาษาที่ใช้แทน Java เพื่อรันบน JVM
คอมไพเลอร์ตัวใหม่ K2 จะเริ่มใช้กับ Kotlin/JVM ก่อนเป็นอย่างแรก ส่วนเวอร์ชัน JS และ Native จะตามมาในระยะถัดไป โดยผลจากการทดสอบของ JetBrains เองพบว่าประสิทธิภาพการคอมไพล์ (นับเป็นบรรทัดของโค้ดต่อวินาที) ดีขึ้น 2.2-2.3 เท่า
ของใหม่อย่างอื่นใน Kotlin 1.7.0 มีปรับฟีเจอร์ของตัวภาษาเล็กน้อย, ปรับปรุงประสิทธิภาพของทั้ง JVM, JS, Native และปรับวิธีการคอมไพล์ของ Gradle
คนที่ใช้ IDE ของค่าย JetBrains คงคุ้นเคยกับแอพ JetBrains Toolbox ที่ใช้จัดการอัพเดตซอฟต์แวร์ จัดการเวอร์ชัน และโปรเจคต์ที่ทำงานค้างอยู่ ปัจจุบันแอพตัวนี้มีผู้ใช้มากกว่า 1 ล้านคนต่อเดือน ตามฐานผู้ใช้ IDE ของ JetBrains
ล่าสุดทีมของ JetBrains ออกมาเล่าเบื้องหลังการเปลี่ยนแอพ Toolbox ที่เดิมเขียนด้วย C++/React/Chromium มาเป็น Kotlin 100% ซึ่งถือเป็นตัวอย่างการเปลี่ยนผ่านของ JetBrains ที่หันมาใช้ภาษาของตัวเองกับแอพเดสก์ท็อปด้วย
AWS เพิ่มภาษาที่รองรับใน AWS SDK อีก 3 ภาษา ได้แก่ Kotlin, Rust, และ Swift โดยทั้งสามภาษายังอยู่ในช่วง Developer Preview
ภาษา Kotlin นั้นมักใช้งานในแอนดรอยด์เป็นหลัก รองรับบริการ 284 ตัว รองรับฟีเจอร์ของ Kotlin เองเช่น coroutine และรันแบบ concurrent ได้
ภาษา Rust นั้นก่อนหน้านี้มีโครงการ Rusoto ทดแทน AWS SDK ทางการที่สร้างโดยนักพัฒนาภายนอกอยู่ก่อนแล้ว แต่ทาง AWS ก็เลือกพัฒนาใหม่เป็น SDK มาตรฐาน ตอนนี้เวอร์ชั่นพรีวิวรองรับบริการ 288 ตัว หากใช้งานใน AWS เช่น EC2, ECS, หรือ Lambda จะคอนฟิกอัตโนมัติ และใช้ฟีเจอร์ของภาษา Rust เต็มที่
JetBrains เปิดตัว Compose Multiplatform เฟรมเวิร์คสำหรับเขียน UI ของภาษา Kotlin เวอร์ชันเสถียร 1.0 พร้อมแล้วสำหรับงานโปรดักชัน
Compose Multiplatform เป็นการเขียน UI ของ Kotlin ด้วยภาษาแบบ declarative ตามสมัยนิยม โดยทำงานได้ข้าม 2 แพลตฟอร์มคือ แอพเดสก์ท็อปและเว็บแอพ ส่วน Kotlin บน Android ใช้เฟรมเวิร์ค Jetpack Compose ของกูเกิล ที่ JetBrains ระบุว่าเป็นพี่น้องกัน มี API ส่วนใหญ่เหมือนกัน สามารถแชร์คอมโพเนนต์ข้ามกันได้ และหากมีแอพ Android ที่เขียนด้วย Jetpack Compose อยู่แล้วก็สามารถนำมารันบนเดสก์ท็อปได้ง่ายมาก
เมื่อประมาณ 3 เดือนที่แล้ว JetBrains เปิดตัวโลโก้ใหม่ของ Kotlin ที่ยังเป็นตัว K แบบของเดิม แต่เปลี่ยนจากสีส้ม-น้ำเงิน มาเป็นการไล่สีม่วง-น้ำเงินแทน พร้อมปรับรูปแบบฟอนต์ (typeface) มาใช้ฟอนต์ JetBrains Sans ให้เข้าชุดกับผลิตภัณฑ์อื่นๆ ของบริษัท
JetBrains ให้เหตุผลว่าคู่สีเดิมดูล้าสมัย และการใช้แถบสี (stripe) ก็ดูไม่เป็นเอกลักษณ์ จึงตัดสินใจเปลี่ยนสีให้เหมือน Facebook Messengerให้ดูสว่างและสดใสขึ้น กลายเป็นการไล่สี (gradient) แบบที่เห็น
กูเกิลออกหลักสูตรพัฒนาแอพ Android ด้วยภาษา Kotlin เพื่อให้ครูสามารถนำไปสอนนักเรียนต่อได้
หลักสูตรนี้เป็นการอัพเดตหลักสูตร Android Development เดิมในปี 2018 ให้ทันสมัย เปลี่ยนมาใช้ภาษา Kotlin เป็นหลัก และใช้เทคนิคใหม่ๆ ของโลก Android เช่นการเรียกใช้ไลบรารี Android Jetpack
สิ่งที่กูเกิลมีให้คือ สไลด์สำหรับครูใช้สอน, แบบทดสอบเขียนโค้ดจริง, โค้ดตัวอย่างบน GitHub โดยครูสามารถนำไปดัดแปลงให้เหมาะกับวิธีสอนของตัวเอง ผู้เรียนไม่จำเป็นต้องมีประสบการณ์ Android หรือ Kotlin มาก่อน แต่ควรมีพื้นฐานการเขียนโปรแกรมแบบ object-oriented, ใช้โปรแกรม IDE และ GitHub เป็น
Netflix รายงานถึงการใช้ Kotlin Multiplatform เพื่อแชร์โค้ดระหว่างแอปบน iOS และ Android ลดโค้ดซ้ำซ้อนระหว่างแพลตฟอร์ม โดยเริ่มจากโมดูลที่ชื่อว่า Hendrix ในแอป Prodicle ที่ Netflix ใช้เป็นการภายในสำหรับกองถ่ายที่ผลิตงานให้แพลตฟอร์ม
Hendrix เป็นระบบสคริปต์สำหรับอ่านคอนฟิกและแปลผลก่อนนำไปใช้งานจริง โดยเหตุผลที่ต้องใช้ Hendrix มีตั้งแต่การทำ A/B testing, ค่าเฉพาะตัวอุปกรณ์แต่ละประเภท, พื้นที่ที่ผู้ใช้ใช้งานอยู่ก็อาจจะมีฟีเจอร์ต่างกัน เดิม Hendrix พัฒนาแยกกันสองโมดูลระหว่าง Kotlin บน Android และ Swift บน iOS
กลายเป็นธรรมเนียมของซอฟต์แวร์รุ่นใหม่ๆ ไปแล้ว ที่เปลี่ยนมาออกรุ่นใหม่ตามระยะเวลาที่แน่นอน แทนการอิงฟีเจอร์ใหญ่ๆ ที่อาจไม่รู้ว่าต้องรอนานแค่ไหนถึงพร้อม ตัวอย่างของภาษาโปรแกรมที่เปลี่ยนมาใช้ระบบนี้คือ Java (ทุก 6 เดือน), .NET (ทุก 1 ปี), Python (ทุก 1 ปี)
JetBrains ออก Kotlin เวอร์ชัน 1.4 ซึ่งทิ้งช่วงห่างจากเวอร์ชัน 1.3 เกือบ 2 ปี ธีมหลักของเวอร์ชันนี้คือการปรับปรุงคุณภาพ และแก้บั๊กด้านประสิทธิภาพของ Kotlin กว่า 60 ตัว ทำให้การเปิดโปรเจค Kotlin ขนาดใหญ่ หรือการไฮไลท์ซอร์สโค้ดรวดเร็วขึ้นมาก (ต้องใช้กับ IntelliJ IDEA 2020.1+ หรือ Android Studio 4.1+ ขึ้นไป)
ในงานเปิดตัว Android 11 Beta กูเกิลนำเสนอ Modern Android Developement แนวทางการพัฒนาแอพยุคใหม่บน Android ที่ประกอบด้วยองค์ประกอบ 5 ประการที่กูเกิลแนะนำ
Duolingo แอพสอนภาษาต่างประเทศชื่อดัง เล่าประสบการณ์การย้ายแอพเวอร์ชัน Android จากที่เขียนด้วยภาษา Java มาเป็น Kotlin เสร็จสมบูรณ์แล้ว 100%
Duolingo ระบุว่าใช้เวลาย้ายจาก Java เป็น Kotlin ทั้งหมด 2 ปี (เริ่มทำช่วงต้นปี 2018) เหตุผลที่ย้ายเป็นเพราะ Kotlin เขียนง่ายกว่า ดูแลโค้ดง่ายกว่า ตัดข้อกังวลเรื่องปัญหาแครช (Duolingo บอกว่าข้อความ commit ยอดฮิตช่วงก่อนหน้านี้คือ Fix NullPointerException crash ซึ่งตอนนี้ไม่มีอีกแล้ว)