" วิธี execute และ run โปรแกรมภาษาjava กับ command line ที่เราเขียนไม่ง้อ bash”
ผู้เขียนรู้สึก เขียนเรื่องเดิมๆแล้วเริ่ม มาลองหาเรื่องอื่นเสริมความรู้จากเรื่องอื่นมาเพิ่มพูนไปทีละขั้นๆ ให้คล้ายๆกับการต่อ จิ้กซอ (Jigsaw) หรือ คล้ายกับ คาร์นอจ์แม็พ (Karnaugh map) ที่เริ่มหาความรู้ไปทีละอย่างๆ แล้วมาต่อๆกันจนกว้างขึ้นๆ นะครับ
ในบทความที่แล้ว พูดถึงเรื่อง การเขียน shell script ถึงบทที่ 3 แล้วว่าจะเขียนต่อแต่ยังไม่ได้เริ่ม เพราะรู้สึกอยากเขียนเรื่องที่สนใจอยู่ในตอนนี้ก่อน กันลืม เผื่อให้ผู้เขียนเองเนี่ยกลับมาอ่านทบทวน เอาล่ะ เรามาเริ่มกันเลยดีกว่า กับหัวข้อว่า " วิธี execute และ run โปรแกรมภาษาjava กับ command line ที่เราเขียนไม่ง้อ bash”
บทความนี้ก็จะมาเขียน ในเรื่องของ ภาษา java ครับ เป็นอีกภาษาหนึ่งที่ผู้เขียนสนใจ เพราะว่าเป็นภาษาที่สามารถเขียนลงได้หลาย platform ก็ถือว่าเป็นข้อดีของภาษา java เอาล่ะในบทความนี้ บังเอิญว่าผู้เขียนมีความสงสัยว่าจะทำอย่างไรให้สามารถ รันโปรแกรมที่เขียนขึ้นมารันบน console ของ โปรแกรม IDE เนี่ย สามารถ รันบน Command line ได้บ้างมั้ย ด้วยความที่ผู้เขียนก็ไม่ได้เชียวชาญอะไร แต่ด้วยใจรักก็ศึกษาประดับเป็นความรู้เอาไว้
ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส
ผู้ที่สนใจหรือผู้ถนัดในภาษา java อาจจะทราบกันอยู่แล้ว อาจจะง่ายสำหรับท่าน โปรดข้ามไปได้เลยครับ อย่ามาเสียเวลาเพราะผู้เขียนจะอธิบายค่อนข้างละเอียด เพื่อที่อ่านจะได้เข้าใจ อาจจะเยิ่มเย้อเลยก็ได้ เอ้า...
มาดูต่อ
นี้เป็นconsole ในใช้โปรแกรม๋ JAVAEE IDE ที่ใช้ภาษา JAVA เขียน แล้ว RUN ออกมาครับ
ถ้าอยากจะเอามารันบน shell บ้างล่ะทำยังไง เพราะโดยปกติ ก็ต้องใช้ Echo, df, ping ที่ทำงานบน shell ได้
มาดูตัวอย่างกันครับ ผมยกตัวอย่าง ง่ายๆก่อน ก็หนีไม่พ้น สวัสดีชาวโลก อีกเช่นเคย Hello World!
ตัวอย่าง โปรแกรม
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
ขั้นตอนการทำ
1.สร้างโปรเจคใหม่ขึ้นมา
2. create class ใหม่
3. ใส่ code
คร่าวนี้เราได้ไฟล์ java กันมาแล้วครับ คราวนี้เราไปจัดไฟล์ที่ shell กัน
ทำความเข้าใจกับ step ภาพด้านบนนะครับ ผู้เขียนจะอธิบายทีละบรรทัด
1. เข้าไปใน path ที่สร้างไฟล์ java เอาไว้
2. ใช้คำสั่ง javac โดยใช้ option -d หมายถึง จะ generate ไฟล์ class ไว้ที่ folder ไหนขึ้นอยู่กับ path ที่ใส่
3. ใช้คำสั่ง java แล้ว nameClass หรือ ชื่อไฟล์ java ที่สร้างไฟล์ขึ้นมา
ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส
อีกทริคหนึ่งที่จะเอามาใช้ในการรันไฟล์ ได้ สร้าง bash script ขึ้นมา 1 file
ต่อจาก step ที่ 3 นะครับ
4. สร้างไฟล์ ขึ้นมาด้วยชื่ออะไรก็ได้ ผู้เขียนใช้ helloscript
5. ตั้ง permission ให้กับไฟล์ bash script
6. reletive path ./ ไฟล์ที่สร้างขึ้นมา ได้ Hello, World
สามารถ สร้างไฟล์สคลิปที่สร้างด้วย ภาษา java ได้แล้ว
ผมจะให้ดูตัวอย่างสักเล็กน้อยเพื่อเปรียบเทียบ
ต่างมั้ยครับ 1 บรรทัด เสร็จไม่ต้องทำอะไรให้ซับซ้อนด้วย ผู้ที่สนใจอาจจะสังเกตุว่า ใช้ภาษา java พิมพ์ตั้งหลายบรรทัด แล้วจะลำบากเรียนรู้ไปทำไม เพราะ ถ้าจะรัน บน shell แล้วใช้คำสั่ง Echo Hello world! ก็จบแล้ว
คำตอบ คือ ผู้เขียนคิดว่า การที่เราใช้ภาษาได้หลายๆภาษาก็ถือว่าเราได้เปรียบกว่าคนอื่น อย่างเช่น การสมัครงาน
สมมติว่า ถ้าเราเป็นแต่ bash script เราก็ไม่สามารถ จะทำงานอื่นๆได้อย่างสะดวก เช่น การเขียนเว็บไซต์ เป็นต้น ฉะนั้น หากผู้ที่เขียน java เป็นก็อาจจะได้เปรียบกว่า คนอื่นสามารถที่จะรับงานได้หลากหลาย
เอาเป็นจะยกตัวอย่างอีกตัวอย่างหนึ่ง สำหรับ ภาษา java สร้างคำสั่ง PING
ผู้ที่สนใจถ้าเป็นผู้ใช้ windowsจะสังเกตุได้ว่า จะได้ t = 3 เท่านั้น แต่ถ้าเป็น mac,*Nux ก็ ping -t ไปเรื่อยๆ ก็จะทำให้เห็นความแตกต่าง ด้วย code โปรแกรมนี้ ภาษา java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExecuteShellComand {
public static void main(String[] args) throws IOException, InterruptedException {
String command = "ping -c 3 www.google.com";
Process proc = Runtime.getRuntime().exec(command);
// Read the output
BufferedReader reader =
new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
while((line = reader.readLine()) != null) {
System.out.print(line + "\n");
}
proc.waitFor();
}
ทำเหมือนกับ ตัวอย่างที่ผ่านมาเลยครับ
1. genarate class
2. ใช้ java Run ในบรรทัดนี้จะแตกต่างจากตัวอย่างที่ผ่านมา คือ มี Folder shell ก่อน src ดังนั้น เวลารันไฟล์ก็จะใส่ path ก่อนถึงไฟล์ class
จะไม่ขออธิบาย ตัวอย่าง code โปรแกรมนี้นะครับ จะขออธิบายเป็น class library ของ java ในบทความ ถัดๆไป
หวังว่าจะเป็นประโยชน์อย่างดียิ่งนะครับ สำหรับบทความนี้ บทความคราวหน้าอาจจะลองสอนทำเครื่องมือทดสอบระบบเครือข่ายคอมพิวเตอร์ บางอย่างด้วยภาษา java , python , หรือ อื่นๆ ลองติดตามกันดูนะครับ
CREDIT PICTURE
http://arjarnbomb.blogspot.com/2014_02_01_archive.html
REFFERENCE
http://stackoverflow.com/questions/17973970/how-to-solve-java-lang-noclassdeffounderror
http://stackoverflow.com/questions/15356405/how-to-run-a-command-at-terminal-from-java-program
http://alvinalexander.com/java/edu/pj/pj010016
http://www.dreamincode.net/forums/topic/223614-how-to-create-a-shell-script-to-compile-and-execute-a-java-file/
http://www.cs.sjsu.edu/web_mater/cs46b/cs46blab/shellScripting1.html
http://www.mkyong.com/java/how-to-execute-shell-command-from-java/