Sourcecode J2ME Book Online by 9'M (8 Sep 2003)
เกริ่นนำ
บทที่ 1 Wireless Programming
บทที่ 2 Introduction to J2ME
บทที่ 3 MIDP Programming
บทที่ 4 MIDP GUI Programming
  (ภาคปฏิบัติ >>6 ตัวอย่างโปรแกรม)
บทที่ 5 Low Level User Interface
  (ภาคปฏิบัติ >>6 ตัวอย่างโปรแกรม)
บทที่ 6 Record Management System
  (ภาคปฏิบัติ >>2 ตัวอย่างโปรแกรม)
บทที่ 7 Network Connection
  (ภาคปฏิบัติ >>3 ตัวอย่างโปรแกรม)

บทที่ 3 MIDP Programming

MIDlet คือ...?

  • โปรแกรม Java ที่ run บน MIDP environment
  • MIDlet เป็น class ที่อยู่ใน package ของ java.microedition.midlet
  • โปรแกรมที่พัฒนาขึ้นจาก MIDP และ สืบทอดจาก MIDlet
  • class ที่สืบทอดจาก MIDlet class และ Implements (เรียกใช้) 3 method คือ startApp(), pauseApp() และ destroyApp()

ในความเป็นจริงแล้ว การพัฒนา MIDlet จะเป็นในลักษณะเดียวกับการพัฒนา Java Applet คือ Java Applet จะเป็นการสืบทอดจาก class Applet ส่วน MIDP จะเป็นการสืบทอด จาก class MIDlet

 

MIDlet 's Life Cycle

MIDlet's Life Cycle
รูปที่ 7 แสดงวงจรการทำงานของ MIDlet

เมื่อเราได้สร้าง class ที่สืบทอดมาจาก MIDlet Package ที่ชื่อ javax.microedition.midlet.MIDlet แล้ว, class ของเราจะมีวงจร การทำงานเริ่มจากการสร้าง หลังจากนั้นก็จะอยู่ในสถานะ Paused(หยุด) เมื่อเรา ต้องการให้มีการทำงานเกิดขึ้น เราก็ต้องเรียกใช้ method ที่ชื่อ startApp() สถานะของคลาสก็เปลี่ยนไปเป็นสถานะ Active(ทำงาน) ดังรูป, และหากต้องการให้ class หยุดการทำงาน สามารถทำได้โดย เรียกใช้ Method pauseApp(), สุดท้ายก็คือการ จบการทำงาน โดยเรียกใช้ Method destroyApp() โปรแกรมก็จะเข้าสู่สถานะ Destroyed(ถูกทำลาย)

สถานะต่างๆของ MIDlet ,จากรูปที่ 7 จะเห็นได้ว่า MIDlet มีอยู่ 3 สถานะด้วยกัน คือ

- Paused state (สถานะหยุดการทำงาน) จะเกิดขึ้น ตอนแรกที่เราทำการเรียก run โดยการใช้ method startApp(), มีการเรียกใช้ method pauseApp() หรือ notifyPaused()

- Active state (สถานะการทำงาน) จะเกิดขึ้น ตอนแรกที่เริ่มต้นโปรแกรม, มีการเรียกใช้ method startApp() หรือ มีการเรียกใช้ method resumeRequest() ในต้อนที่สถานะการกทำงานยังเป็น pauseApp()

- Destroyed state (สถานะถูกทำลาย) จะเกิดขึ้นหลังจากที่มีการใช้ method destroyApp หรือ notifyDestroy()

จะเห็นได้ว่าในการเปลี่ยนสถานะ (state) ของการทำงาน จะใช้ method 3 อันด้วยกัน คือ

- resumeRequest() ใช้เพื่อ ให้กลับมาอยู่ในสถานะ Active state อีกครั้ง

- notifyPaused() ใช้เพื่อ สั่งหยุดการทำงาน

- notifyDestroy() ใช้เพื่อ สั่งทำลาย เพื่อจบการทำงาน

MIDlet suites

MIDlet suites
รูปที่ 8 แสดงองค์ประกอบของ MIDlet suites

MIDlet suites เป็นที่รวบของ class ของ MIDlet และ ไฟล์รูปภาพต่างๆ ที่เกี่ยวข้องกับการทำงาน, MIDlet suites จะประกอบด้วย 2 ไฟล์หลักๆ คือ

- JAD File เป็น Text file ที่ทำหน้าที่ Application Descriptor (บอกลักษณะ และคุณสมบัติของโปรแกรม) จะเก็บ รายละเอียดของ MIDlet suite ต่างๆ ใช้สำหรับให้อุปกรณ์(เช่นมือถือ)ดาว์นโหลด ไปทำการตรวจสอบ รายละเอียดของโปรแกรม ก่อนการติดตั้ง

- JAR File เป็น File ที่เก็บ MIDlet ต่างๆเอาไว้ รวมทั้ง resource file ที่เกี่ยวข้อง โดยมี Manifest file

ตัวอย่าง JAD File (HelloExamples.jad)

MIDlet-Name: HelloExamples
MIDlet-Vendor: Nokia Pte Ltd
MIDlet-Version: 1.0
MIDlet-Jar-Size: 7808
MIDlet-Jar-URL: HelloExamples.jar

ไฟล์ JAD ข้างต้นจะเป็นการบอกถึงรายละเอียดของ MIDlet suite ว่ามีชื่อว่าอะไร, พัฒนาโดยบริษัทใด, เวอร์ชั่นไหน, ขนาดไฟล์เท่าไหร่, และชื่อไฟล์ JAR ที่ใช้ในการติดตั้งชื่ออะไร (ตรงนี้สามารถใส่ url ที่คุณต้องการให้ download JAR File ได้)

ตัวอย่าง Manifest File

Manifest-Version: 1.0
MIDlet-Name: HelloExamples
MIDlet-Vendor: Nokia Pte Ltd
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-1: BouncingTextMIDlet, , example.hello.BouncingTextMIDlet
MIDlet-2: HelloWorldMIDlet, , example.hello.HelloWorldMIDlet

สำหรับ Manifest File ข้างต้นจะบอกถึงรายละเอียดของ JAR File นั้นๆว่า เป็น Manifest เวอร์ชั่น เท่าไหร่, ชื่อ MIDlet ว่าอะไร, พัฒนาโดยใคร, เวอร์ชั่นเท่าไหร่,ใช้ MIDP และ Configuration เวอร์ชั่นอะไร สุดท้ายคือ ประกอบด้วย MIDlet อะไรบ้าง

 

MIDlet Development Steps

MIDlet Development Steps

ขั้นตอนในการการพัฒนา MIDlet จะมีขั้นตอนดังนี้

  1. ทำการสร้าง MIDlet และ ข้อมูลอื่นๆ ที่ต้องใช้ในโปรแกรม เช่น ไฟล์รูปภาพ, ไอคอนต่างๆ
  2. สร้าง MIDlet Suite
  3. สร้าง JAD File
  4. ทดลอง run โปรแกรมผ่าน emulator (โปรแกรมจำลอง)
  5. ทำการตรวจสอบแก้ไข หากมีข้อผิดพลาดให้กลับไปทำตั้งแต่ 1-3 ใหม่อีกครั้ง
  6. สุดท้าย เป็นการทำตัวติดตั้ง สำหรับการติดตั้งเข้าสู่ มือถือ

ในการพัฒนา MIDlet หลังจากที่คุณได้ทำการเขียนโค้ดขึ้นมาแล้ว คุณจะต้องทำการ Compile โค้ดนั้นด้วย Javac (Java Compiler) สิ่งที่ได้คือไฟล์ class ขั้นตอนต่อไปก็คือคุณต้อง นำไฟล์ class ของคุณไปทำการ Preverifier อีกครั้ง ก่อนจะส่งไฟล์ ที่ได้ไปให้กับมือถือ ทดลอง run เพื่อตรวจสอบการทำงาน ว่าถูกต้องอย่างที่ต้องการหรือไม่ (ดูรูปที่ 9 ประกอบ)

Two-Phase Class File Verification Process
รูปที่ 9 แสดงขั้นตอนการ Compile และ Verification

จะเห็นได้ว่าเป็นเรื่องที่ยุ่งยากมาก ในการที่จะเขียน และพัฒนา MIDet ขึ้นมาสักตัว ด้วยเหตุนี้ จึงเกิดการพัฒนา Tools ที่ใช้ในการพัฒนา MIDlet เพื่อให้ผู้พัฒนา มีความสะดวกใน สร้างและพัฒนา MIDlet

 

MIDP Tools

เครื่องมือในการพัฒนา MIDlet ได้มีออกมาหลายค่ายด้วยกัน มีทั้งต้องเสียเงิน และ ให้ Download ฟรี ตัวอย่างเช่น

- J2ME Wireless Toolkit
- Nokia Developer's Suit for J2ME
- MIDP for Palm
- Simplicity for Mobile Device
- Metroworks Code Warrior
- Motorola SDK
- IBM Visual Age for Java Micro edition
- Whiteboard from Zucotto Wireless

ซึ่งในเนื้อหาของเราจะใช้ J2ME Wireless Toolkit ร่วมกับการใช้ Emulator ต่างๆของทาง Nokia เป็นหลัก, สำหรับในขณะที่ผมเขียนหนังสือ เล่มนี้อยู่ Java ก็ได้ ออก J2ME Wireless Toolkit 2.0 ซึ่งเป็น version ใหม่ ที่รองรับกับ MIDP 2.0 ,Wireless Messaging 1.1และ Mobile Media 1.0 ซึ่งก็ยังไม่มี ถือถือ ของค่ายใด ที่รองรับกับ MIDP 2.0 ออกมาจำหน่ายในท้องตลาด

J2ME Wireless Toolkit
รูปที่ 10 แสดงหน้าตาของโปรแกรม KToolbar ที่อยู่ใน
J2ME Wireless Toolkit

J2ME Emulator
รูปที่ 11 แสดงหน้าตาของ Emulator ที่อยู่ใน
J2ME Wireless Toolkit

 

Getting Start

หลังจากที่เราได้ให้ทฤษฎีกันก่อนการเริ่มต้น การเขียนโปรแกรม ก็เพื่อว่าจะทำให้คุณเกิดความเข้าใจกันก่อน ว่าอะไรเป็นอะไร ไม่เช่นแล้วคุณก็จะสงสัยว่า หลายสิ่งหลายอย่างจากโค้ดมาได้อย่างไร แต่ถ้าหากว่าในส่วนของทฤษฎีที่ผ่านมา คุณไม่ค่อยเข้าใจ ก็ไม่เป็นไร ขอให้ทำตัวอย่างต่อไป และหวนกลับไปอ่านอีกครั้ง ก็จะทำความเข้าใจได้ง่ายขึ้น

สิ่งที่จำเป็นในการพัฒนา MIDlet ก็คือ MIDlet Tool ที่เราจะนำมาใช้ เพื่อความสะดวกในกาพัฒนา ทำให้คุณสามารถพัฒนา MIDlet ได้อย่างรวดเร็ว อย่างที่คุณต้องการ สำหรับในบทเรียนนี้ เราจะมาเริ่มจาก การติดตั้งโปรแกรม ที่มีความสำคัญต่อการพัฒนา รวมทั้งการติดตั้ง Nokia Emulator ซึ่งเป็นโปรแกรมจำลองการทำงาน ของมือถือ รุ่นต่างๆ

การติดตั้งและใช้งาน J2ME Wireless Toolkits(WTK)

- ก่อนการติดตั้ง คุณจะต้องทำการ Download Java 2 SDK, SE จาก http://java.sun.com/j2se/downloads.html (ซึ่งในขณะที่ผมเขียน หนังสือเล่มนี้ เป็น vesion 1.4.2), แล้วทำการติดตั้ง

- การติดตั้งโปรแกรม J2ME Wireless Toolkits(WTK),สามารถ Download โปรแกรมได้จาก http://java.sun.com/j2me/download.html แล้วทำการติดตั้งโปรแกรม โปรแกรมที่ติดตั้งแล้ว จะอยู่ใน Path ของ C:\WTK20 ซึ่งในนี้จะมี Folder ที่เก็บทั้ง โค้ด และ library รวมทั้ง document ของ การเขียน J2ME

- การเรียกใช้งานสามารถทำได้โดย เลือกที่เมนู Start->Programs->J2ME Wireless Toolkit 2.0->Ktoolbar จะปรากฏหน้าต่าง ดังรูป

J2ME Wireless Toolkit
รูปที่ 12 แสดงหน้าตาของโปรแกรม KToolbar ที่อยู่ใน
J2ME Wireless Toolkit

- คลิกปุ่ม New Project จะปรากฏหน้าต่าง ให้ป้อนค่า Project Name เป็น Example และ MIDlet Class Name เป็น HelloWorld, ดังรูปที่ 13 แล้วคลิกปุ่ม Create Project

New Project Window
รูปที่ 13 แสดงหน้าต่าง สร้าง Project ใหม่

เมื่อคุณ คลิก Create Project โปรแกรมจะทำการสร้าง Folder ชื่อ Example ตามชื่อของ Project ที่เราตั้งขึ้น โดยจะอยู่ที่ Path C:\WTK20\apps\ , พร้อมทั้งจะมี Folder ย่อยๆที่ทำหน้าที่เก็บข้อมูลต่างๆ เช่น bin =เอาไว้เก็บไฟล์ ที่ผ่านการ complie หรือ make แล้ว, lib =เก็บ library ,res =เก็บไฟล์ resource และ src =เก็บไฟล์โค้ด

- ทำการแก้ไข ค่าของ MicroEdition-Profile เป็น MIDP-1.0 ดังแสดงในรูปที่ 14 แล้วคลิกปุ่ม OK

Settings for project window
รูปที่ 14 แสดงหน้าต่าง Settings for project

- ทำการสร้างไฟล์ HelloWorld.java โดยมีโค้ดดังตารางด้านล่าง, แล้วบันทึกไว้ที่ Path C:\WTK20\apps\src

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;



public class HelloWorld extends MIDlet

{
	private Display display;
	private TextBox t = null;

	public HelloWorld(){}

	public void startApp(  )

	{
		display = Display.getDisplay(this);
		t = new TextBox("Simple MIDlet","Hello World",256,0);		
		display.setCurrent(t);

	}



	protected void pauseApp(  ){}

	protected void destroyApp( boolean unconditional ){}

}

 

- ไปที่หน้าต่าง Ktoolbar แล้วคลิก Run, MIDlet ที่เราเขียนก็จะแสดงให้เห็น บนตัวของ Emulator ดังรูปที่ 15

HelloWorld MIDlet
รูปที่ 15 แสดงหน้าต่าง เมื่อ run HelloWorld

 

การติดตั้งและใช้งาน Sun ONE Studio 4 update 1, Mobile Edition

สำหรับ โปรแกรม Sun ONE Studio 4 update 1, Mobile Edition เป็น MIDlet Tool ที่สะดวกในการใช้งาน เพราะมี Editor ที่ช่วยในการเขียนโปรแกรมได้เร็ว และเป็นระเบียบ รวมทั้งยังสามารถพัฒนาโปรแกรมในส่วนของ Server ได้ เช่น การพัฒนา Servlet ให้ทำงานร่วมกับ MIDlet

- ก่อนการติดตั้ง คุณจะต้องทำการ Download Java 2 SDK, SE จาก http://java.sun.com/j2se/downloads.html (ซึ่งในขณะที่ผมเขียน หนังสือเล่มนี้ เป็น vesion 1.4.2), แล้วทำการติดตั้ง

- การติดตั้งโปรแกรม Sun ONE Studio 4 update 1, Mobile Edition ,สามารถ Download โปรแกรมได้จาก http://wwws.sun.com/software/sundev/jde/index.html,แต่ก่อนที่จะ Download ได้ คุณจะต้องลงทะเบียนกับทาง เว็บเค้าก่อน เมื่อได้ ไฟล์มาแล้วให้ทำการติดตั้ง

- การเรียกใช้งานสามารถทำได้โดย เลือกที่เมนู Start->Programs->Sun Microsystems->Sun ONE Studio 4 ME->Sun ONE Studio จะปรากฏหน้าต่าง ดังรูป ด้านล่าง ให้คุณทำการป้อน Path ของ Directory ที่คุณต้องการเก็บไฟล์ Project ต่างๆของคุณ (ในที่นี้ผมใส่เป็น C:\J2ME)

Enter User Directory
รูปที่ 16 แสดงหน้าต่างรับค่า Path เก็บ Project ของผู้ใช้

ต่อจากนั้น โปรแกรมก็จะให้คุณเลือก แบบของ window mode ที่คุณต้องการใช้งาน ให้คุณเลือก แล้วคลิก Finish จะปรากฏหน้าต่าง ทั้งหมดของโปรแกรม

Explorer
รูปที่ 17 แสดงตำแหน่งของ MIDlet suite และ Folder เก็บไฟล์ตัวอย่าง

- ขั้นตอนต่อไป เราก็จะมาเริ่มสร้าง HelloWorld โดยใช้ Sun One Studio กัน, โดยเริ่มจาก ทำการขวาที่ Local Directory แล้วเลือก New->MIDP->HelloMIDlet

Create new MIDP
รูปที่ 18 แสดงขั้นตอนการสร้าง HelloMIDlet

- จะปรากฎหน้าต่าง New Wizard, ให้ทำการป้อน Name เป็น HelloWorld ดังรูปด้านล่าง, แล้วให้คลิกปุ่ม Finish

New Wizard window
รูปที่ 19 แสดงหน้าต่างป้อนชื่อ MIDlet

- โปรแกรมจะทำการสร้างโค้ดให้คุณโดยอัตโนมัติ ดังรูปที่ 20

Work space
รูปที่ 20 แสดงหน้าต่าง แสดงโค้ดที่ถูกสร้างขึ้น

- ขั้นตอนสุดท้ายให้คุณทดลอง run โปรแกรม โดยกดปุ่ม F6, MIDlet ก็จะถูก run และแสดงผลออกทาง Emulator ดังรูปที่ 21

Emulator
รูปที่ 21 แสดงผลการ run MIDlet

 

ในบทนี้ เราได้ให้ความรู้เกี่ยวกับ ลักษณะการทำงานของ MIDlet และการใช้งาน MIDlet Tool ในการพัฒนา MIDlet สำหรับในเนื้อหาต่อไป เราจะได้เริ่มกล่าวถึง ลักษณะ ของ GUI (Graphic User Interface) ของ MIDP

 

Sourcecode | Contact Us
สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
Copyright 2001 SourceCode.in.th