ระเบิดพลังที่แท้จริงของ Java ไปกับ KBTG

jo@sabotender
KBTG Life
Published in
6 min readNov 25, 2023

สวัสดีครับกัลยาณมิตรทุกท่าน วันนี้ผมมีโอกาสได้มาเป็นเขียดผู้มีแกก… เย้ย! ได้เป็นแขกผู้มีเกียรติให้มาเผางาน… เย้ยย! มารังสรรผลงาน เพื่อจะมาขายของพวกคุณ… เย้ยยย! มาพบปะสนทนากับทุกท่านกันแบบชิล ๆ ให้เข้ากับบรรยากาศช่วงที่กรมอุตุบอกว่าประเทศไทยเข้าสู่หน้าหนาว ซึ่งผมอยู่ กทม. ก็เป็นหนุ่มฮ็อตอะนะครับ ฮ็อตสุด ๆ ฤดูหนาวมาเร็วไปเร็ว กลับมาเปิดแอร์เป็นว่าเล่น เหมือนเปิดตู้เย็นหาของกิน

เล่นตลกไปหนึ่งย่อหน้าแล้ว คิดว่าท่านผู้อ่านยังไม่ทราบกันเลยว่าวันนี้กระผมจะมาเล่าอะไร ยังไงก็ต้องขอบพระคุณที่ไม่กดปิดวินโดวส์กันไปตั้งแต่ย่อหน้าที่แล้วนะครับ บทความวันนี้ไม่ได้กะจะให้บรรจุเนื้อหาความรู้หนัก ๆ หรือเทคนิคไอทีที่ยาก ๆ หากแต่เป็นบทความเฉพาะกิจที่ไม่ได้วางแผนจะเขียนมาก่อนเลย บทความนี้กระผมได้รับแรงบันดาลใจอย่างกะทันหัน (ซึ่งเรียกอีกอย่างหนึ่งว่าคำสั่งจากสวรรค์) ที่จะมาเล่าสู่กันฟังถึง Roadmap ของภาษา Java ที่น่าสนใจ ซึ่งตอนนี้ก็ปลายปี 2023 จะเข้าสู่ปี 2024 แล้ว มันกำลังจะมีอะไรเกิดขึ้นกันนะ ปิดท้ายด้วยรายละเอียดของกิจกรรมดี ๆ จาก KBTG เพื่อแสดงให้เห็นถึงทิศทางในการสนับสนุนชุมชนชาว Java กันสักเล็กน้อย ไปเริ่มกันเลย!

ปี 2023 ภาษา Java อายุ 28 แล้วนะจ๊ะ

ผมเป็นคนที่โตมากับแกรมมี่ อาร์เอส นินเทนโด เพลย์สเตชัน และที่สำคัญผมโตมากับภาษา Java (นี่เป็นอีกครั้งที่ผมจะสปอยอายุของตัวเอง เพื่อ???) ภาษา Java ถือว่าเป็นภาษาสำหรับเขียนโปรแกรมที่มีอายุยาวนานและยังคงความป๊อปปูล่ามาถึงปัจจุบันได้อย่างน่าสนใจ ในช่วงเวลาเกือบ 30 ปีที่ผ่านมา ก็มีทั้งขาขึ้น ขาลง ขาแข็ง ขาอ่อนบ้าง เป็นสัจธรรมไป

ในยุคแรกเริ่ม ภาษา Java พรีเซนต์ตัวเองด้วยวลีที่ว่า Write Once, Run Anywhere แต่สมัยนี้นี่ใครพูดวลีนี้นี่นอกจากจะดูเชย (อันนี้ผมคิดเอาเองนะครับ) แล้วยังเป็นการสปอยอายุคุณเองอีก (แล้ว) ด้วย แต่ถ้าลองเปลี่ยนนิดหน่อยเป็นประมาณ Write Once, Run Containers! ผมว่าพอได้

จุดแข็งของภาษา Java

ภาษา Java เหมือนคนที่ผ่านโลกมามาก (บางทีผมก็รู้สึกว่า นี่ผมกำลังเขียนด่าหรือเขียนชมกันแน่) จุดที่แข็งมาก ๆ ของ Java ไม่ใช่หัวครับ แต่คือสิ่งที่ฝรั่งเขาเรียกว่า “Ecosystem” คำนี้แปลเป็นไทยได้ว่า “ระบบนิเวศ” ซึ่งกว้างขวางมาก ๆ นั่นแปลว่าไม่ว่าคุณอยากจะทำอะไร Java มีให้คุณหมด และไม่ได้มีแบบเล่น ๆ ขำ ๆ นะครับ การที่อยู่มานาน นั่นแปลว่ามันถูกพัฒนาให้เสถียรมาก ๆ ผ่านช่วงของการลองผิดลองถูก มีการแก้ไข พัฒนา และปรับปรุงมาเรื่อย ๆ ทำให้เวลาเราเอาไปใช้จะมีปัญหาน้อย และต่อให้เจอปัญหา มีข้อสงสัย หรืออยากได้คำแนะนำเพิ่มเติม เพียงแค่เราลองไปเสิร์ชดู ก็จะพบว่ามีคนถาม มีคนทำ หรือมีคนเจอมาก่อนเราแทบจะแน่นอน 100% คำว่า Ecosystem นี้หมายรวมถึง Community ของผู้ใช้งานภาษา Java ด้วย ที่เรียกได้ว่ามหึมามาก ๆ ในทางกลับกันเราอาจจะมีประสบการณ์ประมาณว่าเราต้องไปใช้ผลิตภัณฑ์ที่มีอายุน้อยหรือใหม่มาก ๆ ในตลาด พอใช้ไปได้พักหนึ่งก็เจอปัญหา เจอบั๊กต่าง ๆ ใช้กับงานง่าย ๆ ไม่เป็นไร เจองานซับซ้อนไปต้องขอพักใจก่อน บางครั้งเจอปัญหามาก ๆ เข้า พาลนึกว่าเราเป็น Tester หรือ QA ให้ผลิตภัณฑ์ของเขาซะงั้น เหตุการณ์ประมาณนี้เกิดขึ้นน้อยมากกับแพลตฟอร์มของ Java

Meme ที่ล้อเกี่ยวกับ Java Evolution ตลอดยี่สิบปีที่ผ่านมา

ภาษา Java มีอายุอานามมากจนสามารถเกิดเป็นมีมที่เอาเวลามาล้อได้ สำหรับใครที่อาจจะไม่เคยเห็น ในรูปด้านบนเป็นภาพจากตัวติดตั้งภาษา Java เวลาเราเอามาติดตั้งในเครื่องครับ 20 ปีผ่านไปก็ยังคงเป็น “3 Billion Devices Run Java” เท่าเดิมเด๊ะ ๆ

มามองจุดแข็งทางฝั่งผู้ใช้งานบ้าง Java Developers เป็น Full-stack Developers ที่มาก่อนกาล Java ตั้งแต่อดีตถึงปัจจุบันเป็นภาษาที่ใช้เขียนได้ทั้ง Back-end และ Front-end ใช้เขียนได้ทั้ง Web และ Mobile รวมไปถึงเขียน Desktop Application รองรับทั้งงาน Online งาน Batch รองรับสถาปัตยกรรมคอมพิวเตอร์ที่หลากหลาย ตั้งแต่ Client/Server, 3-Tier, N-Tier, มา Microservices อยู่ข้างล่าง On-premise อยู่ข้างบน On Cloud เรียกว่าใช้ภาษาเดียวปิดจ๊อบได้เลย ไม่ต้องมากังวลเรื่อง Compatibility และ Interoperability ระหว่างภาษา ในแง่ของการบริหารทีมก็ง่ายกว่า เช่นเดียวกันกับการพัฒนาทักษะของทีมบนภาษาเดียวกัน

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

จุดอ่อนของภาษา Java

ภาษา Java เริ่มออกอาการน่าเป็นห่วงตั้งแต่ที่บริษัท Oracle ยักษ์ใหญ่ในวงการฐานข้อมูลมาซื้อไป เสร็จแล้วก็ประกาศโมเดลเรียกเก็บเงินผู้ที่ใช้ภาษา Java นั่นแหละ ที่สำคัญเจ้าโมเดลการเก็บเงินนี่นอกจากซับซ้อนแล้ว ยังเปลี่ยนบ่อยเสียด้วย เปลี่ยนบ่อยนี่คือมักจะเปลี่ยนให้แพงขึ้นนะครับ ผลกระทบของปรากฏการณ์นี้ ผมเชื่อว่าปัจจุบันชาว Java ทราบกันดี คือการหลีกหนีกันไปใช้ OpenJDK ซึ่งใช้ได้ฟรีและมีหลายยี่ห้อให้เลือกในท้องตลาด บางส่วนก็อพยพไปตั้งรกรากใหม่และเริ่มออกเดตกับภาษาอื่น

นี่เป็นจุดอ่อนแรกที่ทำให้การใช้งานภาษา Java กลายเป็นเรื่องที่ซับซ้อนโดยไม่จำเป็น (เล้ยยยยยย) นั่นคือเรื่อง License ที่จะทำให้เกิดคำถามประมาณ แล้วฉันต้องจ่ายเงินเท่าไหร่ ฉันควรจะอัพเกรดไหม ฉันควรใช้ OpenJDK ของที่ไหนดี แนว ๆ นี้เต็มไปหมด ขนาดมือเก๋าเองยังสับสนอยู่ไม่น้อย ผมเองพอได้ข่าวก็เข้าไปอ่านรายละเอียดในอินเทอร์เน็ต ก็คิดว่าเข้าใจอยู่นะครับ แต่พอได้คุยกับคนของ Oracle เท่านั้นแหละ งง!

ไทม์ไลน์ของการเปลี่ยน Licensing Model ของ Oracle

ในเชิงไวยากรณ์ของภาษา ถ้าเทียบกับภาษาในการเขียนโปรแกรมสมัยใหม่ แบบภาษา G ภาษา R หรือ ภาษา P (นามสมมติ) ผมว่าภาษา Java เป็นภาษาที่มีพิธีรีตรองเยอะครับ เป็นภาษาที่สละสลวยด้วยพรรณนาโวหาร แต่ไม่ทันใจวัยทีน ส่วนวัยเคยทีนแบบผมบางทียังหงุดหงิดเลย จุดนี้ถ้ามองให้ลึกขึ้น ผมก็พอเข้าใจว่าภาษา Java เกิดมาในยุคสมัยที่คนเราไม่ได้รู้จักคอมพิวเตอร์ดีและกว้างขวางอย่างสมัยนี้ ผมจำได้ว่ายุคนั้นมือถือยังไม่เป็น Touch Screen เลย ภาษาในการเขียนโปรแกรมจึงเน้นไปที่หลักการหรือไวยากรณ์ที่แสดงให้คนเข้าใจว่าคอมพิวเตอร์ทำงานอย่างไร แต่คอมพิวเตอร์ในปัจจุบันนอกจากสเปคจะแรงมาก ๆ แล้ว คนก็คุ้นเคยกับคอมพิวเตอร์มากกว่าแต่ก่อน ภาษาในการเขียนโปรแกรมสมัยใหม่จึงเน้นมาที่การอำนวยความสะดวกให้กับนักเขียนโปรแกรมเป็นหลัก หรือศัพท์คำว่า Developer’s Experience นี่แหละครับ โดยปล่อยให้คอมพิวเตอร์จัดการความซับซ้อนให้เราแทน ในแบบที่เราไม่ (จำเป็น) ต้องไปเข้าใจมันอย่างลึกซึ้งเท่าเดิมแล้ว คนที่ศึกษาภาษา Java ในช่วงแรกจะรู้สึกได้เลยว่ามันต้องเขียนโค้ดนั่นนู่นนี่หลายบรรทัด ต้องเขียนเยอะกว่าภาษาอื่น เพื่อให้ได้ผลลัพธ์ที่เหมือนกัน

แต่เพื่อให้ความเป็นธรรมกับภาษา Java ต้องบอกว่า Java เวอร์ชันใหม่ ๆ ก็มีการออกไวยากรณ์ใหม่ ๆ API ใหม่ ๆ ที่เขียนง่ายขึ้น ใช้ง่ายขึ้น กระชับขึ้น มาให้ใช้กันนะครับ ยกตัวอย่างเช่น

  • Try-with-Resources ใน Java 7
  • New Date Time APIs ใน Java 8
  • New HTTP Client ใน Java 11
  • Switch Expressions แบบใหม่ใน Java 14
  • Record Classes และ Pattern Matching for instanceof ใน Java 16
  • ฯลฯ

ปัญหาคือเวลาเราเรียนรู้ภาษา Java เราดันไปเรียนพวกวิธีเขียนของเวอร์ชันแรก ๆ ที่มันเก่าโบราณคร่ำครึ ส่วนคนที่ใช้เวอร์ชันเก่า ๆ อยู่ก็ไม่มีเวลาที่จะไปศึกษาของใหม่เพื่อเอามาปรับปรุงของที่ใช้อยู่ปัจจุบัน ซึ่งจริง ๆ แล้วผมมองว่าปัญหาอยู่ที่การเรียนรู้ของเรามากกว่าที่ตัวเทคโนโลยีเอง อย่างไรก็ตามมันก็ค่อนข้างเป็นจุดอ่อนของภาษา Java แหละครับ ถ้าถามว่าทำไมไม่เปลี่ยนไวยากรณ์ให้ทันสมัยแบบยกเครื่องไปเลยล่ะ ภาษา Java เขามีจุดยืนในเรื่องของ Backward Compatibility เวลาเปลี่ยนอะไรแต่ละทีก็ต้องระมัดระวังไม่ให้กระทบกับโค้ดเดิม ไม่งั้นทัวร์ลงอีก

เปรียบเทียบรูปแบบการเขียนประโยค Switch ในแบบเก่าและแบบใหม่

ย้อนกลับมาที่คำว่า Ecosystem แต่คราวนี้กลายมาเป็นจุดอ่อนครับ ผมว่ามันเป็นดาบสองคม ในแง่ที่ว่าบางทีมันก็มีให้เยอะเกินไป เยอะจนความเสี่ยงมาตกอยู่ที่ผู้ใช้งาน เช่น ผมอยากจะหา Framework หรือ Library ดี ๆ สักตัวสำหรับทำ Logging ในระบบงานที่ผมเขียน ว่าแล้วผมก็ไปค้นหาในอินเตอร์เน็ต ทีนี้ล่ะ ผมจะเจอหลากหลายตัวมาก วิธีใช้ก็มีหลายหลาก ไปอ่านคอมเมนต์ตัวเดียวกันก็มีทั้งคนด่า คนชม คนบอกให้ใช้ คนบอกอย่าไปใช้ แล้วผมจะตัดสินใจเลือกอะไรดีล่ะ ถ้าเลือกผิด สมมติไปเลือกตัวที่ใช้ไปได้ปีสองปี เขาเลิกพัฒนาต่อ ก็กลายเป็นความเสี่ยงของผมอีกที่จะต้องมาเปลี่ยนในภายหลัง เป็นต้น (จะว่าไปผมแค่ยกตัวอย่างนะครับ งาน Logging ในภาษา Java จริง ๆ ไม่ได้เลือกยากขนาดนั้น ^^)

จุดแข็งที่ซ่อนอยู่

มียุคสมัยหนึ่งที่มหาวิทยาลัยต่างก็บรรจุภาษา Java ลงในวิชาเขียนโปรแกรมพื้นฐาน ทำให้นิสิตนักศึกษาส่วนมากรู้จักและสามารถพัฒนาระบบงานด้วยภาษา Java ได้ดีในระดับหนึ่ง ก่อนที่จะจบมาทำงานในสายงานของนักพัฒนาซอฟต์แวร์ แต่ในปัจจุบันที่เทคโนโลยีและการเขียนโปรแกรมได้แตกแขนงออกไปกว้างขวางมากขึ้น มีการปรับเปลี่ยนเอาภาษา P และภาษา JS (นามสมมติ) เข้ามาบรรจุเป็นวิชาพื้นฐานแทนภาษา Java โดยหลงเหลือภาษา Java ไว้ในฐานะของภาษาที่แสดงความเป็น Object-Oriented Programming ได้ดีที่สุด ประมาณนั้น

จากประสบการณ์ของคนที่โตมากับดราก้อนบอล เซนต์เซย่า กันพลา และโดราเอมอนอย่างผม ผมคิดว่าพลังที่แท้จริงของภาษา Java ในปัจจุบันนั้นไม่ใช่การที่มันเป็น Object-Oriented หรอกครับ แต่มันคือการที่เราสามารถใช้ภาษา Java เขียนโปรแกรมใน Paradigms อื่นได้อย่างหลากหลาย (อย่าถามผมนะว่าภาษาไทยของ Paradigm แปลว่าอะไร ผมไปกูเกิลมา มันตอบผมว่า “กระบวนทัศน์” ผมเลยตัดสินใจเขียนทับศัพท์ภาษาอังกฤษไปแบบที่เห็น)

เอาเป็นว่าผมขอยกตัวอย่างแทนการแปลคำว่า กระบวนทัศน์ ละกันครับ ถ้าพูดถึง Java Framework มหาชนอย่าง Spring Boot ที่ใน KBTG ก็มีการใช้กันอยู่มาก หากมีคนถามผมว่าพลังที่แท้จริงของ Spring Boot คืออะไร ผมก็จะตอบว่าคือ Declarative Programming ต่อด้วย Reactive Programming และปิดท้ายด้วยน้องใหม่ Native Java Programming ที่ผมสามารถเลือกมาประยุกต์ใช้ได้ตามต้องการ ส่วน Object-Oriented Programming หรือ OOP นั้นเป็นวิทยายุทธพื้นฐานที่เราต้องฝึกให้แน่นก่อน เพื่อต่อยอดไปฝึกคัมภีร์ขั้นที่สูงกว่าครับ แบบถ้าเราสำเร็จวิชา Declarative Programming แล้ว เราจะรู้ว่าโค้ด Java ก็เขียนสั้น ๆ ได้ ไม่ต้องมาร่ายพรรณาโวหารให้ยืดยาว แต่ละวิชาแต่ละคัมภีร์ก็จะให้ประสิทธิผลแตกต่างกันออกไป

คัมภีร์อีกอันหนึ่งที่ยังไม่ได้กล่าวถึงคือ Functional Programming ที่ภาษา Java ก็รองรับเช่นกัน แต่อย่างที่บอกครับ ภาพจำของภาษา Java มันดันไปติดกับความเป็น OOP อย่างเหนียวแน่นหนุบหนับแงะไม่ออก การเขียนภาษา Java ที่เป็น OOP บริสุทธิ์นั้นมันต้องประมาณสมัยยุคแรกเริ่มนู่นเลยครับ แถว ๆ Java 1.2-1.4 เรียกว่าเป็นวัยเด็กเบบี๋ของภาษา Java ที่ยังทำอะไรแอดวานซ์ไม่ค่อยได้ก็ไม่ผิดนัก

ความลับที่ไม่ลับ (แล้ว) ถัดมาจากเรื่อง Paradigms ที่อยากกล่าวถึง คือการทำงานของ JVM (Java Virtual Machine) ที่จะ Optimize การทำงานของโปรแกรมเราให้เร็วขึ้นเรื่อย ๆ ขณะทำงานหรือ Runtime เหมือนคนที่ทำงานอะไรซ้ำ ๆ มาก ๆ เข้าก็ยิ่งชำนาญและใช้เวลาน้อยลงเรื่อย ๆ ยังไงยังงั้น ซึ่งจุดนี้แหละทำให้แวบแรกที่เรารันโปรแกรม Java ของเรา แล้วรู้สึกท้อแท้ว่าทำไมมันช้า (กว่าภาษาอื่น) จัง แต่ที่ไหนได้พอรันไปมาก ๆ เข้าดันเร็วขึ้นมาเฉย เหมือนมีใครมาแอบจูนโค้ดแล้วไม่บอกเราหรือเปล่า (ฟระ) ซึ่งใครที่คลุกคลีอยู่ในแวดวง Java Performance Test น่าจะคุันเคยกับศัพท์นี้ครับ “JVM Warm-Up Period” ใช้ศัพท์เหมือนนักกีฬา ต้องวอร์มอัพก่อน ยังไม่เอาจริง อะไรงี้ แบบลีลาอะ

บางคนอาจจะสงสัยเหมือนผมว่า อ้าว ก็ทำให้มันเร็วตั้งแต่ทีแรกเหมือนชาวบ้านเขาสิ จะมาลีลาอยู่ทำไม ผมว่ามันเป็นสิ่งที่ต้องแลกมา เพื่อให้ตัวภาษามัน Write Once, Run Anywhere ตั้งแต่อดีตกาลมาแล้วมันแก้ลำบากละ แต่ขอสปอยเรื่อง GraalVM ที่จะเล่าเพิ่มในบทถัดไปก่อนสักนิดหนึ่งว่า GraalVM ที่เป็น JVM ตัวใหม่จาก Oracle นั้นถูกออกแบบมาเพื่อแก้ไขปรับปรุงเจ้าประเด็นนี้แหละ (ใครสนใจลองเอาคีย์เวิร์ดคำว่า Ahead-of-Time (AOT) ไปค้นดูต่อกันได้) รวมไปถึงความสามารถในการทำ Optimization ที่ดีขึ้นมาก ๆ ด้วยสิ่งที่เรียกว่า Dynamic Just-In-Time Compiler ซึ่งผลลัพธ์ของมันสามารถทำให้เราแปลกใจได้ทีเดียว เอาเป็นว่าโค้ดบางอย่าง (ไม่ใช่ทุกอย่างนะครับ) Optimized แล้วทำงานได้เทียบเท่า (หรือเร็วกว่า) ภาษา G (นามสมมติ) เลยด้วย

ผ่านมาถึงยุคสมัยที่ Containerization กับ Cloud Computing เป็นที่แพร่หลาย แม้ว่าภาษา Java จะสามารถ Containerized ให้ทำงานอยู่บน Container Management Platform ได้ และ Cloud ทุกเจ้าก็รองรับการทำงานกับ Java เป็นอย่างดีด้วยกันทั้งนั้น แต่ Java ก็ยังเป็นรองภาษาที่เกิดมาในยุคสมัยนี้ เราจะเห็นว่าภาษาที่เกิดมาในยุคของ Cloud จะมีความเป็น Cloud-Native มากกว่าอย่างชัดเจน

ความสามารถของ JVM ในการทำ Dynamic Optimization ของภาษา Java นั้นไม่ตอบโจทย์ความเป็น Cloud-Native เพราะเมื่อทำงานบน Cloud เราต้องการโปรแกรมขนาดเล็กถึงเล็กมาก ทำงานสั้น ๆ รันจบไว ๆ บริโภคทรัพยากรน้อย ๆ ดังนั้นแล้ว Native Java Development ภายใต้ GraalVM จึงเกิดขึ้นมาเพื่อให้โปรแกรม Java สามารถ Start-up อย่างรวดเร็ว กินหน่วยความจำน้อยลง และสามารถบิ้วเป็น Image ที่มีขนาดเล็กได้ ปัจจุบันมี Java Frameworks สมัยใหม่หลายตัวที่สนับสนุน Native Java Development เช่น Quarkus, Micronaut, Helidon, และตัวมหาชนอย่าง Spring Boot ก็รองรับ Native Java ด้วยแล้วเช่นกัน แต่ปัญหาเหมือนเดิมครับ คือผู้ใช้งานยังติดภาพ Java เก่า ๆ เมื่อสิบกว่าปีที่แล้ว ยังไม่สามารถที่จะรับเอาความเปลี่ยนแปลงใหม่ ๆ ของ Java สมัยใหม่เข้ามาได้

สรุปจุดแข็งที่ซ่อนอยู่ของภาษา Java อย่างสุดท้ายคือ Java มีการพัฒนาตามยุคสมัยที่เปลี่ยนไปอย่างต่อเนื่อง ไม่เว้นแม้แต่ยุคของ Web 3.0 ที่ไม่ได้ไกลตัวสักเท่าไหร่แล้วในปัจจุบัน ดังนั้นเราต้องไม่หยุดเรียนรู้และตามให้ทันครับ

ผมเองเคยคุยกับทีม HR เพื่อคอนเฟิร์มความรู้สึกที่ว่าในประเทศไทยหาโปรแกรมเมอร์รุ่นใหม่ที่เขียนภาษา Java ค่อนข้างยาก ส่วนหนึ่งมาจากระบบการศึกษาที่เปลี่ยนแปลงไป อีกส่วนหนึ่งเป็นเพราะในตลาดมีเทคโนโลยีและสายงานให้เลือกมากขึ้น รวมไปถึงภาพลักษณ์ของตัวภาษาเองที่ขาดการโปรโมท ช่วงหลายปีมานี้ผมว่าชุมชนของ Java ในประเทศไทยไม่ได้คึกคักกันเหมือนแต่ก่อน เรียกได้ว่าเงียบเหงาจังเลยเธอว์ ผิดกับต่างประเทศที่ภาษา Java ยังคงคึกคักกันดี มีการจัดอีเวนท์ในเมืองนอกอย่างต่อเนื่อง อย่าง Oracle ก็กลับมาจัดงาน Java One Conference ในปีที่แล้ว (ปี 2022) ส่วนปีนี้ 2023 ดันไม่มี ได้ข่าวว่าถูกเอาไปเป็นส่วนหนึ่งของงาน CloudWorld แทน

Oralce CloudWorld Tour 2024 ตอนนี้มีแผนใน 8 ที่ทั่วโลก

ไม่ต้องมองไปไหนไกล ตอนต้นปีตัวผมเองได้มีโอกาสไปเป็นคณะกรรมการร่วมสัมภาษณ์ผู้สมัครเข้าทำงานในตำแหน่ง Software Engineer ของ KBTG Vietnam มาระยะหนึ่ง จากการสอบถามผู้สมัครก็รู้สึกว่าภาษา Java ในเวียดนามน่าจะเป็นที่นิยมในหมู่นักเขียนโปรแกรมมากกว่าบ้านเราอยู่พอสมควร

จุดเปลี่ยนที่น่าสนใจ

ปี 2023 นี้เป็นปีที่มีเหตุการณ์สำคัญอยู่ 2 เหตุการณ์ ที่ผมว่าเป็นจุดเปลี่ยนสำคัญและเป็นจุดเริ่มต้นที่ดีที่จะศึกษาภาษา Java สมัยใหม่

Java 21 is now available!

การมาของ Java 21

Java 21 เป็น Long-Term Support (LTS) เวอร์ชันล่าสุดที่ปล่อยออกมาเมื่อเดือนกันยายนที่ผ่านมานี่เอง บอกได้เลยว่าฟีเจอร์ที่น่าจับตามองมากที่สุดสำหรับผมก็คือ Virtual Threads และ Structured Concurrency แต่ผมคงไม่มีพื้นที่อธิบายรายละเอียดของทั้ง 2 อย่างตรงนี้ ยกเว้นเรื่อง Virtual Threads ที่ผมเคยเขียนไปแล้วนิดหน่อย ใครสนใจสามารถกดลิงค์ด้านล่างไปอ่านต่อกันได้ครับ

ลองคิดดูว่าเมื่อ Java มี Threads ที่เบาสบายคล้าย Goroutine และเขียน Reactive/Async ได้ง่ายและทรงพลังเหมือน Kotlin มันน่าจะสนุกแน่นวล!

GraalVM for JDK 21 is now available!

GraalVM Enterprise ใช้งานได้ฟรี!

ใครที่ไม่รู้จัก GraalVM ขอให้นึกประมาณว่ามันคือ JVM เกรดแบบ Super Car อะครับ นอกจาก Performance มันจะเริ่ดดดดดดดมากแล้ว มันยังมีฟีเจอร์ให้คุณทำ Native Java ได้ด้วย

อธิบายง่าย ๆ คือก่อนหน้านี้เจ้า GraalVM เนี่ยมันแบ่งเป็น Community Edition ที่ใช้ได้ฟรีกับ Enterprise Edition ที่แบบอยากใช้ต้องจ่ายตังค์อ้ะ แล้วถ้าเราลองไปใช้ดูเนี่ย ฟีเจอร์ที่มันโดน ๆ ก็อยู่ใน Enterprise ทั้งนั้นแหละ แต่มันไม่ฟรีไง เราเลยรอไปก่อน ครั้นจะเอา Community มาใช้ก็งั้น ๆ แต่ในที่สุด ยังไงก็ไม่รู้ ปีนี้ Oracle ทำการเปลี่ยนชื่อ GraalVM Enterprise Edition มาเป็น Oracle GraalVM (ให้สอดคล้องกับ Oracle JDK คือเอาชื่อแบรนด์ของตัวเองมานำหน้า) และประกาศให้ใช้งานได้ฟรีบนเงื่อนไขที่คล้ายกันกับการใช้งาน Oracle JDK แบบฟรี ซึ่งถือเป็นข่าวดีมาก ๆ อย่าเปลี่ยนมาเก็บตังค์อีกนะเฟร้ยย

ทีนี้เมื่อ 2 เหตุการณ์นี้มาเจอกัน ผมว่ามัน(ส์)ระเบิดแน่ ๆ เป็นการระเบิดพลังที่แท้ทรูของภาษา Java ขึ้นไปอีกขั้น อารมณ์เหมือนเราดูวันพีซแล้วลูฟี่ใช้เกียร์ระดับถัดไปให้ดูเป็นครั้งแรกอย่างงั้นเลย ตอนนี้อดใจรอเวลาให้ Java Frameworks และ Libraries ต่าง ๆ นั้นปรับเปลี่ยนมาใช้ประโยชน์จากฟีเจอร์ของ GraalVM และ Java 21 อย่างเต็มที่เสียก่อน ย้ำอีกครั้งว่าจุดนี้แหละเป็นโอกาสดีมาก ๆ สำหรับมือใหม่อยากจะศึกษาภาษา Java และมือเก๋าที่ต้องการยกระดับค่าพลังของตัวเองแบบก้าวกระโดด

ระเบิดแน่! (Image by wirestock on Freepik)

แล้วภาษา Java ใน KBTG จะเป็นอย่างไรต่อไป?

ถ้ามีคนถามผมว่าองค์กรที่ชื่อ KBTG มีข้อดีอย่างไร? 2 อย่างแรกที่ผมนึกออกคือ

  1. เป็นองค์กรที่สนับสนุนในการเรียนรู้อย่างยิ่งยวด
  2. เป็นองค์กรที่ให้โอกาสคุณได้ใช้สิ่งที่ไปเรียนรู้มา

ใน KBTG เรามีการตั้ง Java Guild เพื่อเป็นศูนย์รวมหรือเรียกได้ว่าเป็นชมรมของผู้ที่ชื่นชอบหรือมีใช้งานภาษา Java ในทุกระดับ ไม่ว่าจะเป็นสมาชิกขาประจำหรือขาจร เรารวมตัวกันเพื่อให้มั่นใจว่าผู้ใช้ภาษา Java ทุกคนนั้นสามารถเข้าถึงมาตรฐานการใช้ภาษา Java อย่างมีประสิทธิภาพสูงสุดเป็นอันหนึ่งอันเดียวกัน

ใน Java Guild เราเป็นทั้งโค้ชและผู้เล่นไปพร้อม ๆ กัน เป็นโค้ชที่ทำการบ้านและอัพเดตข้อมูลกันตลอดเวลา เพื่อพัฒนาเทคนิคการเล่น กำจัดจุดอ่อน เสริมสร้างจุดแข็ง เราเป็นผู้เล่นที่มีจุดมุ่งหมายเดียวกัน ผลักดันตัวเองให้เรียนรู้ ฝึกฝน และทำผลงานออกมาให้ยอดเยี่ยมที่สุดในทุกแมตช์

ในปี 2024 นี้ Java Guild ยังคงมุ่งมั่นยกระดับการพัฒนาระบบด้วยภาษา Java ไปอีกขั้นด้วยพลังของ GraalVM และ Native Image ฟีทเจอริ่งกับ Java 21 เพื่อไปถึงจุดที่เรายังไม่เคยพิชิตได้มาก่อน เป้าหมายในอนาคตของเราก็คือ ต่อไปใครอยากจะมาดู Modern Java Development ต้องมาศึกษาดูงานที่นี่ KBTG!

และล่าสุดเมื่อต้นเดือน พ.ย. ที่ผ่านมาเราได้จัดกิจกรรม Java Guild Internal Meetup โดยมีแขกรับเชิญพิเศษนั่นก็คือ ‘จารย์เอ๊าะ ภูริเดช สุดสี และ ‘จารย์ต๋อง ชินวัตร โคตรชุม สองหนุ่มไอทีที่ไม่ได้มีดีแค่หน้าตา มาแชร์ความรู้แลกเปลี่ยนประสบการณ์กันในหัวข้อ “GraalVM: Empowering Spring Boot with Native Image” ให้ชุมชนชาว Java และผู้ที่สนใจภายใน KBTG กว่า 150 ชีวิตได้รับความรู้กันไปแบบจัดเต็ม เรียกได้ว่าเป็นอาหารเรียกน้ำย่อยหรือ Appetizer เปิดต่อมเรียนรู้ ณ จุดสตาร์ท สำหรับ KBTG Java Roadmap 2024 ที่จะนำพาผู้ใช้ Java เดินหน้าท่องเข้าสู่โลก Java Native และ Modern Java Development กันอย่างเต็มตัว แน่นอนว่าในปีหน้าเรากำลังจัดเตรียมอาหารจานเด็ดมาเสิร์ฟให้กันอย่างต่อเนื่องแน่นอน

เปิดต่อมเรียนรู้ แล้วมาระเบิดพลัง Java ที่ KBTG กันครับ!

โครงการดี ๆ จาก KBTG สำหรับผู้ที่สนใจ Java

ปัจจุบันการหาข้อมูลอะไรสักอย่างเป็นเรื่องง่ายมาก แต่การเรียนรู้ให้ได้มาซึ่งประสิทธิภาพไม่ได้ง่ายขนาดนั้นครับ ผมว่าปัญหาของการเรียนรู้ในปัจจุบันคือลำดับขั้นตอนของการเรียนรู้ บางทีมีของใหม่เก่าแต่เราดันไปเรียนของเก่าอยู่ หรือการเล่าเรื่องที่ผิดลำดับหรือตกหล่นบางอย่างไปทำให้เราไม่เข้าใจอย่างถ่องแท้ ปัญหาอีกอย่างหนึ่งคือแบบฝึกหัดที่ง่ายหรือยากเกินไปไม่สะท้อนงานในชีวิตจริง

ช่วงนี้เป็นเวลาดี ย่อมมีข่าวดีสำหรับผู้ที่สนใจศึกษาภาษา Java ที่ออกแบบและสอนโดยผู้ที่มีประสบการณ์จริง เพราะเรามี Java Software Engineering Bootcamp ของ KBTG Kampus หลักสูตรเรียนการพัฒนาซอฟต์แวร์ด้วยภาษา Java แบบเน้น ๆ ที่กลั่นจากประสบการณ์ของผู้ออกแบบหลักสูตรใน KBTG และผู้สอนมากฝีมือ โดยตอนนี้เราก็กำลังเปิดรับสมัครรุ่นที่ 2 อยู่ จ่ายเพียงแค่ 5,000 บาทเท่านั้น แถมยังสามารถนำคะแนน Post-Test ตรงเข้าสู่รอบ Final Interview ในสายงาน Java Software Engineer ที่ KBTG ได้อีกด้วย ดูรายละเอียดและสมัครได้ที่เว็บไซต์ KBTG Kampus ตั้งแต่ถึงวันที่ 15 ธันวาคม 2023 ครับ

สำหรับใครที่ชื่นชอบบทความนี้ อย่าลืมกดติดตาม Medium: KBTG Life เรามีสาระความรู้และเรื่องราวดีๆ จากชาว KBTG พร้อมเสิร์ฟให้ที่นี่ที่แรก

--

--

jo@sabotender
KBTG Life

principal DEVelopment eXcellence engineer — DEVX@KBTG / Full-time Daddy / Console Gamer & Gunpla Collector