เห็นมีการพูดถึง Java หรือ JDK 10 กันบ้างพอสมควร (เงียบ ๆ นะ)
เนื่องจากตามแผนแล้วจะถูกปล่อยตัวเต็มมาในมีนาคมนี้แล้ว
โดยมี feature ต่าง ๆ แยกไปตาม JEPS ดังนี้

  • 286: Local-Variable Type Inference
  • 296: Consolidate the JDK Forest into a Single Repository
  • 304: Garbage-Collector Interface
  • 307: Parallel Full GC for G1
  • 310: Application Class-Data Sharing
  • 312: Thread-Local Handshakes
  • 313: Remove the Native-Header Generation Tool (javah)
  • 314: Additional Unicode Language-Tag Extensions
  • 316: Heap Allocation on Alternative Memory Devices
  • 317: Experimental Java-Based JIT Compiler
  • 319: Root Certificates
  • 322: Time-Based Release Versioning

ดูแล้วไม่ค่อยมี feature สำหรับคนใช้งานทั่วไปสักเท่าไรนัก
น่าจะมีที่อ่านรู็เรื่องหน่อยก็คือ Local-Variable Type Inference
ซึ่งเป็นการปรับปรุงรูปแบบของภาษา Java ที่ดูนะง่ายขึ้น สั้นขึ้นมั้ง

โดยรูปแบบของภาษานั้น จะมี keyword ใหม่ชื่อว่า var ขึ้นมา

จากที่อ่านมาพบว่า
มีทางเลือกของ keyword นี้เยอะเลย เช่น

  • var x = expr only (like C#)
  • var, plus val for immutable locals (like Scala, Kotlin)
  • var, plus let for immutable locals (like Swift)
  • auto x = expr (like C++)
  • const x = expr (already a reserved word)
  • final x = expr (already a reserved word)
  • let x = expr
  • def x = expr (like Groovy)
  • x := expr (like Go)

โดยเหตุผลของการเลือก var นั้นอ่านเพิ่มเติ่มได้ที่นี่

ว่าด้วยเรื่องของ readability, mutability และ syntax
น่าจะไม่ถูกใจของนักพัฒนาหลาย ๆ คน

ดังนั้นลองใช้งานหน่อยสิ
จะติดตั้งก็เกรงใจ เลยใช้ Docker ดีกว่า
ซึ่งใช้ image จาก OpenJDK 10

เริ่มด้วยการเขียน Hello แบบง่าย ๆ
ด้วยการใช้ keyword var ในการประกาศตัวแปร
นักพัฒนาไม่ต้องระบุ data type นะ

ตัวอย่างเป็นการกำหนดค่าลง ArrayList
และวน loop ดึงข้อมูลมาแสดงผลแบบง่าย ๆ
ปกติภาษา Java มันเขียนได้หลายแบบอีกดังนี้

ทำการ compile และ run ได้ผลดังนี้

เพิ่มเติมสำหรับการใช้ var ก็มีข้อกำหนดเช่นกัน

ยกตัวอย่างเช่น
ถ้าประกาศตัวแปรโดยไม่กำหนดค่าเริ่มต้นให้ ก็จะ compile time error
ถ้าประกาศตัวแปรโดยกำหนดค่า NULL ไป ก็จะ compile time error

ลองเล่นกันดูครับสำหรับ Java 10
เมื่อถึงเวลาที่ออกมาจะได้ไม่ตกใจกัน

ขอให้สนุกกับการ coding นะครับ

Reference Websites
https://medium.com/@afinlay/java-10-sneak-peek-local-variable-type-inference-var-3022016e1a2b
https://www.infoq.com/news/2018/02/first-look-jdk10-rc1