[Java] JShell เครื่องมือใหม่ที่มาพร้อมกับ Java 9+
JShell คืออะไร ? JShell ถือกำเนิดมาพร้อมกับ Java 9 (JDK 9) เป็นเครื่องมือใหม่สำหรับ Java Developer ที่ตามหลังชาวบ้านมาอีกตัวหนึ่ง JShell เป็นเครื่องมือที่ช่วยให้เราสามารถทดลองเขียน code แบบง่ายๆ ไม่ต้องมาสร้าง file / project ให้วุ่นวาย (แอบเล่าให้ฟังว่าเมื่อก่อนผมใช้เว็บเขียน java online เพื่อทำอะไรแบบนี้ เหอๆ)
REPL (Read-Eval-Print-Loop) เป็นคำนิยามอย่างเป็นทางการของ JShell หรือจะพูดให้ง่ายก็คือ การเขียนโปรแกรมแบบมี interaction ได้ทันที ถ้ายังไม่เข้าใจอีก ไปลองเล่นกันเลยดีกว่า
ติดตั้ง JDK (version 9 ขึ้นไป)
* JShell จะอยู่ใน JAVA_HOME/bin ถ้าอยากใช้ง่ายๆ ก็เพิ่มทำ PATH เข้า environment varible ไว้เลย
เรียกใช้ jshell โดยรันคำสั่ง jshell
และอื่นๆ .. โดยสามารถดูได้จากการแสดงข้อมูลการใช้งาน JShell
จบท้ายด้วยคำสั่ง ลาก่อย
REPL (Read-Eval-Print-Loop) เป็นคำนิยามอย่างเป็นทางการของ JShell หรือจะพูดให้ง่ายก็คือ การเขียนโปรแกรมแบบมี interaction ได้ทันที ถ้ายังไม่เข้าใจอีก ไปลองเล่นกันเลยดีกว่า
http://blog.arungupta.me/jdk9-repl-getting-started/ |
เริ่มต้นเขียนโปรแกรมบน JShell
ติดตั้ง JDK (version 9 ขึ้นไป)* JShell จะอยู่ใน JAVA_HOME/bin ถ้าอยากใช้ง่ายๆ ก็เพิ่มทำ PATH เข้า environment varible ไว้เลย
เรียกใช้ jshell โดยรันคำสั่ง jshell
$ jshell | Welcome to JShell -- Version 11 | For an introduction type: /help intro jshell>
เมื่อเข้าสู่ jshell แล้ว เราก็สามารถเริ่มพิมพ์ code java ได้เลย
หรือจะเขียน method
เรียกใช้ method
ไหนดูซิ เขียนอะไรมาบ้าง
snippets เป็นชื่อที่ถูกต้องที่สุดสำหรับการเขียนโปรแกรมลักษณะนี้ คือเราไม่ได้ต้องการทดสอบทุกอย่างของแอปฯ เราแค่อยากรู้ว่าคำสั่งนี้ ทำงานแบบนี้ถูกไหม output เป็นยังไง ก่อนที่จะลงมือเขียนลงไปในแอปฯ จริงๆ และ JShell ยังมีคำสั่งตัวช่วยเฉพาะ เพื่อเพิ่มความสะดวกในการทดสอบ snippets เช่น
jshell> System.out.println("Hello World"); Hello World
หรือจะเขียน method
jshell> String say(String msg) { ...> System.out.println(msg); ...> return msg; ...> } | created method say(String)
เรียกใช้ method
jshell> say("test"); test $3 ==> "test"
ไหนดูซิ เขียนอะไรมาบ้าง
jshell> /list 1 : System.out.println("Hello World"); 2 : String say(String msg) { System.out.println(msg); return msg; } 3 : say("test");
แนะนำตัวอย่างเป็นทางการ
jshell> /help intro | | intro | ===== | | The jshell tool allows you to execute Java code, getting immediate results. | You can enter a Java definition (variable, method, class, etc), like: int x = 8 | or a Java expression, like: x + x | or a Java statement or import. | These little chunks of Java code are called 'snippets'. | | There are also the jshell tool commands that allow you to understand and | control what you are doing, like: /list | | For a list of commands: /help
snippets เป็นชื่อที่ถูกต้องที่สุดสำหรับการเขียนโปรแกรมลักษณะนี้ คือเราไม่ได้ต้องการทดสอบทุกอย่างของแอปฯ เราแค่อยากรู้ว่าคำสั่งนี้ ทำงานแบบนี้ถูกไหม output เป็นยังไง ก่อนที่จะลงมือเขียนลงไปในแอปฯ จริงๆ และ JShell ยังมีคำสั่งตัวช่วยเฉพาะ เพื่อเพิ่มความสะดวกในการทดสอบ snippets เช่น
แสดงรายการ import (การเริ่มต้นใช้งานจะมี import อยู่แล้วบางส่วน)
แสดงตัวแปร
แสดง method
แสดง source code ทั้งหมด
แก้ไขคำสั่งใน external editor
แสดงรายการคำสั่ง (ที่พิมพ์ไปทั้งหมด)
jshell> /imports
แสดงตัวแปร
jshell> /vars
แสดง method
jshell> /method
แสดง source code ทั้งหมด
jshell> /list
แก้ไขคำสั่งใน external editor
jshell> /edit
แสดงรายการคำสั่ง (ที่พิมพ์ไปทั้งหมด)
jshell> /history
และอื่นๆ .. โดยสามารถดูได้จากการแสดงข้อมูลการใช้งาน JShell
jshell> /help
jshell> /?
จบท้ายด้วยคำสั่ง ลาก่อย
jshell> /exit | Goodbye