[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

Recent Posts

Popular post of 7 days

Port Forwarding สำหรับคนใช้ AIS Fibre

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

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

Popular

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

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

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

Port Forwarding สำหรับคนใช้ AIS Fibre

เรื่องของ ++i กับ i++

Android Auto & Apple Carplay คืออะไร ใช้งานยังไง

Deeplink, Universal Links คืออะไร ทำงานร่วมกับ Mobile App ได้ยังไง

วิธีการสมัคร Apple Developer Program และ Enterprise Program ฉบับลงมือเอง

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

ทดสอบ Mobile App แบบ Automated ด้วย Appium ทำยังไงกันนะ