chapter 1 การเขียนโปรแกรมบนวินโดวส์ด้วยจาวา
เราคงทราบและรู้จักกับภาษาจาวากันดี หากคุณเป็นผู้หนึ่งที่ชอบท่องเที่ยวบนอินเตอร์เน็ต หรือชอบการเขียนโปรแกรม แต่ถ้าจะถามว่าคุณรู้จักจาวา หรือคุณใช้จาวาเขียนอะไร หลาย ๆ ท่านอาจจะบอกเป็นเสียงเดียวกันว่า เขียนแอพเพล็ต (Applet)
ภาษาจาวามีความสามารถในการพัฒนาแอพเพล็ต และนอกจากนั้น เรายังสามารถใช้จาวาพัฒนาโปรแกรมบนเพลตฟอร์มได้อีกด้วย ไม่จำเป็นว่าจาวาจะใช้พัฒนาแอพเพล็ตได้เพียงอย่างเดียวการพัฒนาโปรแกรมบนวินโดวส์ด้วยภาษาจาวา ก็มีลักษณะเช่นเดียวกับการพัฒนาโปรแกรมด้วย Visual Basic หรือภาษา C++ นั่นเอง ซึ่งเราจะต้องสร้างวินโดวส์ สร้างปุ่มกดหรือคอนโทรลต่าง ๆ ไว้ภายในวินโดวส์ และใช้มันทำงานเหมือนกับโปรแกรมทั่ว ๆ ไป
เราอาจไม่พบเห็นโปรแกรมที่เขียนขึ้นโดยภาษาจาวาบ่อยนัก อาจเป็นเพราะจาวาไม่เหมาะในการสร้างแอพพลิเคชั่นก็เป็นได้ อาจจะด้วยความล่าช้าเพราะมันทำงานบน Virtual Machine แต่ในความสามารถบางอย่างของภาษาจาวานั้น การพัฒนาโปรแกรมสามารถทําได้ง่ายและเร็วกว่าภาษาอื่น
จาวาเป็น OOP
จาวาเป็นภาษาหนึ่งที่อาจเรียกได้ว่าสืบทอดมาจากภาษา C++ อีกทีหนึ่ง เป็นภาษาที่รวมความเป็น OOP (Object Oriented Programming) พื้นฐานทางภาษาของจาวาอยู่ในรูปของภาษา C++ ทั้งการกำหนดฟังก์ชั่น การสร้างอ๊อปเจ็กต์ต่าง ๆ และได้ตัดความซับซ้อนและข้อเสียบางอย่างออกไป ถ้าเราเขียนสมการของภาษาจาวา เราสามารถเขียนได้ดังนี้
ภาษาจาวา = "ภาษา C++" - "ความซับซ้อน" + "ระบบความปลอดภัย" + "การข้ามเพลตฟอร์ม"
พื้นฐานการเขียนโปรแกรมภาษาจาวา คุณจะต้องรู้จักกับการเขียนโปรแกรมแบบ OOP เสียก่อนสักเล็กน้อย เพื่อให้การเขียนโปรแกรมเป็นไปได้ง่ายขึ้น หากคุณเคยเขียนโปรแกรมบนวินโดวส์มาก่อน คุณสามารถศึกษาภาษานี้ได้ไม่ยากเลย
ความสามารถในการทำงานข้ามระบบ
ในการสร้างโปรแกรมหรือจาวาแอพเพล็ต คุณจะต้องสร้างซอร์สโค๊ดภาษาจาวาและทำการคอมไพล์โปรแกรมด้วย Java Compiler โปรแกรมของคุณจะอยู่ในรูปของไบต์โค๊ด (Byte Code) และคุณสามารถนำมันไปรันในระบบต่าง ๆ ได้หลายระบบเช่น Unix , Mac หรือ Windows เราเรียกการทำงานลักษณะนี้ว่า การข้ามระบบหรือ Cross Plateform
ลองอ่านเรื่องของการ cross plateform ที่ได้ทดลองเอา application ที่เป็น java ไปรันบน X - Windows ดูสิครับ click here
คุณสมบัติของภาษาจาวาข้อนี้คุณอาจจะไม่พบในการเขียนโปรแกรมบนวินโดวส์ด้วยภาษาอื่น ๆ เช่น Visual Basic หรือ Visual C++ ซึ่งคุณไม่สามารถนำมันไปรันบนระบบอื่นได้ ยกเว้นระบบวินโดวส์อย่างเดียวแต่จาวาได้ทำลายกำแพงกั้นระหว่างระบบนี้ลงได้แล้ว
เครื่องมือในการพัฒนาโปรแกรมจาวา
เครื่องมือในการพัฒนาโปรแกรมภาษาจาวามีมากมายหลายโปรแกรมในปัจจุบัน ตั้งแต่โปรแกรมสร้างจาวาแอพเพล็ต เช่น JDK , Jamba หรือ AppletAce ไปจนถึงโปรแกรมสร้างจาวาแอพพลิเคชั่นใหญ่ ๆ เช่น Visual Cafe หรือ Visual J++
จาวาได้เตรียมไลบราลี่และส่วนประกอบจำเป็นต่าง ๆ ในการเขียนโปรแกรมมาให้ เพื่อให้คุณสามารถพัฒนาโปรแกรมได้ง่าย ๆ และธรรมดาที่สุด เหมือนการกลับไปสู่การพัฒนาโปรแกรมแบบเดิม โดยใช้โปรแกรม Notepad ธรรมดา ๆ หรือโปรแกรม Vi ในยูนิกส์ คุณก็สามารถสร้างโปรแกรมภาษาจาวาได้
หากเราไม่พูดถึงข่าวที่ว่า SDK for Java ของไมโครซอฟต์ไม่สามารถนำไปรันข้ามเพลตฟอร์มได้ ผมก็ขอแนะนำให้คุณหา SDK for Java มาทดลองใช้ดู ถึงแม้ว่าโปรแกรมจาวาที่คอมไพล์โดย SDK for Java จะมีปัญหาในการ Cross Plateform ก็ตาม แต่เราก็ยังสามารถนำซอร์สโค๊ดไปคอมไพล์ด้วย JDK ในระบบอื่นได้อยู่ เพราะฉะนั้นตรงนี้จึงไม่เป็นปัญหา เพราะบทความนี้ จะเสนอการเขียนโปแรกรมบนวินโดวส์ด้วยภาษาจาวาโดยเฉพาะ
การคอมไพล์และรันโปรแกรมภาษาจาวาด้วย JDK
JDK จะมีโปรแกรม 2 ตัวที่ผมจะแนะนําให้รู้จักกันก่อน ซึ่งก็คือตัวคอมไพเลอร์ (Compiler) และตัวแปลภาษา (interpretor)
การคอมไพล์โปรแกรมภาษาจาวา
javac.exe เป็นคอมไพล์เลอร์ภาษาจาวาของ JDK ผลที่ได้จากการคอมไพล์ก็คือไฟล์นามสกุล.class ซึ่งจะใช้ในการคอมไพล์ได้ทั้ง Applet และ Application รูปแบบการใช้งานก็แสนจะง่าย ดังนี้
javac program.java
ตัวอย่างเช่น หากเราต้องการคอมไพล์โปรแกรม test.java ให้คุณพิมพ์คำสั่งที่คอมมานด์ไลน์ดังนี้
C:> javac test.java
คราวนี้คุณก็จะได้ไฟล์ test.class มาพร้อมทำการรันเรียบร้อยแล้ว
การรันโปรแกรมภาษาจาวา
ในการรันโปรแกรมม .class นั้น เราจะใช้โปรแกรม java.exe หรือ jview.exe ซึ่งเป็นตัวแปลโปรแกรมจาวาที่จะมีมาให้เมื่อคุณติดตั้ง Internet Explorer หรือ JDK แล้ว โปรแกรมนี้จะใช้สําหรับรันโปรแกรมจาวาที่เป็น Application เท่านั้น รูปแบบของ Jview.exe มีลักษณะดังนี้
jview ชื่อไฟล์
หรือ
java ชื่อไฟล์
ตัวอย่างการใช้ jview รันโปรแกรม test.class คุณจะต้องเรียกดังนี้
C:> jview test
การสร้างคอนโซลแอปพลิเคชั่น
การเขียนโปรแกรมในโหมดคอนโซล (Console Application) หรือโหมดคอมมานด์ไลน์เป็นโปรแกรมในลักษณะของบรรทัดคําสั่ง เช่นเดียวกับการเขียนโปรแกรมบนดอส คือ โปรแกรมจะเรียก Dos Prompt และจะทํางานเช่นเดียวกับโปรแกรม ftp หรือโปรแกรม ping ที่มีมาพร้อมกับการติดตั้งวินโดวส์นั่นเอง
การเริ่มต้นกับภาษาจาวา
เราควรจะเริ่มกันตรงที่การสร้างโปรแกรมในแบบคอนโซลนี้กันก่อน เพื่อศึกษารูปแบบของภาษา , การใช้เงื่อนไขต่าง ๆ ตลอดจนถึงการใช้ตัวคอมไพเลอร์และตัวแปลภาษาจาวา
โปรแกรมภาษาจาวาจะทํางานอยู่ภายในคลาส ๆ เดียว ซึ่งภายในคลาสนั้นจะต้องมีฟังก์ชั่น main() รวมอยู่ด้วยเช่นเดียวกับภาษาซีนั่นเอง โปรแกรมแรกที่เราจะมาทดลองกันมีดังนี้
ให้คุณพิมพ์โปรแกรมต่อไปนี้ด้วย Notepad หรือโปรแกรม edit ในโหมดดอสโดยเซฟในชื่อ Easy.java
class Easy{
public static void main(String arg[]){
System.out.println("Easy Java
");
}
}
จากนั้นให้คุณทดลองคอมไพล์โปรแกรมโดยใช้ javac.exe ดังต่อไปนี้
c:>javac Easy.java
คุณจะได้ไฟล์ Easy.class มา หากคุณลองใช้คําสั่ง dir ดูรายชื่อไฟล์ ให้คุณทําการคอมไพล์โดยใช้ jview.exe ดังรูปแบบต่อไปนี้ คุณจะพบกับข้อความว่า Easy Java ปรากฏอยู่บนจอภาพ
c:>java Easy
Easy Java
การสร้างโปรแกรมบนวินโดวส์
การสร้างโปรแกรมบนวินโดวส์ด้วยภาษาจาวา ก็มีลักษณะเช่นเดียวกับการเขียนโปรแกรมด้วย Visual Basic เครื่องมือและอุปกรณ์ที่ใช้ในการพัฒนาโปรแกรมจาวาที่น่าสนใจมีมากมายหลายตัว แต่คุณสามารถใช้โปรแกรม Edit.com หรือ Notepad ในการเขียนโปรแกรม ให้คุณลองพิมพ์โปรแกรมต่อไปนี้ จากนั้นเซฟในชื่อ Window.java
import java.awt.*;
public class Window extends Frame{
public Window() {
setBackground(Color.lightGray);
setTitle("Title Bar");
}
public void paint(Graphics g) {
resize(200,200);
}
public static void main(String args[]) {
Window win = new Window();
win.show();
}
}
เมื่อคุณพิมพ์เสร็จแล้ว ให้คุณคอมไพล์โปรแกรมโดยใช้วิธีต่อไปนี้
C:>javac Window.java
คราวนี้ลองรันโปรแกรม Window.class เพื่อดูผลการทํางาน โดยพิมพ์คําสั่งต่อไปนี้
C:>java Window
จากนั้นคุณจะพบกับวินโดวส์เปล่า ๆ บนจอภาพ เมื่อรันโปรแกรม คุณจะไม่สามารถกลับไปสู่ Prompt ได้อีก หากคุณต้องการปิดโปรแกรม Window นี้ ให้คุณกดปุ่ม Ctrl+C ที่บรรทัดคําสั่ง โปรแกรมจะปิดและกลับสู่ Prompt อีกครั้ง
จาก Applet มาสู่ Application
สิ่งหนึ่งที่แตกต่างกันระหว่างจาวาที่เป็น Applet และจาวาที่เป็น Application ก็คือการทํางานของมันเพราะ Applet ต้องอาศัย HTML และเวปบราวเซอร์ และอีกสิ่งหนึ่งที่ต่างกันก็คือ ส่วนที่เป็นฟังก์ชั่น main() ภายในโปรแกรมจาวา
จากโปรแกรม Easy.java และ Window.java ที่เราได้ทดลองสร้างกัน คุณจะพบว่า รายละเอียดภายในโปรแกรมจะมีอยู่ฟังก์ชั่นหนึ่งที่เหมือนกัน นั่นคือ ฟังก์ชั่น main() โปรแกรมจาวาที่เป็น Appication จะต้องมีฟังก์ชั่น main() แต่โปรแกรมจาวาที่เป็น Applet ที่ไม่จําเป็นต้องมีฟังก์ชั่นนี้ มันจะมีฟังก์ชั่นพวก init() , start() , stop() เข้ามาเป็นตัวควบคุมแทน
เพราะฉะนั้น จากโปรแกรมจาวาที่เป็น Applet เราสามารถใช้วิธีง่าย ๆ เพื่อแปลงจากความเป็น Applet ให้มาทํางานแบบ Application ได้ โดยเปลี่ยนการสืบทอดคลาสจาก Applet มาเป็น Frame และนําโค๊ดโปรแกรมจากฟังก์ชั่น init() ใน Applet มาไว้ในคอนสตรัคเตอร์ของ Application และทําการเพิ่มฟังก์ชั่น main() ลงไปในโปรแกรม ส่วนรายละเอียดของฟังก์ชั่นอื่น ๆ เช่น init() , start , stop ก็เก็บไว้ในส่วนที่เหมาะสมเช่น คอนสตรัคเตอร์ และดีสตรัคเตอร์ เป็นต้น