Tags:
Node Thumbnail

คนที่ใช้ IDE ของค่าย JetBrains คงคุ้นเคยกับแอพ JetBrains Toolbox ที่ใช้จัดการอัพเดตซอฟต์แวร์ จัดการเวอร์ชัน และโปรเจคต์ที่ทำงานค้างอยู่ ปัจจุบันแอพตัวนี้มีผู้ใช้มากกว่า 1 ล้านคนต่อเดือน ตามฐานผู้ใช้ IDE ของ JetBrains

ล่าสุดทีมของ JetBrains ออกมาเล่าเบื้องหลังการเปลี่ยนแอพ Toolbox ที่เดิมเขียนด้วย C++/React/Chromium มาเป็น Kotlin 100% ซึ่งถือเป็นตัวอย่างการเปลี่ยนผ่านของ JetBrains ที่หันมาใช้ภาษาของตัวเองกับแอพเดสก์ท็อปด้วย

หน้าตาของแอพ JetBrains Toolbox

No Description

Victor Kropp หัวหน้าทีม Toolbox เล่าว่าจุดเริ่มต้นของแอพ Toolbox เกิดขึ้นในปี 2015 โดยในช่วงเริ่มทำ เลือกใช้ภาษา C++ เขียน business logic ส่วนฝั่งอินเทอร์เฟซใช้ Chromium Embedded Framework + React + HTML/CSS/JS

เหตุผลที่เลือกแนวทางนี้ เป็นเพราะไม่ต้องการฝัง Java Runtime Environment (JRE) ขนาดหลายร้อย MB กับแอพเครื่องมือตัวเล็กๆ ส่วนตอนนั้น Kotlin ยังไม่ออกเวอร์ชัน 1.0 จึงยังไม่พร้อมสำหรับงานโปรดักชั่น

แต่ปัญหาของ Toolbox ตามแนวทางข้างต้นมีหลายอย่าง เช่น Chromium Embedded Framework กินแรมเยอะ (อย่างน้อย 200 MB), ต้องใช้สถาปัตยกรรม client-server ภายในแอพตัวเดียวกัน สิ้นเปลืองทรัพยากรในการส่งข้อมูลภายในตัวแอพเอง, การใช้สองภาษาคือ C++/JavaScript ทำให้ดูแลโค้ดได้ยาก ต้องแยกทีมเป็นสองทีม

เมื่อแพลตฟอร์ม Kotlin พร้อมมากขึ้นในปี 2021 บวกกับ JetBrains ออกเฟรมเวิร์ค Compose Multiplatform สำหรับเขียนแอพเดสก์ท็อป ทำให้ทีม Toolbox ตัดสินใจย้ายมาใช้ Kotlin 100% ช่วยแก้ปัญหาทั้งเรื่องทรัพยากรที่ต้องการ และการใช้ภาษา Kotlin ภาษาเดียวเขียนทั้ง backend/frontend ลดภาระในการดูแลลง บั๊กน้อยลง ประสิทธิภาพดีขึ้น

Kropp บอกว่าทางเลือกอื่นที่เคยมองเอาไว้นอกจาก Kotlin คือ Java Swing ซึ่งเก่าไปแล้ว หรือ JavaFX ที่ไม่มีคนใช้งานในวงกว้าง สุดท้ายจึงเลือก Kotlin/Compose for Desktop ที่ตอนนั้นเพิ่งเริ่มประกาศพัฒนา

Kropp เล่าว่าเขาโชคดีที่อยู่บริษัทเดียวกับทีม Kotlin และทีม Compose ทำให้ได้ลองใช้ซอฟต์แวร์เวอร์ชันใหม่ๆ ที่ยังไม่สมบูรณ์ก่อนใครเพื่อน และหากพบบั๊กก็แจ้งแก้ปัญหาได้ทันที ซึ่งหลายครั้งทีม Kotlin/Compose แก้บั๊กให้ภายในวันนั้นเลย นอกจากนั้น เขายังสามารถใช้โค้ดภาษา Kotlin ที่ทีมอื่นของบริษัทเขียนไว้แล้ว เช่น นำโค้ดค้นหาโปรเจคต์จาก IntelliJ IDEA มาใช้กับหน้าโปรเจคต์ของ Toolbox โดยไม่ต้องเขียนใหม่

อย่างไรก็ตาม กระบวนการเปลี่ยนผ่านก็เจอปัญหาอยู่บ้าง เช่น ตอนแรกทีมของเขาเลือกใช้คอมโพเนนต์ Compose Material ที่ใช้เขียน UI ของ Android ซึ่งพัฒนาไปเยอะแล้ว แต่พบว่าคอมโพเนนต์ชุดนี้ออกแบบมาสำหรับ UI มือถือ มีปุ่มขนาดใหญ่สำหรับจอสัมผัส และปุ่มไม่มีสถานะ hover เมื่อนำเมาส์ชี้ (เพราะไม่มีแนวคิดนี้บนจอสัมผัส) ทำให้สุดท้ายเขาต้องสร้างคอมโพเนนต์ UI สำหรับเดสก์ท็อปขึ้นมาเอง และเตรียมจะเปิดซอร์สโค้ดในอนาคต

Kropp สรุปว่าการย้ายมาใช้ Kotlin ทำให้กระบวนการทำงานง่ายขึ้นมาก เพราะทุกคนในทีมเขียนภาษาเดียวกันหมด สื่อสารกันง่าย และตัวโครงสร้างของตัวภาษาก็เขียนสนุกกว่า C++ หรือ JavaScript ด้วย

ที่มา - JetBrains

Get latest news from Blognone

Comments

By: sukjai
iPhoneAndroidRed HatUbuntu
on 27 December 2021 - 10:39 #1235564

ในแง่ผมถ้าจะให้ดีเลยควรมีรันไทม์เป็นของตัวเองไปเลยจะดีมาก ไม่อยากให้ไปพึ่ง jvm เลย ทำให้รู้สึกลดคุ้นค่ามันลงไปเลย แม้ผมจะใช้ java เป็นเครื่องมือหลักในการทำมาหากินมันก็รู้สึกเปรียบเทียบว่าศึกษา java เป็นเลยไม่ดีกว่าเหรอ แต่ก็เข้าใจครับว่าการทำแบบนั้นมันต้องใช้พลังงานทีมงานค่อนข้างเยอะ ผมหวังว่าทีม kotlin จะสร้างรันไทม์เป็นของตัวเองในเร็ววัน

By: wireless4024 on 27 December 2021 - 13:07 #1235573 Reply to:1235564

ก็มี Kotlin native นะครับ ใช้ llvm แปลงเป็น executable แต่ใช้ library ของ java ไม่ได้เลย kotlin jvm เลยประหยัดเวลาในการพัฒนามากกว่า

By: sukjai
iPhoneAndroidRed HatUbuntu
on 27 December 2021 - 15:36 #1235582 Reply to:1235573

อันนี้เป็นความรู้ใหม่ขอบคุณครับ

By: mk
FounderAndroid
on 27 December 2021 - 15:56 #1235585 Reply to:1235582
mk's picture

ถ้าเอาจากเว็บ Kotlin ตอนนี้คือตัวภาษาเดียว ใช้ได้ 3 แบบครับคือ JVM, native, JS แล้วค่อยไปซอยย่อยอีกที

No Description

By: sukjai
iPhoneAndroidRed HatUbuntu
on 27 December 2021 - 16:19 #1235588 Reply to:1235585

ขอบคุณครับ ผมไม่ค่อยได้ติดตามข่าว kotlin เท่าไหร่ ผมไปศึกษาเพราะเจ้านายอยากให้เขียนแอปบนมือถือที่ทำงานได้ทั้ง ios และ andriod ตอนนั้นไม่รู้จะเลือกตัวไหนดี เลยเอา kotlin มาศึกษาอยู่พักหนึ่ง สุดท้ายไปเลือก flutter หลังจากนั้นก็ไม่ได้ทำอะไรต่อเพราะงานหลักก็ทำแทบไม่ทัน โปรเจคเขียนแอปบนมือถือเลยพับเก็บไว้เลย ส่วนใหญ่ว่างๆ ก็จะหยิบ flutter ขึ้นมาลองผิดลองถูกนิดหน่อย

By: whitebigbird
Contributor
on 27 December 2021 - 22:45 #1235600
whitebigbird's picture

ยังไม่ได้อัพเดทตัว toolbox แฮะ รู้แต่ว่าก่อนหน้ามันกินทรัพยากรเยอะมาก ใช้บน mbp บางทีจู่ๆ พัดลมก็ทำงานหนัก พอเปิด activity monitor ก็เห็นว่า toolbox กำลังใช้ cpu สูงมาก จนต้องคลิกขวา quit