1. Trang chủ
  2. » Văn Hóa - Nghệ Thuật

Từng bước lập trình cho điện thoại di động J2ME - Phần 1

7 11 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 548,17 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Axis cũng thu c Apache.[r]

Trang 1

T ng b ừ ướ ậ c l p trình cho đi n tho i di đ ng J2ME - Ph n 1 ệ ạ ộ ầ

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:ự

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) ầ ả

Trang 2

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 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.ị ộ

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.ộ ậ ấ ả ề ứ ụ ộ ả ứ ụ ế ị ộ

Trang 3

* 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 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.ủ

Trang 4

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.ự ữ

Các đi m khác nhau là do m t trong hai lý do Do l p Java đã b b đi đ gi m kích thể ộ ớ ị ỏ ể ả ước c a J2ME ho c do l p b b b i vì nó nh hủ ặ ớ ị ỏ ở ả ưởng đ n sế ự

an toàn, b o m t c a thi t b di đ ng hay c a các ng d ng khác trên thi t b di đ ng (có th d n đ n phát tri n virus).ả ậ ủ ế ị ộ ủ ứ ụ ế ị ộ ể ẫ ế ể

Đi m khác bi t chính là không có phép toán s th c Không có JNI (JavaNative Interface Support) do đó b n không th truy xu t các chể ệ ố ự ạ ể ấ ương trình khác được vi t b ng ngôn ng c a thi t b (nh C hay C++) Tuy n đo n (thread) đế ằ ữ ủ ế ị ư ế ạ ược cho phép nh ng không có các nhóm tuy n đo n (threadư ế ạ group) và các daemon thread

CLDC đ nh nghĩa m t mô hình an toàn, b o m t đị ộ ả ậ ược thi t k đ b o v thi t b di đ ng, KVM, và các ng d ng khác kh i các mã phá ho i Hai bế ế ể ả ệ ế ị ộ ứ ụ ỏ ạ ộ

ph n đậ ược đ nh nghĩa b i CLDC này là b ti n ki m tra và mô hình sandbox.ị ở ộ ề ể

Hình 4 bi u di n cách mà b ti n ki m tra và b ki m tra làm vi c v i nhau đ ki m tra mã chể ễ ộ ề ể ộ ể ệ ớ ể ể ương trình Java trước khi chuy n nó cho KVM.ể

Nh đã đ c p trư ề ậ ước đây, các t p tin l p đậ ớ ược gán nhãn b ng m t thu c tính trên máy tr m c a nhà phát tri n Thu c tính này sau đó đằ ộ ộ ạ ủ ể ộ ược ki m traể

b i b ti n ki m tra trở ộ ề ể ước khi mã chương trình được giao cho KVM hay b biên d ch mã bytecode.ộ ị

M t b ph n khác c a b o m t trong CLDC là mô hình sandbox.ộ ộ ậ ủ ả ậ

Trang 5

Hình 5 bi u di n khái ni m mô hình sandboxể ễ ệ

Hình trên cho th y ng d ng J2ME đ t trong m t sandbox có nghĩa là nó b gi i h n truy xu t đ n tài nguyên c a thi t b và không đấ ứ ụ ặ ộ ị ớ ạ ấ ế ủ ế ị ược truy xu tấ

đ n Máy o Java hay b n p chế ả ộ ạ ương trình ng d ng đỨ ụ ược truy xu t đ n các API c a CLDC và MIDP ng d ng đấ ế ủ Ứ ụ ược truy xu t tài nguyên c a thi tấ ủ ế

b di đ ng (các c ng, âm thanh, b rung, các báo hi u,…) ch khi nhà s n xu t đi n tho i di đ ng cung c p các API tị ộ ổ ộ ệ ỉ ả ấ ệ ạ ộ ấ ương ng Tuy nhiên, các APIứ này không ph i là m t ph n c a J2ME.ả ộ ầ ủ

Th h k ti p c a CLDC là đ c t JSR - 139 và đế ệ ế ế ủ ặ ả ược g i là CLDC th h k ti p (Next Generation) Nó s nh m đ n các v n đ nh nâng cao vi cọ ế ệ ế ế ẽ ắ ế ấ ề ư ệ

qu n lý l i và có th phép toán s th c.ả ỗ ể ố ự

3 MIDP (Mobile Information Device Profile)

T ng J2ME cao nh t là t ng hi n tr ng và m c đích c a nó là đ nh nghĩa các API cho các thi t b di đ ng M t thi t b di đ ng có th h tr nhi uầ ấ ầ ệ ạ ụ ủ ị ế ị ộ ộ ế ị ộ ể ỗ ợ ề

hi n tr ng M t hi n tr ng có th áp đ t thêm các gi i h n trên các lo i thi t b di đ ng (nh nhi u b nh h n hay đ phân gi i màn hình cao h n).ệ ạ ộ ệ ạ ể ặ ớ ạ ạ ế ị ộ ư ề ộ ớ ơ ộ ả ơ

Hi n tr ng là t p các API h u d ng h n cho các ng d ng c th L p trình viên có th vi t m t ng d ng cho m t hi n tr ng c th và không c nệ ạ ậ ữ ụ ơ ứ ụ ụ ể ậ ể ế ộ ứ ụ ộ ệ ạ ụ ể ầ quan tâm đ n nó ch y trên thi t b nào.ế ạ ế ị

Hi n t i hi n tr ng đệ ạ ệ ạ ược công b là MIDP (Mobile Information Profile) v i đ c t JSR - 37 Có 22 công ty là thành viên c a nhóm chuyên gia t o raố ớ ặ ả ủ ạ chu n MIDP.ẩ

MIDP cung c p các API cho phép thay đ i tr ng thái chu kỳ s ng ng d ng, đ h a (m c cao và m c th p), tuy n đo n, timer, l u tr b n v ngấ ổ ạ ố ứ ụ ồ ọ ứ ứ ấ ế ạ ư ữ ề ữ (persistent storage), và m ng.ạ

Nó không đ nh nghĩa cách mà ng d ng đị ứ ụ ược n p trong thi t b di đ ng Đó là trách nhi m c a nhà s n xu t Nó cũng không đ nh nghĩa b t kỳ lo iạ ế ị ộ ệ ủ ả ấ ị ấ ạ

mô hình b o m t end-to-end nào, v n c n thi t cho ng d ng kinh doanh nh n s th tín d ng c a ngả ậ ố ầ ế ứ ụ ậ ố ẻ ụ ủ ười dùng Nó cũng không b t bu c nhà s nắ ộ ả

xu t cách mà l p MIDP đấ ớ ược th c hi n.ự ệ

T ng b ừ ướ ậ c l p trình cho đi n tho i di đ ng J2ME - Ph n 2 ệ ạ ộ ầ

1/ MIDlet Các ng d ng J2ME đ ứ ụ ượ c g i là MIDlet (Mobile Information Device applet) ọ

Trang 6

XML th hi n đ nh d ng thông đi p t mô t XML không yêu c u b t bu c ph i tri n khai m t giao th c RPC gi ng nh SOAP d a trên XML Nhà phát tri n cóể ệ ị ạ ệ ự ả ầ ắ ộ ả ể ộ ứ ố ư ự ể

th ch xây d ng đ nh d ng thông đi p phù h p d a theo c s c a XML đ th c hi n vi c trao đ i d li u gi a client và server u đi m có tính quy t đ nh c aể ỉ ự ị ạ ệ ợ ự ơ ở ủ ể ự ệ ệ ổ ữ ệ ữ Ư ể ế ị ủ XML là nó đã được chu n hóa và do đó có tính kh chuy n cao H n n a, nó d a vào văn b n, d li u có c u trúc có th đẩ ả ể ơ ữ ự ả ữ ệ ấ ể ược mô t theo phả ương cách có tính tự

gi i thích (self-explanatory) Trong lĩnh v c doanh nghi p, XML đã chi m đả ự ệ ế ượ ưc u th so v i các giao th c thông đi p khác ch y u là do s h tr t t c a n nế ớ ứ ệ ủ ế ự ỗ ợ ố ủ ề

t ng J2EE.ả

Ngoài vi c truy n lệ ề ượng d li u l n h n khi dùng XML cũng nh tăng thêm ph n d th a c a XML, ta còn g p v n đ khác v i các thi t b di đ ng Trong khi n nữ ệ ớ ơ ư ầ ư ừ ủ ặ ấ ề ớ ế ị ộ ề

t ng J2EE h tr XML, thì môi trả ỗ ợ ường MIDP 1.0 không cung c p h tr tích h p nào cho vi c phân tích XML Các gi i pháp d a trên XML c n ph i bao g m bấ ỗ ợ ợ ệ ả ự ầ ả ồ ộ phân tích XML trên MIDP client M c dù có nhi u b phân tích mã ngu n m , ch ng h n nh NanoXML, TinyXML, hay kXML, có th đặ ề ộ ồ ở ẳ ạ ư ể ược dùng cho m c đích nàyụ

và đã được thi t k đ s d ng t i thi u tài nguyên, tuy nhiên dù sao thì v n yêu c u không gian l u tr trên thi t b , v n thế ế ể ử ụ ố ể ẫ ầ ư ữ ế ị ố ường r t ít đ chia s ấ ể ẻ

đây ta s d ng KXML c a Enhydra, b i vì nó ch chi m 21 KB b nh

Đ phân tích tài li u XML, c n ph i có thêm b nh và kh năng tính toán tể ệ ầ ả ộ ớ ả ương ng Trong h u h t trứ ầ ế ường h p, thông đi p XML l n h n nhi u so v i thông đi pợ ệ ớ ơ ề ớ ệ

nh phân – ch y u là do tính dài dòng c a đ nh d ng XML.ị ủ ế ủ ị ạ

Nén nh phân XML ị

Đ nh d ng WBXML giúp gi m kích thị ạ ả ước tài li u XML m t cách đáng k , trong đó đ nh d ng văn b n c a tài li u XML đệ ộ ể ị ạ ả ủ ệ ược chuy n sang m t d ng nh phân Đ nhể ộ ạ ị ị

d ng này cũng đạ ược dùng đ chuy n các trang WML, kích thể ể ước được gi m xu ng r t nhi u b ng cách thay các th , thu c tính, và các giá tr thông d ng b ngả ố ấ ề ằ ẻ ộ ị ụ ằ

m t t p các th bài (token) có th c u hình độ ậ ẻ ể ấ ược Cũng hoàn toàn gi ng nh vi c mã hóa và gi i mã các thông đi p trong thi t b WAP đố ư ệ ả ệ ế ị ược th c hi n thông quaự ệ

m t WAP gateway, vi c liên l c gi a thi t b MIDP và server J2EE cũng có th tộ ệ ạ ữ ế ị ể ương t B phân tích đ m nh n vi c mã hóa và gi i mã thông đi p m t cách phùự ộ ả ậ ệ ả ệ ộ

h p, b phân tích ph i h tr WBXML Ví d , b phân tích KXML c a Endydra h tr giao th c này và cho phép truy n d li u m t cách hi u qu gi a client vàợ ộ ả ỗ ợ ụ ộ ủ ỗ ợ ứ ề ữ ệ ộ ệ ả ữ server Server đương nhiên cũng c n ph i hi u đ nh d ng WBXML M t cách thay th là, vi c liên l c ph i đầ ả ể ị ạ ộ ế ệ ạ ả ược x lý thông qua m t proxy hay m t WBXMLử ộ ộ gateway

XML-RPC

XML-RPC là m t giao th c truy n thông đi p c c nh cho phép th c thi các th t c t xa trên m ng thông qua HTTP Client g i m t thông đi p XML thông quaộ ứ ề ệ ự ẹ ự ủ ụ ừ ạ ở ộ ệ HTTP POST đ n server đ phân tích M t th t c n i c a server tr v k t qu là response, cũng d ng m t thông đi p XML, tr v cho client.ế ể ộ ủ ụ ộ ủ ả ề ế ả ở ạ ộ ệ ả ề

Do đó XML-RPC có được các u đi m c a XML Nó xây d ng r t ít tính năng, cho phép xác đ nh và truy n các ki u d li u gi ng nh các tham s đ tri u g i cácư ể ủ ự ấ ị ề ể ữ ệ ố ư ố ể ệ ọ

th t c t xa theo cách ti p c n trung l p n n (platform-neutral) Ph m vi c a đ nh d ng ch ý càng nh càng t t b ng cách gi i h n sáu lo i ki u d li u g củ ụ ừ ế ậ ậ ề ạ ủ ị ạ ủ ỏ ố ằ ớ ạ ạ ể ữ ệ ố (primitive): int, boolean, string, double, datetime và base64 và hai ki u liên h p (complex): struct và array Đi u này làm cho giao th c đ c bi t thích h p v i cácể ợ ề ứ ặ ệ ợ ớ

ng d ng J2ME và k t n i m ng đi n tho i di đ ng băng thông h p

Nhược đi m đây, cũng gi ng nh v i XML, là n n t ng J2ME không cung c p b t kỳ h tr tích h p nào cho XML-RPC, và nó c n ph i d a vào các gói b sungể ở ố ư ớ ề ả ấ ấ ỗ ợ ợ ầ ả ự ổ

nh KXM-RPC c a Enhydra đ tri n khai ng d ng trên thi t b Gói KXML-RPC đư ủ ể ể ứ ụ ế ị ược xây d ng trên n n c a KXML và ch y khá t t v i ch 24KB tài nguyên thi tự ề ủ ạ ố ớ ỉ ế

b bao g m KXML Các mã ngu n liên quan c a XML-RPC cũng cung c p cho vi c cài đ t đi m liên l c tị ồ ồ ủ ấ ệ ặ ể ạ ương ng t i server M t ví d c a nó là Apache XML-ứ ạ ộ ụ ủ RPC d a trên n n t ng Java c a T ch c ph n m m Apache (Apache Software Foundation), có th đự ề ả ủ ổ ứ ầ ề ể ược áp d ng v i Tomcat Servlet engine.ụ ớ

SOAP

Simple Object Access Protocol (SOAP) Đ u tiên Microsoft phát tri n giao th c này cùng v i Useland đ đáp ng nhu c u c a các nhà phát tri n mu n phát tri nầ ể ứ ớ ể ứ ầ ủ ể ố ể các ng d ng phân tán v i các công ngh c a Microsoft SOAP và các phiên b n trứ ụ ớ ệ ủ ả ước c a XML-RPC có cùng ngu n g c Tuy nhiên, không gi ng nh SOAP,ủ ồ ố ố ư XML-RPC đã được c i ti n và không gia tăng tính ph c t p Vi c đ nh nghĩa ph c t p giúp cho các giao th c m r t linh đ ng, đi u này gi i thích vì sao nó làả ế ứ ạ ệ ị ứ ạ ứ ở ấ ộ ề ả chu n trong th c t cho vi c g i hàm t xa b ng XML trên HTTP.ẩ ự ế ệ ọ ừ ằ

Đáng ti c là, v i các nhế ớ ược đi m v n có c a lĩnh v c di đ ng, nó d n t i nhi u d li u th a mà không luôn luôn c n đ n, nh ng chi m nhi u tài nguyên Đ c tể ố ủ ự ộ ẫ ớ ề ữ ệ ừ ầ ế ư ế ề ặ ả giao th c hi n t i là 1.2 và ngoài t p tính năng c a XML-RPC, nó cung c p các tính năng thêm nh tính quan tâm không gian tên (namespace awareness), c chứ ệ ạ ậ ủ ấ ư ơ ế

đ nh ki u d li u, và vi c truy n d li u header b sung SOAP cũng có cùng m t h n ch , J2ME không cung c p b t kỳ h tr nào cho nó Các client c n h trị ể ữ ệ ệ ề ữ ệ ổ ặ ạ ế ấ ấ ỗ ợ ầ ỗ ợ SOAP c n ph i tích h p trong các ch c năng c a ng d ng Trên đ u cu i client, m t gi i pháp là dùng Enhydra ME project-kSOAP Tuy nhiên, gói kSOAP yêuầ ả ợ ứ ủ ứ ụ ầ ố ộ ả

c u ít nh t 41 KB b nh , là m t gánh n ng cho ng d ng trên thi t b ầ ấ ộ ớ ộ ặ ứ ụ ế ị

Trong trường h p này, ta ph i b o đ m b nh và băng thông yêu c u có th th a mãn Đợ ả ả ả ộ ớ ầ ể ỏ ương nhiên server cũng c n ph i h tr SOAP Phía server thì có nhi uầ ả ỗ ợ ề

gi i pháp, có th dùng d án mã ngu n m Apache SOAP (cũ) ho c d án Axis m i h n, Axis nên dùng cho các d án m i Axis cũng thu c Apache.ả ể ự ồ ở ặ ự ớ ơ ự ớ ộ

T i u hóa b ng Proxy ố ư ằ

Trang 7

Ta đã kh o sát nhi u tùy ch n khác nhau cho vi c trao đ i d li u client/server thông qua HTTP Tùy thu c vào m c đích c a ng d ng, ta có th quy t đ nh sả ề ọ ệ ổ ữ ệ ộ ụ ủ ứ ụ ể ế ị ử

d ng gi a giao th c nén theo ý mình v i các giao th c linh đ ng nh ng dài dòng đã tr thành chu n đụ ữ ứ ớ ứ ộ ư ở ẩ ược s d ng r ng rãi N u ta mu n k t h p các u đi m c aử ụ ộ ế ố ế ợ ư ể ủ các phương pháp đ i l p này, thì có m t gi i pháp khá thú v – s d ng m t proxy server ho c m t gateway gi a MIDP client và server J2EE Nh ta đã đ c p ố ậ ộ ả ị ử ụ ộ ặ ộ ữ ư ề ậ ở trên, thông đi p XML có th đệ ể ược nén thông qua WBXML gateway

Tương t nh v y, ta cũng có th th c hi n m t proxy cho giao th c đ c quy n, chuy n nó thành giao th c chu n nh XML-RPC hay SOAP Nh v y, d li uự ư ậ ể ự ệ ộ ứ ộ ề ể ứ ẩ ư ờ ậ ữ ệ

được chuy n t MIDP client đ n proxy b ng m t giao th c nh ch ng h n nh m t giao th c nh phân hay WBXML, đ t i thi u hóa kích thể ừ ế ằ ộ ứ ẹ ẳ ạ ư ộ ứ ị ể ố ể ước thông đi p và t nệ ậ

d ng t t h n băng thông h n ch Proxy, đ n lụ ố ơ ạ ế ế ượt nó, đóng vai trò nh m t client đ n server J2EE và d ch request c a giao th c nh đó thành giao th c d a trênư ộ ế ị ủ ứ ẹ ứ ự XML c a server và ngủ ượ ạc l i

Dùng proxy, ta có kh năng k t n i ng d ng đ n m t server đang t n t i v i s giúp đ c a giao th c đả ế ố ứ ụ ế ộ ồ ạ ớ ự ỡ ủ ứ ượ ố ưc t i u hóa, ví d server đó có th đang h tr SOAPụ ể ỗ ợ hay XML-RPC Đi u này có u đi m là kh năng liên k t và hi u su t đ u đề ư ể ả ế ệ ấ ề ược nâng cao M t khác, c n ph i xem xét m t v n đ là s gia tăng đ ph c t p c aặ ầ ả ộ ấ ề ự ộ ứ ạ ủ toàn b h th ng s gây khó khăn cho quá trình phát tri n ng d ng.ộ ệ ố ẽ ể ứ ụ

Hình 3 Mô hình m u dùng Proxyẫ

Ngày đăng: 10/03/2021, 14:10

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w