Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สรุปจากการแบ่งปันเรื่องพื้นฐานของภาษา Java (Modern Java)

$
0
0

มีโอกาสไปสอนและแบ่งปันเกี่ยวกับการเขียนภาษา 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 แบบนี้แล้ว

[gist id="0e88e89e0b37457185d649415409aa85" file="old_01.java"]

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

[gist id="0e88e89e0b37457185d649415409aa85" file="new_01.java"]

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

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

[gist id="0e88e89e0b37457185d649415409aa85" file="var.java"]

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

[gist id="0e88e89e0b37457185d649415409aa85" file="switch.java"]

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

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

[gist id="0e88e89e0b37457185d649415409aa85" file="future.java"]

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

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

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

[gist id="0e88e89e0b37457185d649415409aa85" file="record.java"]

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

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

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

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

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

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


Viewing all articles
Browse latest Browse all 1997

Trending Articles