มีโอกาสไปสอนและแบ่งปันเกี่ยวกับการเขียนภาษา Java ขั้นพื้นฐานมา 6 วัน
มีหลายเรื่องที่น่าสนใจ  สำหรับ feature ใหม่ ๆ ของภาษา Java (Modern Java)
เลยทำการสรุปไว้กันลืมนิดหน่อย

ภาษา Java เป็นภาษาที่น่าจะเก่าแล้ว

แต่ก็ยังมีการ update และออก version ใหม่ ๆ กันอยู่
โดยปัจจุบันก็วิ่งมาถึง Java 12 และกำหลังจะออก 13 กันแล้ว
แต่จากที่เจอมานั้น หลาย ๆ บริษัทในไทยยังคงใช้งาน Java 8 หรือ 1.8 กันอยู่
หนักกว่านั้นก็ลงไปถึง Java 1.4 ที่ผมเริ่มเขียนเมื่อ 20 ปีที่แล้ว !!

แต่ไม่ว่าด้วยเหตุผลใด ๆ ก็ตาม 

นักพัฒนาภาษา Java ก็ควรที่จะมีความรู้พื้นฐาน
รวมทั้งความสามารถใน version ใหม่ ๆ อีกด้วย
เพื่อทำให้รู้และเข้าใจว่า ทำไมถึงมีความสามารถต่าง ๆ เหล่านั้นขึ้นมา
บางคนอาจจะเรียก Java ใหม่ ๆ ว่า Modern Java
ซึ่งน่าจะหมายถึง Java 8/1.8 ขึ้นมานั่นเอง

ยกตัวอย่างเช่นการใช้งาน Stream API

ถ้าต้องทำการแสดงจำนวนที่เป็นเลขคู่ ไม่น่าจะมีใครเขียน code แบบนี้แล้ว

น่าจะต้องเขียนแบบนี้หรือเปล่า ?

หรือจะเป็นการประกาศตัวแปร ไม่ต้องมากำหนด type แล้วนะ

ใช้ var ไปได้เลย นั่นหมายความว่า
ตัวแปรเหล่านั้นจะมี type ตามค่าแรกที่กำหนดให้นั่นเอง

หรือจะเป็น Switch expression ใน Java 12 ก็ทำให้ code อ่านง่ายขึ้น

หรือถ้าใครคุ้นเคยกับ Promise ใน JavaScript

สำหรับการทำงานแบบ Asynchronous แล้ว
ใน Java ก็มี completableFuture ให้ใช้

อีกทั้งยังมี JShell มาให้ใช้งาน

หรือ feature ใหม่ ๆ ที่อาจจะเพิ่มเข้ามาในอนาคต

ยกตัวอย่างเช่น หนึ่งใน Project Amber
นั่นก็คือ data class and sealed type for Java
บางคนเรียกว่า Record เพราะว่าใช้ keyword ชื่อว่า record นำหน้า class นั่นเอง ดังนี้

หรือแม้กระทั่ง Project Loom

ก็มี feature ใหม่ ๆ ที่น่าสนใจทั้ง

  • Fibers (lightweight user-mode threads)
  • Delimited continuations
  • Tail-call elimination

ดังนั้น น่าจะพอทำให้เห็นว่า Java นั้นก็มีการปรับปรุงและเปลี่ยนแปลงตลอดเวลา

ถึงแม้จะช้าหรือมี drama เยอะหน่อย
แต่ก็ปฏิเสธไม่ได้ว่า ยังคงเป็นภาษาที่หลาย ๆ องค์กรยังใช้งาน (เยอะมาก)
ดังนั้นการเรียนรู้ความสามารถใหม่ ๆ ของภาษาจึงเป็นเรื่องที่จำเป็น

แต่คำถามที่น่าจะต้องตอบกันก่อนคือ
บนเครื่องของนักพัฒนาหรือบน server ใช้ Java version อะไรกันอยู่ ?

Tags: