
Page 1
T ng b c l p trình :ừ ướ ậ
CHO ĐI N THO I DI Đ NG J2ME (ph n 1)Ệ Ạ Ộ ầ
Lê Ng c Qu c Khánhọ ố
L i gi i thi u:ờ ớ ệ
Công ngh Java cho công nghi p di đ ng (Java Technology Wireless Industry - JTWI) ngàyệ ệ ộ
càng phát tri n và thu hút s quan tâm c a nhi u ng i. Nh m đáp ng nhu c u này,ể ự ủ ề ườ ằ ứ ầ
TinCNTT m chuyên m c ở ụ J2ME Tutorial c g ng đ c p đ y đ nhi u khía c nh c a côngố ắ ề ậ ầ ủ ề ạ ủ
ngh Java cho di đ ng. Đ b t đ u lo t bài, chúng ta s cùng kh o sát các l p và khái ni mệ ộ ể ắ ầ ạ ẽ ả ớ ệ
quan tr ng c a J2ME.ọ ủ
Bài 1: Khái quát các l p J2MEớ
M c tiêu c a J2ME là cho phép ng i l p trình vi t các ng d ng đ c l p v i thi t b diụ ủ ườ ậ ế ứ ụ ộ ậ ớ ế ị
đ ng, không c n quan tâm đ n ph n c ng th t s . Đ đ t đ c m c tiêu này, J2ME đ cộ ầ ế ầ ứ ậ ự ể ạ ượ ụ ượ
xây d ng b ng các t ng (layer) khác nhau đ gi u đi vi c th c hi n ph n c ng kh i nhà phátự ằ ầ ể ấ ệ ự ệ ầ ứ ỏ
tri n. Sau đây là các t ng c a J2ME đ c xây d ng trên CLDC:ể ầ ủ ượ ự
S u t m : Võ Thành Luân – tihonphysics@yahoo.comư ầ

Page 1
Hình 1. Các t ng c a CLDC J2MEầ ủ
M i t ng trên t ng hardware là t ng tr u t ng h n cung c p cho l p trình viên nhi u giaoỗ ầ ở ầ ầ ừ ượ ơ ấ ậ ề
di n l p trình ng d ng (API-Application Program Interface) thân thi n h n.ệ ậ ứ ụ ệ ơ
T d i lên trên:ừ ướ
T ng phầ ần c ng thi t b (Device Hardware Layer)ứ ế ị
Đây chính là thi t b di đ ng th t s v i c u hình ph n c ng c a nó v b nh và t c đ xế ị ộ ậ ự ớ ấ ầ ứ ủ ề ộ ớ ố ộ ử
lý. Dĩ nhiên th t ra nó không ph i là m t ph n c a J2ME nh ng nó là n i xu t phát. Các thi tậ ả ộ ầ ủ ư ơ ấ ế
b di đ ng khác nhau có th có các b vi x lý khác nhau v i các t p mã l nh khác nhau. M cị ộ ể ộ ử ớ ậ ệ ụ
tiêu c a J2ME là cung c p m t chu n cho t t c các lo i thi t b di đ ng khác nhau.ủ ấ ộ ẩ ấ ả ạ ế ị ộ
T ng máy o Java (Java Virtual Machine Layer)ầ ả
Khi mã ngu n Java đ c biên d ch nó đ c chuy n đ i thành mã bytecode. Mã bytecode nàyồ ượ ị ượ ể ổ
sau đó đ c chuy n thành mã ngôn ng máy c a thi t b di đ ng. T ng máy o Java bao g mượ ể ữ ủ ế ị ộ ầ ả ồ
KVM (K Virtual Machine) là b biên d ch mã bytecode có nhi m v chuy n mã bytecode c aộ ị ệ ụ ể ủ
ch ng trình Java thành ngôn ng máy đ ch y trên thi t b di đ ng. T ng này cung c p m tươ ữ ể ạ ế ị ộ ầ ấ ộ
s chu n hóa cho các thi t b di đ ng đ ng d ng J2ME sau khi đã biên d ch có th ho tự ẩ ế ị ộ ể ứ ụ ị ể ạ
đ ng trên b t kỳ thi t b di đ ng nào có J2ME KVM.ộ ấ ế ị ộ
T ng c u hình (Configuration Layer)ầ ấ
T ng c u hình c a CLDC đ nh nghĩa giao di n ngôn ng Java (Java language interface) c b nầ ấ ủ ị ệ ữ ơ ả
đ cho phép ch ng trình Java ch y trên thi t b di đ ng. Đây là m t t p các API đ nh nghĩaể ươ ạ ế ị ộ ộ ậ ị
lõi c a ngôn ng J2ME. L p trình viên có th s d ng các l p và ph ng th c c a các APIủ ữ ậ ể ử ụ ớ ươ ứ ủ
này tuy nhiên t p các API h u d ng h n đ c ch a trong t ng hi n tr ng (profile layer).ậ ữ ụ ơ ượ ứ ầ ệ ạ
T ng hi n tr ng (Profile Layer)ầ ệ ạ
T ng hi n tr ng hay MIDP (Hi n tr ng thi t b thông tin di đ ng-Mobile Information Deviceầ ệ ạ ệ ạ ế ị ộ
Profile) cung c p t p các API h u d ng h n cho l p trình viên. M c đích c a hi n tr ng làấ ậ ữ ụ ơ ậ ụ ủ ệ ạ
xây d ng trên l p c u hình và cung c p nhi u th vi n ng d ng h n. MIDP đ nh nghĩa cácự ớ ấ ấ ề ư ệ ứ ụ ơ ị
API riêng bi t cho thi t b di đ ng. Cũng có th có các hi n tr ng và các API khác ngoàiệ ế ị ộ ể ệ ạ
S u t m : Võ Thành Luân – tihonphysics@yahoo.comư ầ

Page 1
MIDP đ c dùng cho ng d ng. Ví d , có th có hi n tr ng PDA đ nh nghĩa các l p vàượ ứ ụ ụ ể ệ ạ ị ớ
ph ng th c h u d ng cho vi c t o các ng d ng PDA (l ch, s h n, s đ a ch ,…). Cũng cóươ ứ ữ ụ ệ ạ ứ ụ ị ổ ẹ ổ ị ỉ
th có m t hi n tr ng đ nh nghĩa các API cho vi c t o các ng d ng ể ộ ệ ạ ị ệ ạ ứ ụ Bluetooth. Th c t , cácự ế
hi n tr ng k trên và t p các API đang đ c xây d ng. Chu n hi n tr ng PDA là đ c t JSRệ ạ ể ậ ượ ự ẩ ệ ạ ặ ả
- 75 và chu n bluetooth API là đ c t JSR - 82 v i JSR là vi t t t c a Java Specificationẩ ặ ả ớ ế ắ ủ
Request.
1 Máy o Java (hay KVM)ả
Vai trò c a máy o Java hay KVM là d ch mã bytecode đ c sinh ra t ch ng trình Java đãủ ả ị ượ ừ ươ
biên d ch sang ngôn ng máy. Chính KVM s chu n hóa output c a các ch ng trình Java choị ữ ẽ ẩ ủ ươ
các thi t b di đ ng khác nhau có th có b vi x lý và t p l nh khác nhau. Không có KVM,ế ị ộ ể ộ ử ậ ệ
các ch ng trình Java ph i đ c biên d ch thành t p l nh cho m i thi t b di đ ng. Nh v yươ ả ượ ị ậ ệ ỗ ế ị ộ ư ậ
l p trình viên ph i xây d ng nhi u đích cho m i lo i thi t b di đ ng. Hình 2 đây bi u di nậ ả ự ề ỗ ạ ế ị ộ ể ễ
ti n trình xây d ng ng d ng MIDlet hoàn ch nh và vai trò c a KVM.ế ự ứ ụ ỉ ủ
Hình 2. Ti n trình xây d ng MIDletế ự
Quá trình phát tri n ng d ng MIDlet v i IDE (Môi tr ng phát tri n tích h p-Intergratedể ứ ụ ớ ườ ể ợ
Development Environment):
L p trình viên: T o các t p tin ngu n Javaậ ạ ậ ồ
B c đ u tiên là l p trình viên ph i t o mã ngu n Java, có th có nhi u t p tin (*.java).ướ ầ ậ ả ạ ồ ể ề ậ
Trên IDE: B biên d ch Java (Java Compiler): Biên d ch mã ngu n thành mã bytecodeộ ị ị ồ
B biên d ch Java s biên d ch mã ngu n thành mã bytecode. Mã bytecode này s đ c KVMộ ị ẽ ị ồ ẽ ượ
d ch thành mã máy. Mã bytecode đã biên d ch s đ c l u trong các t p tin *.class và s cóị ị ẽ ượ ư ậ ẽ
m t t p tin *.class sinh ra cho m i l p Java.ộ ậ ỗ ớ
Trên IDE: B ti n ki m tra (Preverifier): Ki m tra tính h p l c a mã bytecodeộ ề ể ể ợ ệ ủ
M t trong nh ng yêu c u an toàn c a J2ME là b o đ m mã bytecode chuy n cho KVM là h pộ ữ ầ ủ ả ả ể ợ
l và không truy xu t các l p hay b nh ngoài gi i h n c a chúng. Do đó t t c các l p đ uệ ấ ớ ộ ớ ớ ạ ủ ấ ả ớ ề
ph i đ c ti n ki m tra tr c khi chúng có th đ c download v thi t b di đ ng. Vi c ti nả ượ ề ể ướ ể ượ ề ế ị ộ ệ ề
ki m tra đ c xem là m t ph n c a môi tr ng phát tri n làm cho KVM có th đ c thu nhể ượ ộ ầ ủ ườ ể ể ượ ỏ
h n. B ti n ki m tra s gán nhãn l p b ng m t thu c tính (attribute) đ c bi t ch r ng l pơ ộ ề ể ẽ ớ ằ ộ ộ ặ ệ ỉ ằ ớ
đó đã đ c ti n ki m tra. Thu c tính này tăng thêm kho ng 5% kích th c c a l p và sượ ề ể ộ ả ướ ủ ớ ẽ
đ c ki m tra b i b ki m tra trên thi t b di đ ng.ượ ể ở ộ ể ế ị ộ
S u t m : Võ Thành Luân – tihonphysics@yahoo.comư ầ

Page 1
Trên IDE: T o t p tin JARạ ậ
IDE s t o m t t p tin JAR ch a:ẽ ạ ộ ậ ứ
* T t c các t p tin *.classấ ả ậ
* Các hình nh c a ng d ng. Hi n t i ch h tr t p tin *.pngả ủ ứ ụ ệ ạ ỉ ỗ ợ ậ
* Các t p tin d li u có th đ c yêu c u b i ng d ngậ ữ ệ ể ượ ầ ở ứ ụ
* M t t p tin kê khai (manifest.mf) cung c p mô t v ng d ng cho b qu n lý ng d ngộ ậ ấ ả ề ứ ụ ộ ả ứ ụ
(application manager) trên thi t b di đ ng.ế ị ộ
* T p tin JAR đ c bán ho c đ c phân ph i đ n ng i dùng đ u cu iậ ượ ặ ượ ố ế ườ ầ ố
Sau khi đã g r i và ki m tra mã l nh trên trình gi l p (simulator), mã l nh đã s n sàng đ cỡ ố ể ệ ả ậ ệ ẵ ượ
ki m tra trên đi n tho i di đ ng và sau đó đ c phân ph i cho ng i dùng.ể ệ ạ ộ ượ ố ườ
Ng i dùng: Download ng d ng v thi t b di đ ngườ ứ ụ ề ế ị ộ
Ng i dùng sau đó download t p tin JAR ch a ng d ng v thi t b di đ ng. Trong h u h tườ ậ ứ ứ ụ ề ế ị ộ ầ ế
các đi n tho i di đ ng, có ba cách đ download ng d ng:ệ ạ ộ ể ứ ụ
* K t n i cáp d li u t PC sang c ng d li u c a đi n tho i di đ ng:ế ố ữ ệ ừ ổ ữ ệ ủ ệ ạ ộ
Vi c này yêu c u ng i dùng ph i có t p tin JAR th t s và ph n m m truy n thông đệ ầ ườ ả ậ ậ ự ầ ề ề ể
download ng d ng sang thi t b thông qua cáp d li u.ứ ụ ế ị ữ ệ
* C ng h ng ngo i IR (Infra Red) Port:ổ ồ ạ
Vi c này yêu c u ng i dùng ph i có t p tin JAR th t s và ph n m m truy n thông đệ ầ ườ ả ậ ậ ự ầ ề ề ể
download ng d ng sang thi t b thông qua c ng h ng ngo i.ứ ụ ế ị ổ ồ ạ
* OTA (Over the Air):
S d ng ph ng th c này, ng i dùng ph i bi t đ a ch URL ch đ n t p tin JARử ụ ươ ứ ườ ả ế ị ỉ ỉ ế ậ
Trên thi t b di đ ng:ế ị ộ
B ti n ki m tra: Ki m tra mã bytecodeộ ề ể ể
B ti n ki m tra ki m tra t t c các l p đ u có m t thu c tính h p l đã đ c thêm vào b iộ ề ể ể ấ ả ớ ề ộ ộ ợ ệ ượ ở
b ti n ki m tra trên tr m phát tri n ng d ng. N u ti n trình ti n ki m tra th t b i thì ngộ ề ể ạ ể ứ ụ ế ế ề ể ấ ạ ứ
d ng s không đ c download v thi t b di đ ng.ụ ẽ ượ ề ế ị ộ
B qu n lý ng d ng: L u tr ch ng trìnhộ ả ứ ụ ư ữ ươ
B qu n lý ng d ng trên thi t b di đ ng s l u tr ch ng trình trên thi t b di đ ng. Bộ ả ứ ụ ế ị ộ ẽ ư ữ ươ ế ị ộ ộ
qu n lý ng d ng cũng đi u khi n tr ng thái c a ng d ng trong th i gian th c thi và có thả ứ ụ ề ể ạ ủ ứ ụ ờ ự ể
t m d ng ng d ng khi có cu c g i ho c tin nh n đ n.ạ ừ ứ ụ ộ ọ ặ ắ ế
Ng i dùng: Th c thi ng d ngườ ự ứ ụ
B qu n lý ng d ng s chuy n ng d ng cho KVM đ ch y trên thi t b di đ ng.ộ ả ứ ụ ẽ ể ứ ụ ể ạ ế ị ộ
KVM: Th c thi mã bytecode khi ch ng trình ch y.ự ươ ạ
KVM d ch mã bytecode sang ngôn ng máy c a thi t b di đ ng đ ch y.ị ữ ủ ế ị ộ ể ạ
2 T ng CLDC (Connected Limited Device Configuration)ầ
T ng J2ME k trên t ng KVM là CLDC hay C u hình thi t b k t n i gi i h n. M c đích c aầ ế ầ ấ ế ị ế ố ớ ạ ụ ủ
t ng này là cung c p m t t p t i thi u các th vi n cho phép m t ng d ng Java ch y trênầ ấ ộ ậ ố ể ư ệ ộ ứ ụ ạ
thi t b di đ ng. Nó cung c p c s cho t ng Hi n tr ng, t ng này s ch a nhi u API chuyênế ị ộ ấ ơ ở ầ ệ ạ ầ ẽ ứ ề
S u t m : Võ Thành Luân – tihonphysics@yahoo.comư ầ

Page 1
bi t h n.ệ ơ
Các CLDC API đ c đ nh nghĩa v i s h p tác v i 18 công ty là b ph n c a JCP (Javaượ ị ớ ự ợ ớ ộ ậ ủ
Community Process). Nhóm này giúp b o đ m r ng các API đ c đ nh nghĩa s h u d ng vàả ả ằ ượ ị ẽ ữ ụ
thi t th c cho c nhà phát tri n l n nhà s n xu t thi t b di đ ng. Các đ c t c a JCP đ cế ự ả ể ẫ ả ấ ế ị ộ ặ ả ủ ượ
gán các s JSR (Java Specification Request). Quy đ nh CLDC phiên b n 1.0 đ c gán s JSR -ố ị ả ượ ố
30.
2.a CLDC – Connected Limited Device Configuration
Ph m vi: Đ nh nghĩa các th vi n t i thi u và các API.ạ ị ư ệ ố ể
Đ nh nghĩa:ị
* T ng thích ngôn ng JVMươ ữ
* Các th vi n lõiư ệ
* I/O
* M ngạ
* B o m tả ậ
* Qu c t hóaố ế
Không đ nh nghĩa:ị
* Chu kỳ s ng ng d ngố ứ ụ
* Giao di n ng i dùngệ ườ
* Qu n lý s ki nả ự ệ
* Giao di n ng d ng và ng i dùngệ ứ ụ ườ
Các l p lõi Java c b n, input/output, m ng, và b o m t đ c đ nh nghĩa trong CLDC. Cácớ ơ ả ạ ả ậ ượ ị
API h u d ng h n nh giao di n ng i dùng và qu n lý s ki n đ c dành cho hi n tr ngữ ụ ơ ư ệ ườ ả ự ệ ượ ệ ạ
MIDP.
J2ME là m t phiên b n thu nh c a J2SE, s d ng ít b nh h n đ nó có th thích h p v iộ ả ỏ ủ ử ụ ộ ớ ơ ể ể ợ ớ
các thi t b di đ ng b gi i h n b nh . M c tiêu c a J2ME là m t t p con 100% t ng thíchế ị ộ ị ớ ạ ộ ớ ụ ủ ộ ậ ươ
c a J2SE.ủ
Hình 3 bi u di n m i liên h gi a J2SE và J2ME (CDC, và CLDC).ể ễ ố ệ ữ
2.b S khác nhau gi a J2ME và J2SE.ự ữ
S u t m : Võ Thành Luân – tihonphysics@yahoo.comư ầ

