[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 ได้ทันที ถ้ายังไม่เข้าใจอีก ไปลองเล่นกันเลยดีกว่า

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 ได้เลย
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 อยู่แล้วบางส่วน)
jshell> /imports

แสดงตัวแปร
jshell> /vars

แสดง method
jshell> /method

แสดง source code ทั้งหมด
jshell> /list

แก้ไขคำสั่งใน external editor
jshell> /edit

แสดงรายการคำสั่ง (ที่พิมพ์ไปทั้งหมด)
jshell> /history

และอื่นๆ .. โดยสามารถดูได้จากการแสดงข้อมูลการใช้งาน JShell
jshell> /help
jshell> /?

จบท้ายด้วยคำสั่ง ลาก่อย
jshell> /exit
|  Goodbye

Facebook Comment

Popular post of 7 days

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Portal คืออะไรกันนะ???

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)