ไว้ global String ทุกตัวในโปรเจคจะสามารถเรียก
"every string can".encodeSpaces()
ได้ทันทีทำให้ลด Utility class ลงไปได้เยอะ

Table of contents

Nonthawit
CEO | Engineer | Designer
VIEW
18.2k
CATEGORY
LAST UPDATED
May 22, 2017
Kotlin เป็นภาษาใหม่พัฒนาขึ้นมาเพื่อใช้แทนภาษา Java ที่มีจุดอ่อนอยู่หลายอย่าง ที่ไม่สามารถแก้ไขอะไรได้มากนัก ซึ่งหลักๆจะเป็นเรื่อง backward compatibility JAVA 6 7 8 และ feature อีกหลายๆอย่างที่ JAVA ไม่มีเช่น null safety, Extension function เป็นต้น
แนวคิดของ Kotlin คือเข้ากันได้ 100% กับ Java เพื่อให้สามารถใช้ประโยชน์จาก library API และ tools จำนวนมากที่มีอยู่แล้วในโลกของ JAVA และใส่ feature ที่ JAVA ไม่มีเข้าไปอีกด้วย
เป้าหมายของ Kotlin คือนำมาใช้แทน JAVA โดยยังรักษาโค้ด JAVA เพื่อให้ทำงานร่วมกับโปรเจคเก่าที่เขียนไปแล้วได้


เพราะสุดท้ายแล้วไฟล์ .kt จะถูกแปลงให้เป็น .java ในรูปอย่างง่าย เสร็จแล้วตัว compiler จะแปลงเป็น .class ต่ออีกทีเพื่อเอาไป run บน JVM อยู่ดีครับ (ถ้าในภาพจะเป็นขั้นตอนของ JFlex คือเปลี่ยน .kt เป็น .java)
.kt --> .java --> .class
แต่อนาคตได้ยินข่าวมาว่า kotlin กำลังพัฒนาให้ตัวเอง run เป็น native ได้โดยไม่ต้องพึ่ง JVM อีกต่อไปอันนี้ต้องรอดูกันต่อไป
แต่เราค่อนข้างมันใจว่าเป็นภาษานี้อนาคตไกลแน่นอน

ส่วนใครยังไม่แน่ใจว่าจะหันมาใช้ดีไหม? มันทำงานบน production ได้จริงรึป่าว? kotlin จำเป็นขนาดนั้นเลยหรอ? เราก็เคยเป็นหนึ่งใน user ที่ชอบถามคำถามแบบนี้ แต่จากที่ลองเล่นดูตอนนี้เปลี่ยนความคิดละ และเป็นที่มาของบล๊อกในวันนี้ด้วยเช่นกัน ฮาๆๆๆ
คำตอบคือใช้งานได้จริง(นานแล้วด้วยครับ) เพราะสุดท้ายมันจะถูกแปลงเป็น .java อยู่ดีคับ เราจะมีความรู้สึกว่า kotlin มันไปครอบ JAVA อีกทีหนึ่ง และ tech startup หลายเจ้าก็ใช้ kotlin เป็น production อยู่นะ บวกกับ google ตกลง support kotlin เป็นที่เรียบร้อยแล้วด้วย 😎
ส่วนถามว่าจำเป็นไหม เราขอมองในมุมคนเขียน JAVA มาก่อน บางอย่างเราไม่สามารถใช้ใน JAVA ได้เราเลยมองว่าไม่จำเป็นขนาดนั้น (ซึ่งจริงๆก็เพราะเราไม่เคยใช้ต่างหากเลยบอกว่าไม่จำเป็น) แต่ถ้ามองกลับกัน ถ้าเกิดวันหนึ่งมี feature ที่ดีกว่า สะดวกกว่า เราจะใช้ไหม? เช่นเดียวกับ kotlin คนมองผิวเผินเหมือนมันจะไม่จำเป็นขนาดนั้น เพราะไม่เคยลองจับกันจริงๆถึงไม่เห็นประโยชน์ของมัน มิเช่นนั้นคงไม่มีภาษานี้เกิดขึ้นมา
และหลังจากที่เราใช้เวลาในการศึกษาอยู่ประมาณ 3 วัน เห็นข้อดีหลายๆอย่างของตัว kotlin ที่ JAVA ไม่สามารถทำได้อยู่หลายอย่างด้วยกัน แล้วทำไมเราจะไม่ใช้หละ?
Kotlin ≈ Swift ≈ Scala ≈ Python ≈ JAVA (มั้ง 😜)
ในบล๊อกนี้เราขอพูดแค่เกรินให้บาง feature เท่านั้นเพื่อให้เห็นว่าแตกต่างจาก JAVA อย่างไร เนื่องจากเราทำ code lab ไว้ให้ไปศึกษาต่อกันแล้วทุกอย่างที่เป็น basic อยู่ในนั้น

kotlin เห็นปัญหาของ JAVA เรื่อง NullPointerException เลยคิดเรื่อง null safety ขึ้นมาก
คือ ถึงตัวแปรจะมีค่าเป็น null b.length ก็ยังสามารถเรียกใช้งานได้แต่ค่าที่ได้จะเป็น null เช่นกัน ซึ่งถ้าเป็น JAVA คงหนีไม่พ่น NullPointerException แน่นอน
ทำให้ลดแอปบึ้มลงไปได้เยอะ และไม่ต้องมานั่งใส่
if( var == null) return;
ให้เสียเวลา
kotlin ทำได้เหมือน JAVA หมดแต่แค่บรรทัดเดียวชิวๆ

นึกภาพถ้าเราต้องการจะจัดการกับ String เพิ่มเติมเราคงหนีไม่พ้น StringUtility.java เป็นแน่แต่ kotlin ไม่ต้องสร้าง class ครับแค่ประกาศ

ไว้ global String ทุกตัวในโปรเจคจะสามารถเรียก
"every string can".encodeSpaces()
ได้ทันทีทำให้ลด Utility class ลงไปได้เยอะ
อย่างที่เราบอก kotlin เห็นปัญหาของ JAVA หลายๆอย่าง kotlin เลยออกแบบมาเพื่อแก้ปัญหา pain ต่างๆเหล่านี้
feature เหล่านี้เป็นแค่ส่วนเดียวของ Kotlin มันยังทำอะไรได้อีกค่อนข้างเยอะมาก ไปศึกษาต่อกันเองได้เนาะใน code lab
ถ้ามาพูดถึง learning curve ใครมีพื้นฐาน JAVA มาก่อนจะสบายมากครับ
จากที่เราลองศึกษาจริงๆจังๆอยู่ 3 วันก็ cover basic เกือบทั้งหมดเพราะมัน concept เดียวกัน แค่เปลี่ยน syntax และเพิ่มบาง feature ที่ต้องเรียนรู้ใหม่ก็เท่านั้น อาจจะไม่ชินในตอนแรกๆอยู่บ้าง
แต่ตัว kotlin syntax ค่อนข้างอ่านง่ายอยู่ครับ และพวก resource หาอ่านก็เริ่มเยอะมากแล้ว โดยส่วนตัวเริ่มแรกแนะนำให้อ่านผ่าน kotlinlang.org เลยครับเพื่อปูพื้นฐานมันก็ไม่ได้เหมือนกับ JAVA ซะทีเดียว มีบาง concept ที่เราควรทำความเข้าใจก่อนไปลงโค๊ดกับโปรเจคจริงๆ
Kotlin ≈ Swift ≈ Scala ≈ Python
ลักษณะ code lab ที่เราทำไว้ให้เพื่อให้เป็นพื้นที่ลองผิดลองถูกของภาษา kotlin กัน เราเชื่อว่าอ่านอย่างเดียวยังไงก็ไม่พอมันต้องลองเขียนโค๊ดจริงๆไปด้วย
วิธีที่เราทำคือเปิดเว็บ kotlinlang.org/docs/reference/ และลองโค๊ดจริงๆกับ code lab ไปพร้อมๆกัน สงสัยส่วนไหนก็ลองเล่นใน code lab ได้เลยมันจะช่วยให้เราเข้าใจมากขึ้น
โดย code lab เรา follow หัวข้อตาม doc reference ของทาง kotlinlang.org/docs/reference/

class แทนหัวข้อ lecture ต่างๆ
ซึ่งใน class ก็จะมีอยู่ 2 ส่วนหลักๆคือ

ปุ่ม จะแทน class หรือ lecture นั้นๆเวลากดมันจะเอา message ใน
fun setupLogcatMessage(): String {
...
}ไปโชวใน logcat ให้เลยเพื่อดูผลลัพธ์ทำความเข้าใจ

code lab นี้จะเป็นประโยชน์ให้กับคนที่อยากหันมาฝึก Kotlin กันนะครับ เพื่อเอาไปต่อยอดทำอย่างอื่นกันต่ออ่าน blog หรือ ดู VDO conference หรือ ทำโปรดัก
วันนี้คงไว้เท่านี้ก่อนเจอกันบล๊อกหน้าครับ

อย่าลืม share ให้มนุษย์ที่จะหัด kotlin คนอื่นด้วยหละ 😎
KNOWLEDGE


Nonthawit
CEO | Engineer | Designer
เข้าใจการทำ Selector แบบ Ripple effect


Nonthawit
CEO | Engineer | Designer
20 สิ่ง ที่ได้หลังจากเป็น Android developer ที่ Nextzy 3 เดือน
บทความนี้แชร์ประสบการณ์ 3 เดือนแรกของการทำงานเป็น Android Developer ที่ Nextzy ครอบคลุมทั้งด้าน technical เช่น MVP architecture, Android Lifecycle, ProGuard, Git workflow และการเขียน Unit Test รวมถึงด้าน soft skill อย่างการสื่อสารกับทีม, การแชร์ความรู้, และการเขียนโค้ดให้ readable และยืดหยุ่น นอกจากนี้ยังสะท้อนวัฒนธรรมองค์กรที่เน้นทีมเวิร์ค การ review โค้ด และบรรยากาศการทำงานที่สนุกสนาน ซึ่งล้วนช่วยลด learning curve และพัฒนาทักษะได้เร็วกว่าการเรียนรู้คนเดียว
![[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก](https://image.nextzy.tech/1_Aleix_TFC_7yz_Qh_Q_Sx_GV_Rqxw_a29e28219a.png)

Nonthawit
CEO | Engineer | Designer
[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก