Find best mobile with best price
www.thongtinmobile.com
Li gii thiu:
Công ngh Java cho công nghip di động (Java Technology Wireless Industry - JTWI)
ngày càng phát trin và thu hút s quan tâm ca nhiu người. Nhm đáp ng nhu
cu này, TinCNTT m chuyên mc J2ME Tutorial c gng đề cp đầy đủ nhiu khía
cnh ca công ngh Java cho di động. Để bt đầu lot bài, chúng ta s cùng kho sát
các lp và khái nim quan trng ca J2ME.
Bài 1: Khái quát các lp J2ME
Mc tiêu ca J2ME là cho phép ngưi lp trình viết các ng dng độc lp vi thiết b
di động, không cn quan tâm đến phn cng tht s. Để đạt được mc tiêu này,
J2ME được xây dng bng các tng (layer) khác nhau để giu đi vic thc hin phn
cng khi nhà phát trin. Sau đây là các tng ca J2ME được xây dng trên CLDC:
Hình 1. Các tng ca CLDC J2ME
Mi tng trên tng hardware là tng tru tượng hơn cung cp cho lp trình viên
nhiu giao din lp trình ng dng (API-Application Program Interface) thân thin
hơn.
T dưới lên trên:
Tng phn cng thiết b (Device Hardware Layer)
Đây chính là thiết b di động tht s vi cu hình phn cng ca nó v b nh và tc
độ x lý. Dĩ nhiên tht ra nó không phi là mt phn ca J2ME nhưng nó là nơi xut
phát. Các thiết b di động khác nhau có th có các b vi x lý khác nhau vi các tp
mã lnh khác nhau. Mc tiêu ca J2ME là cung cp mt chun cho tt c các loi
thiết b di động khác nhau.
Tng máy o Java (Java Virtual Machine Layer)
Khi mã ngun Java được biên dch nó được chuyn đổi thành mã bytecode. Mã
bytecode này sau đó được chuyn thành mã ngôn ng máy ca thiết b di động.
Tng máy o Java bao gm KVM (K Virtual Machine) là b biên dch mã bytecode có
nhim v chuyn mã bytecode ca chương trình Java thành ngôn ng máy để chy
trên thiết b di động. Tng này cung cp mt s chun hóa cho các thiết b di động
để ng dng J2ME sau khi đã biên dch có th hot động trên bt k thiết b di động
nào có J2ME KVM.
Tng cu hình (Configuration Layer)
Tng cu hình ca CLDC định nghĩa giao din ngôn ng Java (Java language
interface) cơ bn để cho phép chương trình Java chy trên thiết b di động. Đây là
mt tp các API định nghĩa lõi ca ngôn ng J2ME. Lp trình viên có th s dng các
lp và phương thc ca các API này tuy nhiên tp các API hu dng hơn được cha
trong tng hin trng (profile layer).
Tng hin trng (Profile Layer)
Tng hin trng hay MIDP (Hin trng thiết b thông tin di động-Mobile Information
Device Profile) cung cp tp các API hu dng hơn cho lp trình viên. Mc đích ca
hin trng là xây dng trên lp cu hình và cung cp nhiu thư vin ng dng hơn.
MIDP định nghĩa các API riêng bit cho thiết b di động. Cũng có th có các hin
trng và các API khác ngoài MIDP được dùng cho ng dng. Ví d, có th có hin
trng PDA định nghĩa các lp và phương thc hu dng cho vic to các ng dng
PDA (lch, s hn, s địa ch,…). Cũng có th có mt hin trng định nghĩa các API
cho vic to các ng dng Bluetooth. Thc tế, các hin trng k trên và tp các API
đang được xây dng. Chun hin trng PDA là đặc t JSR - 75 và chun bluetooth
API là đặc t JSR - 82 vi JSR là viết tt ca Java Specification Request.
1 Máy o Java (hay KVM)
Vai trò ca máy o Java hay KVM là dch mã bytecode được sinh ra t chương trình
Java đã biên dch sang ngôn ng máy. Chính KVM s chun hóa output ca 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à tp lnh
khác nhau. Không có KVM, các chương trình Java phi được biên dch thành tp lnh
cho mi thiết b di động. Như vy lp trình viên phi xây dng nhiu đích cho mi
loi thiết b di động. Hình 2 đây biu din tiến trình xây dng ng dng MIDlet hoàn
chnh và vai trò ca KVM.
Hình 2. Tiến trình xây dng MIDlet
Quá trình phát trin ng dng MIDlet vi IDE (Môi trường phát trin tích hp-
Intergrated Development Environment):
Lp trình viên: To các tp tin ngun Java
Bước đầu tiên là lp trình viên phi to mã ngun Java, có th có nhiu tp tin
(*.java).
Trên IDE: B biên dch Java (Java Compiler): Biên dch mã ngun thành mã
bytecode
B biên dch Java s biên dch mã ngun thành mã bytecode. Mã bytecode này s
được KVM dch thành mã máy. Mã bytecode đã biên dch s được lưu trong các tp
tin *.class và s có mt tp tin *.class sinh ra cho mi lp Java.
Trên IDE: B tin kim tra (Preverifier): Kim tra tính hp l ca mã bytecode
Mt trong nhng yêu cu an toàn ca J2ME là bo đảm mã bytecode chuyn cho
KVM là hp l và không truy xut các lp hay b nh ngoài gii hn ca chúng. Do
đó tt c các lp đều phi được tin kim tra trước khi chúng có th được download
v thiết b di động. Vic tin kim tra đưc xem là mt phn ca môi trường phát
trin làm cho KVM có th được thu nh hơn. B tin kim tra s gán nhãn lp bng
mt thuc tính (attribute) đặc bit ch rng lp đó đã được tin kim tra. Thuc tính
này tăng thêm khong 5% kích thước ca lp và s được kim tra bi b kim tra
trên thiết b di động.
Trên IDE: To tp tin JAR
IDE s to mt tp tin JAR cha:
* Tt c các tp tin *.class
* Các hình nh ca ng dng. Hin ti ch h tr tp tin *.png
* Các tp tin d liu có th được yêu cu bi ng dng
* Mt tp tin kê khai (manifest.mf) cung cp mô t v ng dng cho b qun lý ng
dng (application manager) trên thiết b di động.
* Tp tin JAR được bán hoc được phân phi đến người dùng đầu cui
Sau khi đã g ri và kim tra mã lnh trên trình gi lp (simulator), mã lnh đã sn
sàng được kim tra trên đin thoi di động và sau đó được phân phi cho người
dùng.
Người dùng: Download ng dng v thiết b di động
Người dùng sau đó download tp tin JAR cha ng dng v thiết b di động. Trong
hu hết các đin thoi di động, có ba cách để download ng dng:
* Kết ni cáp d liu t PC sang cng d liu ca đin thoi di động:
Vic này yêu cu người dùng phi có tp tin JAR tht s và phn mm truyn thông
để download ng dng sang thiết b thông qua cáp d liu.
* Cng hng ngoi IR (Infra Red) Port:
Vic này yêu cu người dùng phi có tp tin JAR tht s và phn mm truyn thông
để download ng dng sang thiết b thông qua cng hng ngoi.
* OTA (Over the Air):
S dng phương thc này, người dùng phi biết địa ch URL ch đến tp tin JAR
Trên thiết b di động:
B tin kim tra: Kim tra mã bytecode
B tin kim tra kim tra tt c các lp đều có mt thuc tính hp l đã được thêm
vào bi b tin kim tra trên trm phát trin ng dng. Nếu tiến trình tin kim tra
tht bi thì ng dng s không được download v thiết b di động.
B qun lý ng dng: Lưu tr chương trình
B qun lý ng dng trên thiết b di động s lưu tr chương trình trên thiết b di
động. B qun lý ng dng cũng điu khin trng thái ca ng dng trong thi gian
thc thi và có th tm dng ng dng khi có cuc gi hoc tin nhn đến.
Người dùng: Thc thi ng dng
B qun lý ng dng s chuyn ng dng cho KVM để chy trên thiết b di động.
KVM: Thc thi mã bytecode khi chương trình chy.
KVM dch mã bytecode sang ngôn ng máy ca thiết b di động để chy.
2 Tng CLDC (Connected Limited Device Configuration)
Tng J2ME kế trên tng KVM là CLDC hay Cu hình thiết b kết ni gii hn. Mc đích
ca tng này là cung cp mt tp ti thiu các thư vin cho phép mt ng dng Java
chy trên thiết b di động. Nó cung cp cơ s cho tng Hin trng, tng này s cha
nhiu API chuyên bit hơn.
Các CLDC API được định nghĩa vi s hp tác vi 18 công ty là b phn ca JCP
(Java Community Process). Nhóm này giúp bo đảm rng các API được định nghĩa s
hu dng và thiết thc cho c nhà phát trin ln nhà sn xut thiết b di động. Các
đặc t ca JCP được gán các s JSR (Java Specification Request). Quy định CLDC
phiên bn 1.0 được gán s JSR - 30.
2.a CLDC – Connected Limited Device Configuration
Phm vi: Định nghĩa các thư vin ti thiu và các API.
Định nghĩa:
* Tương thích ngôn ng JVM
* Các thư vin lõi
* I/O
* Mng
* Bo mt
* Quc tế hóa
Không định nghĩa:
* Chu k sng ng dng
* Giao din người dùng
* Qun lý s kin
* Giao din ng dng và người dùng
Các lp lõi Java cơ bn, input/output, mng, và bo mt được định nghĩa trong
CLDC. Các API hu dng hơn như giao din người dùng và qun lý s kin được dành
cho hin trng MIDP.
J2ME là mt phiên bn thu nh ca J2SE, s dng ít b nh hơn để nó có th thích
hp vi các thiết b di động b gii hn b nh. Mc tiêu ca J2ME là mt tp con
100% tương thích ca J2SE.
Hình 3 biu din mi liên h gia J2SE và J2ME (CDC, và CLDC).
2.b S khác nhau gia J2ME và J2SE.
Các đim khác nhau là do mt trong hai lý do. Do lp Java đã b b đi để gim kích