![]()
![]()
เห็นมีการพูดถึง
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)
ว่าด้วยเรื่องของ readability, mutability และ syntax
น่าจะไม่ถูกใจของนักพัฒนาหลาย ๆ คน
ดังนั้นลองใช้งานหน่อยสิ
จะติดตั้งก็เกรงใจ เลยใช้ Docker ดีกว่า
ซึ่งใช้ image จาก OpenJDK 10
เริ่มด้วยการเขียน Hello แบบง่าย ๆ
ด้วยการใช้ keyword var ในการประกาศตัวแปร
นักพัฒนาไม่ต้องระบุ data type นะ
ตัวอย่างเป็นการกำหนดค่าลง ArrayList
และวน loop ดึงข้อมูลมาแสดงผลแบบง่าย ๆ
ปกติภาษา Java มันเขียนได้หลายแบบอีกดังนี้
[gist id="f34bb7b2844f188d037fe0859351a3cb" file="1.java"]
ทำการ compile และ run ได้ผลดังนี้
[gist id="f34bb7b2844f188d037fe0859351a3cb" file="1.txt"]
เพิ่มเติมสำหรับการใช้ var ก็มีข้อกำหนดเช่นกัน
ยกตัวอย่างเช่น
ถ้าประกาศตัวแปรโดยไม่กำหนดค่าเริ่มต้นให้ ก็จะ compile time error
ถ้าประกาศตัวแปรโดยกำหนดค่า NULL ไป ก็จะ compile time error
[gist id="f34bb7b2844f188d037fe0859351a3cb" file="2.txt"]
ลองเล่นกันดูครับสำหรับ 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