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 ượ ư
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 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 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ư