บทที่ 2 Introduction to J2ME
บทที่ 2 Introduction to J2ME
แนะนำ
plateform ของ J2ME
J2ME
(Java 2 Platform, Micro Edition)
เป็นเทคโนโลยี ของ Java ที่ถูกใช้และ พัฒนาบนอุปกรณ์ ที่มีหน่วยความจำ
ความสามารถ ที่จำกัด อาทิเช่น มือถือ, Palm, Pagers และพวกอุปกรณ์พวก set-top
boxes ดังแสดงตัวอย่าง ของ plateform ต่างๆของ Java
รูปที่ 2 โครงสร้างของ Java Technology
จากรูปข้างต้นจะเห็นได้ว่า
เทคโนโลยีของ Java จะแบ่งออกเป็น 3 กลุ่ม ก็คือ J2EE, J2SE และ J2ME ดังที่เคยกล่าวไป
ใน บทที่ 1 แต่สำหรับในบทเรียนนี้ เราจะเน้น
เฉพาะ J2ME ซึ่งจากรูปทำให้เรารู้ได้ว่า J2ME ถูกแบ่ง ย่อย ออกเป็น อีก
2 กลุ่ม คือ
- High-end devices
กลุ่มของอุปกรณ์ ที่มีหน่วยความจำ
และหน่วยประมวลผล ที่ดี เช่น มือถือ(บางรุ่น), PDA, Screen-phone, set-top
box, net TV (อุปกรณ์บางตัว ยังไม่มีใน หประเทศไทย เลยครับ)
- Low-end devices
กลุ่มของอุปกรณ์ ที่มีหน่วยความจำ
และหน่วยประมวลผล ค่อนข้างน้อย เช่น Mobile, Pager, Organizer
J2ME Architectures
รูปที่ 3 J2ME Architectures
ลักษณะโครงสร้างของ สถาปฏิยกรรม J2ME
จะแบ่งออกเป็นชั้น โดยมีรายละเอียดดังนี้
- Host Operating
System จะเป็นส่วนของระบบปฏิบัติการ
เช่นเดียวกับบนเครื่อง Desktop หรือ Laptop ที่มี Windows เป็นระบบปฏิบัติการ
บนโทรศัพท์มือก็มีด้วยเช่นกัน อาทิ Nokia 7650, 3650 จะมี Symbian OS เป็นระบบปฏิบัติการ,
เครื่อง Palm จะมี Palm OS เป็นระบบปฏิบัติการ
- Java Virtual Machines
(JVM) จะเป็นส่วนของระบบจัดการ
ที่ควบคุม และทำงาน ให้สามารถทำงานร่วมกันได้ ระหว่าง Java กับ Host Operating
System โดยมากจะเป็นการแปลงจาก code Java ไปเป็นคำสั่ง ที่ Host Operating
System เข้าใจ และทำงานร่วมกันได้
- Configuration
เป็นกลุ่มของ Class Library (คลัง Class) ที่ครอบคลุม ถึงอุปกรณ์ต่างๆ
ที่อยู่ในกลุ่ม
- Profiles
เป็นกลุ่มของ คำสั่ง,API (Application Programming Interface) ที่ใช้สำหรับอุปกรณ์
แต่ละประเภทโดยเฉพาะ
J2ME Platform
รูปที่ 4 J2ME Platform
คราวนี้เราจะดูถึงแต่ละส่วนของ Platform
ของ J2ME เพื่อความเข้าใจ ซึ่งจะช่วยให้เราเข้าใจการทำงาน และช่วยเราในการเขียนโปรแกรมให้ง่ายยิ่งขึ้น
- Virtual
Machine มีอยู่ด้วยกัน 2 ชนิด คือ CVM (Compact Virtual Machine)
สำหรับเครื่องที่เป็น High-end devices และ KVM (Kilo Virtual Machine)
สำหรับเครื่องที่เป็น Low-end devices
- Configurations
มีอยู่ด้วยกัน 2 ชนิด คือ CDC (Connected Device Configuration) สำหรับเครื่องที่เป็น
High-end devices และ CLDC (Connected Limited Device Configuration) สำหรับเครื่องที่เป็น
Low-end devices โดยจะมีรายละเอียดดังตาราง
CDC |
CLDC |
ทุกๆส่วนของ features และ APIs
ของ Java |
บางส่วนของ features และ APIs
ของ Java |
สำหรับอุปกรณ์ ในกลุ่ม High-end
devices |
สำหรับอุปกรณ์ ในกลุ่ม Low-end
devices |
หน่วยประมวลผล 32 bit |
หน่วยประมวลผล 16 และ 32 bit |
หน่วยความจำเครื่อง อย่างน้อย
2 MB |
หน่วยความจำเครื่อง 160-512
KB |
ใช้ CVM (Compact Virtual Machine) |
ใช้ KVM (Kilo Virtual Machine) |
ตารางเปรียบเทียบ ระหว่าง CDC
และ CLDC
รูปที่ 5 แสดงความสัมพันธ์ ระหว่าง
J2SE, CDC และ CLDC
จากรูปที่ 5 จะเห็นว่า ทั้งส่วนของ
API หรือ Class บางตัวของ CDC และ CLDC สามารถใช้ได้เช่นเดียวกับ J2SE
แต่ทั้ง CDC และ CLDC เอง ก็มีส่วนที่ อยู่นอกเหนือจากที่ J2SE มี และอีกอย่างทีสำคัญคือ
CLDC จะเป็นแค่เพียงส่วนหนึ่ง ของ CDC เท่านั้น ที่เป็นอย่างนี้ก็เพราะว่า
CDC รองรับกับเครื่องที่ อยู่ในระดับ High-end devices ทำให้มีความสามารถมากกว่า
ส่วน CLDC รองรับกับเครื่องที่อยู่ในระดับ Low-end devices ทำให้มีข้อจำกัดที่มากกว่า
CDC
- Profiles
เป็นส่วนของ API และ Class ที่ใช้งานได้บนตัวของอุปกรณ์ แต่ละประเภท
ซึ่งเป็นการขยายความสามารถของ CDC หรือ CLDC ให้มากขึ้น และมีส่วนของการทำงานที่เป็น
ลักษณะเฉพาะของอุปกรณ์นั้นๆ ตัวอย่างของ Profile ที่ใช้งานการพัฒนา เช่น
- MIDP (Mobile Information Device
Profile) เป็น Profile สำหรับอุปกรณ์ประเภทมือถือ (ซึ่งในบทต่อๆไป เราจะมาเน้นถึง
การเขียน MIDP นี่หละครับ)
- PDA Profile (Personal Digital
Assistant Profile) สำหรับอุปกรณ์ประเภท Organizer เช่น เครื่อง Palm
- Foundation Profile สำหรับอุปกรณ์ในกลุ่มของ
High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ CDC ซึ่งจะประกอบด้วย
API และ Function พื้นฐาน
- Personal Profile สำหรับอุปกรณ์ในกลุ่มของ
High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ Foundation Profile
ซึ่งจะประกอบด้วย การจัดการด้าน GUI
- RMI Profile สำหรับอุปกรณ์ในกลุ่มของ
High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ Foundation Profile
ซึ่งจะประกอบด้วย การจัดการด้าน RMI (Remote Method Invocation)
ตารางด้านล่าง จะเป็นการแสดงถึง
Profiles ต่างๆ พร้อมทั้ง Configuration ของ Profiles แต่ละตัว
Profile |
Config |
MID |
CLDC |
Foundation |
CDC |
Personal |
CDC |
PDA |
CLDC |
Bluetooth |
CLDC |
RMI |
CDC |
ตารางแสดง Profile
และ Configuration
CLDC
รูปที่ 6 แสดง Package ของ CLDC และ
MIDP
จากรูปที่ 6 จะเห็นได้ว่า CLDC จะมี
Package อยู่ 4 Packages โดยมีรายละเอียดคือ
- Package ที่สืบทอดจาก J2SE จะมีอยู่
3 Packages ได้แก่
- java.lang
- java.io
- java.util
- Package ที่เป็นของ CLDC เอง
- javax.microedition.io
CLDC
Libraries : java.lang.* |
Object |
Class |
Runtime |
System |
Thread |
Runanable |
String |
StringBuffer |
Throwable |
Math |
Boolean |
Byte |
Short |
Integer |
Long |
Character |
CLDC
Libraries : java.io.* |
InputStream |
OutputStream |
DataInput |
DataOutput |
Reader |
Writer |
ByteArrayInputStream |
ByteArrayOutputStream |
DataInputStream |
DataOutputStream |
InputStreamReader |
OutputStreamWriter |
|
PrintStream |
CLDC
Libraries : java.util.* |
Calendar |
Date |
TimeZone |
Vector |
Stack |
Hashtable |
Enumeration |
Random |
ตารางแสดง CLDC Libraries
ในเรื่องของ CLDC Networking and I/O
จะมีอยู่ในรายละเอียดของ Generic Connection Frameworks (GCF) ซึ่งจะได้นำเสนอในบทต่อๆไป
สำหรับเรื่องของข้อจำกัดของ CLDC ซึ่งได้แก่เรื่องของ
ไม่รองรับกับ Floating-Point และข้อมูลแบบ Double, ไม่สามารถเรียกใช้ Finalizion
Method และมีข้อจำกัดในเรื่อง การทำ Error Handling ที่เป็นอย่างนี้ ก็เพราะว่า
CLDC จะต้องมีการทำงานที่อยู่บน เครื่องหรืออุปกรณ์ ที่มีข้อจำกัดทางด้านหน่วยความจำ
และ หน่วยประมวลผล จึงจำเป็นจะต้องตัดในส่วน ที่ต้องใช้งานหน่วยความจำ มากๆ
ออกไป
MIDP
MIDP (Mobile Information Device Profile)
ได้จัดเตรียมเกี่ยวกับ
- User Interface จัดการเกี่ยวกับ
การแสดงผล
- Persistent storage จัดการเกี่ยวกับ
การเก็บข้อมูล และฐานข้อมูล
- Networks จัดการเกี่ยวกับ การเชื่อมต่อ
เน็ตเวิร์ค
- Application life-cycle จัดการเกี่ยวกับ
ลำดับขั้นตอนการทำงาน
- Event handling จัดการเกี่ยวกับ
อีเวนต์ต่างๆ
MIDP Packages จะมีอยู่ 3 Packages
คือ
- javax.microedition.midlet ,เป็น
API ในการสร้างโปรแกรมหลัก
- javax.microedition.lcdui ,เป็น
API ในการจัดการ User Interface
- javax.microedition.rms ,RMS (Record
Management System) เป็นส่วนของการเก็บข้อมูล เช่นเดียวกับฐานข้อมูล
ในบทนี้ เราได้ให้ความรู้เกี่ยวกับ
CLDC และ MIDP เป็นหลัก เพื่อทำให้คุณเข้าใจถึงความเป็นมา ทำให้คุณสามารถที่จะพัฒนาในส่วนของ
J2ME ตัวอื่นๆ ได้เช่นกัน สำหรับในบทต่อไป เราจะได้เริ่มกล่าวถึง กระบวนการ
ของ MIDP Programming
|