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 10 0

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

THÔNG TIN TÀI LIỆU

Nội dung

Axis cũng thu c Apache.[r]

(1)

T ng b

ướ ậ

c l p trình cho n tho i di đ ng J2ME - Ph n

L i gi i thi u:ờ

Công ngh Java cho công nghi p di đ ng (Java Technology Wireless Industry - JTWI) ngày phátệ tri n 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, s kh o sát l p khái ni m quan tr ng c a J2ME.ạ

Bài 1: Khái quát l p J2MEớ

M c tiêu c a J2ME cho phép ngụ ủ ườ ậi l p trình vi t 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ế ứ ụ ộ ậ ế ị ộ ầ ế ầ ứ ậ ự ể m c tiêu này, J2ME đụ ược xây d ng b ng t ng (layer) khác đ gi u vi c th c hi n ph n c ng kh i nhà phát tri n Sau cácự ằ ầ ể ấ ệ ự ệ ầ ứ ỏ ể t ng c a J2ME đầ ủ ược xây d ng CLDC:ự

Hình Các t ng c a CLDC J2MEầ ủ

M i t ng t ng hardware 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 thi t b di đ ng th t s v i c u hình ph n c ng c a v b nh t c đ x lý Dĩ nhiên th t khơng ph i m t ph n c a J2MEế ị ộ ậ ự ấ ầ ứ ủ ề ộ ố ộ ậ ả ộ ầ ủ nh ng n i xu t phát Các thi t b di đ ng khác có th có b vi x lý khác v i t p mã l nh khác M c tiêu c a J2ME làư ấ ế ị ộ ể ộ ậ ệ ụ ủ cung c p m t chu n cho t t c lo i thi t b di đ ng khác nhau.ấ ộ ẩ ấ ả ế ị ộ

(2)

Khi mã ngu n Java đồ ược biên d ch đị ược chuy n đ i thành mã bytecode Mã bytecode 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) 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 thi t b di đ ng T ng cung c p m t s chu n hóa cho thi t b di đ ng đ ng d ng J2ME sau đãữ ể ế ị ộ ầ ấ ộ ự ẩ ế ị ộ ể ứ ụ biên d ch có th ho t đ ng b t kỳ thi t b di đ ng 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 thi t b diạ ế ị đ ng Đây m t t p API đ nh nghĩa lõi c a ngơn ng J2ME L p trình viên có th s d ng l p phộ ộ ậ ị ủ ữ ậ ể ụ ương th c c a API nhiênứ ủ t p API h u d ng h n đậ ữ ụ ược ch a 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 API h u d ng h n cho l p trìnhầ ệ ệ ế ị ộ ấ ậ ữ ụ ậ viên M c đích c a hi n tr ng xây d ng l p c u hình cung c p nhi u th vi n ng d ng h n MIDP đ nh nghĩa API riêng bi t cho thi tụ ủ ệ ự ấ ấ ề ệ ứ ụ ị ệ ế b di đ ng Cũng có th có hi n tr ng API khác MIDP đị ộ ể ệ ược dùng cho ng d ng Ví d , có th có hi n tr ng PDA đ nh nghĩa l pứ ụ ụ ể ệ ị phương th c h u d ng cho vi c t o 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 API cho vi ữ ụ ệ ứ ụ ị ổ ẹ ổ ị ỉ ể ộ ệ ị ệ t o ng d ng Bluetooth Th c t , hi n tr ng k t p API đạ ứ ụ ự ế ệ ể ậ ược xây d ng Chu n hi n tr ng PDA đ c t JSR - 75 chu nự ẩ ệ ặ ả ẩ bluetooth API đ c t JSR - 82 v i JSR 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 d ch mã bytecode đủ ả ị ược sinh 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 chủ ương trình Java cho thi t b di đ ng khác có th có b vi x lý t p l nh khác Khơng có KVM, 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ị ậ ệ ỗ ế ị ộ ậ ậ ả ự ề ỗ ế ị ộ bi u di n ti n trình xây d ng ng d ng MIDlet hoàn ch nh vai trò c a KVM.ể ễ ế ự ứ ụ ỉ ủ

Hình 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 t p tin ngu n Javaậ ậ

Bước đ u tiên 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 s độ ị ẽ ị ẽ ược KVM d ch thành mã máy Mã bytecode biên d ch s đị ị ẽ ược l u t p tin *.class s có m t t p tin *.class sinh 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 nh ng yêu c u an toàn c a J2ME b o đ m mã bytecode chuy n cho KVM h p l không truy xu t l p hay b nh gi iộ ữ ầ ủ ả ả ể ợ ệ ấ ộ ớ h n c a chúng Do t t c l p đ u ph i đạ ủ ấ ả ề ả ược ti n ki m tra trề ể ước chúng có th để ược download v thi t b di đ ng Vi c ti n ki m tra đề ế ị ộ ệ ề ể ược xem 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 tăng thêm kho ng 5% kích thề ể ộ ả ước c a l p s đủ ẽ ược ki m tra b i b ki m tra 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 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ầ ứ ụ

(3)

* T p tin JAR đậ ược bán ho c đặ ược phân ph i đ n ngố ế ười dùng đ u cu iầ ố

Sau g r i ki m tra mã l nh trình gi l p (simulator), mã l nh s n sàng đỡ ố ể ệ ả ậ ệ ẵ ược ki m tra n tho i di đ ng 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 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 n tho i di đ ng:ế ố ữ ệ ổ ữ ệ ủ ệ ộ

Vi c 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 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 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 m phát tri n ng d ng N u ti nở ộ ề ể ể ứ ụ ế ế trình ti n ki m tra th t b i 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 thi t b di đ ng s l u tr chộ ả ứ ụ ế ị ộ ẽ ữ ương trình thi t b di đ ng B qu n lý ng d ng u n tr ng thái c a ng d ngế ị ộ ộ ả ứ ụ ề ể ủ ứ ụ th i gian th c thi có th t m d ng ng d ng 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 thi t b di đ ng.ộ ả ứ ụ ẽ ể ứ ụ ể ế ị ộ KVM: Th c thi mã bytecode 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 t ng KVM CLDC hay C u hình thi t b k t n i gi i h n M c đích c a t ng cung c p m t t p t i thi u th vi n choầ ế ầ ấ ế ị ế ố ụ ủ ầ ấ ộ ậ ố ể ệ phép m t ng d ng Java ch y thi t b di đ ng Nó cung c p c s cho t ng Hi n tr ng, t ng s ch a nhi u API chuyên bi t h n.ộ ứ ụ ế ị ộ ấ ầ ệ ầ ẽ ứ ề ệ Các CLDC API đ nh nghĩa v i s h p tác v i 18 công ty b ph n c a JCP (Java Community Process) Nhóm giúp b o đ m r ng APIị ự ợ ộ ậ ủ ả ả ằ đ nh nghĩa s h u d ng 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 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 th vi n t i thi u 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 ngệ ứ ụ ười dùng

Các l p lõi Java c b n, input/output, m ng, b o m t đớ ả ả ậ ược đ nh nghĩa CLDC Các API h u d ng h n nh giao di n ngị ữ ụ ệ ười dùng qu n lýả s ki n đự ệ ược dành cho hi n tr ng MIDP.ệ

(4)

Hình bi u di n m i liên h gi a J2SE J2ME (CDC, CLDC).ể ễ ố ệ ữ 2.b S khác gi a J2ME J2SE.ự ữ

Các m khác m t hai lý Do l p Java b b đ gi m kích thể ộ ị ỏ ể ả ước c a J2ME ho c l p b b b i nh hủ ặ ị ỏ ả ưởng đ n sế ự an toàn, b o m t c a thi t b di đ ng hay c a ng d ng khác thi t b di đ ng (có th d n đ n phát tri n virus).ả ậ ủ ế ị ộ ủ ứ ụ ế ị ộ ể ẫ ế ể

Đi m khác bi t khơng có phép tốn s th c Khơng có JNI (JavaNative Interface Support) b n khơng th truy xu t chể ệ ố ự ể ấ ương trình khá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 nhóm n đo n (threadư ế group) daemon thread

CLDC đ nh nghĩa m t mơ hình an tồn, b o m t đị ộ ả ậ ược thi t k đ b o v thi t b di đ ng, KVM, ng d ng khác kh i mã phá ho i Hai bế ế ể ả ệ ế ị ộ ứ ụ ỏ ộ ph n đậ ược đ nh nghĩa b i CLDC b ti n ki m tra mơ hình sandbox.ị ộ ề ể

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

Nh đ c p trư ề ậ ước đây, t p tin l p đậ ược gán nhãn b ng m t thu c tính máy tr m c a nhà phát tri n Thu c tính sau đằ ộ ộ ủ ể ộ ược ki m traể b i b ti n ki m tra trở ộ ề ể ước mã chương trình giao cho KVM hay b biên d ch mã bytecode.ộ ị

(5)

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

Hình cho th y ng d ng J2ME đ t m t sandbox có nghĩa b gi i h n truy xu t đ n tài nguyên c a thi t b 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 API c a CLDC 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, báo hi u,…) ch nhà s n xu t n tho i di đ ng cung c p API tị ộ ổ ộ ệ ỉ ả ấ ệ ộ ấ ương ng Tuy nhiên, APIứ không ph i m t ph n c a J2ME.ả ộ ầ ủ

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

3 MIDP (Mobile Information Device Profile)

T ng J2ME cao nh t t ng hi n tr ng m c đích c a đ nh nghĩa API cho 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 gi i h n lo i thi t b di đ ng (nh nhi u b nh h n hay đ phân gi i hình cao h n).ệ ộ ệ ể ặ ạ ế ị ộ ề ộ ộ ả Hi n tr ng t p API h u d ng h n cho 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 không c nệ ậ ữ ụ ứ ụ ụ ể ậ ể ế ộ ứ ụ ộ ệ ụ ể ầ quan tâm đ n ch y thi t b nào.ế ế ị

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

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

Nó khơng đ nh nghĩa cách mà ng d ng đị ứ ụ ược n p thi t b di đ ng Đó trách nhi m c a nhà s n xu t Nó 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ó 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 n tho i di đ ng J2ME - Ph n

1/ MIDlet

Các ng d ng J2ME đứ ược g i MIDlet (Mobile Information Device applet).ọ

(6)

XML th hi n đ nh d ng thông 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 XML Nhà phát tri n cóể ệ ị ệ ự ả ầ ắ ộ ả ể ộ ứ ố ự ể th ch xây d ng đ nh d ng thông 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 server u m có tính quy t đ nh c aể ỉ ự ị ệ ợ ự ủ ể ự ệ ệ ổ ữ ệ ữ Ư ể ế ị ủ XML chu n hóa có tính kh chuy n cao H n n a, 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 giao th c thông p khác ch y u 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 dùng XML nh tăng thêm ph n d th a c a XML, ta g p v n đ khác v i thi t b di đ ng Trong n nữ ệ ầ ủ ặ ấ ề ế ị ộ ề t ng J2EE h tr XML, mơi trả ỗ ợ ường MIDP 1.0 không cung c p h tr tích h p cho vi c phân tích XML Các gi i pháp d a XML c n ph i bao g m bấ ỗ ợ ợ ệ ả ự ầ ả ộ phân tích XML 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ụ thi t k đ s d ng t i thi u tài nguyên, nhiên dù v n yêu c u không gian l u tr thi t b , v n ế ể ụ ố ể ẫ ầ ữ ế ị ố ường r t đ chia s ấ ể ẻ

ta s d ng KXML c a Enhydra, b i 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 kh tính toán tể ệ ầ ả ộ ả ương ng Trong h u h t trứ ầ ế ường h p, thông p XML l n h n nhi u so v i thông pợ ệ ề ệ nh phân – ch y u 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 , đ 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 đạ ược dùng đ chuy n trang WML, kích thể ể ước gi m xu ng r t nhi u b ng cách thay th , thu c tính, giá tr thông d ng b ngả ố ấ ề ằ ẻ ộ ị ụ ằ m t t p th (token) có th c u hình độ ậ ẻ ể ấ ược Cũng hồn tồn gi ng nh vi c mã hóa gi i mã thông p 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 server J2EE có th tộ ệ ữ ế ị ể ương t B phân tích đ m nh n vi c mã hóa gi i mã thông 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 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 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 m t giao th c truy n thông p c c nh cho phép th c thi th t c t xa m ng thông qua HTTP Client g i m t thông 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 response, d ng m t thông p XML, tr v cho client.ế ể ộ ủ ụ ộ ủ ả ề ế ả ộ ệ ả ề

Do XML-RPC có u m c a XML Nó xây d ng r t tính năng, cho phép xác đ nh truy n ki u d li u gi ng nh 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 ý nh 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 base64 hai ki u liên h p (complex): struct array Đi u làm cho giao th c đ c bi t thích h p v i cácể ợ ề ứ ặ ệ ợ

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

ứ ụ ế ố ệ ộ ẹ

Nhược m đây, gi ng nh v i XML, n n t ng J2ME không cung c p b t kỳ h tr tích h p cho XML-RPC, c n ph i d a vào gói b sungể ố ề ả ấ ấ ỗ ợ ợ ầ ả ự ổ nh KXM-RPC c a Enhydra đ tri n khai ng d ng thi t b Gói KXML-RPC đư ủ ể ể ứ ụ ế ị ược xây d ng n n c a KXML ch y 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 cung c p cho vi c cài đ t m liên l c tị ồ ủ ấ ệ ặ ể ương ng t i server M t ví d c a Apache XML-ứ ộ ụ ủ RPC d a 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 v i Useland đ đáp ng nhu c u c a nhà phát tri n mu n phát tri nầ ể ứ ể ứ ầ ủ ể ố ể ng d ng phân tán v i công ngh c a Microsoft SOAP phiên b n trứ ụ ệ ủ ả ước c a XML-RPC có ngu n g c Tuy nhiên, không gi ng nh SOAP,ủ ố ố XML-RPC c i ti n không gia tăng tính ph c t p Vi c đ nh nghĩa ph c t p giúp cho giao th c m r t linh đ ng, u gi i thích làả ế ứ ệ ị ứ ứ ấ ộ ề ả chu n th c t cho vi c g i hàm t xa b ng XML HTTP.ẩ ự ế ệ ọ ằ

Đáng ti c là, v i nhế ược m v n có c a lĩnh v c di đ ng, d n t i nhi u d li u th a mà không luôn c n đ n, nh ng chi m nhi u tài nguyên Đ c tể ố ủ ự ộ ẫ ề ữ ệ ầ ế ế ề ặ ả giao th c hi n t i 1.2 t p tính c a XML-RPC, cung c p tính thêm nh tính quan tâm khơng gian tên (namespace awareness), c ệ ậ ủ ấ ế đ nh ki u d li u, vi c truy n d li u header b sung SOAP có m t h n ch , J2ME không cung c p b t kỳ h tr cho Các client c n h trị ể ữ ệ ệ ề ữ ệ ổ ặ ế ấ ấ ỗ ợ ầ ỗ ợ SOAP c n ph i tích h p ch c c a ng d ng Trên đ u cu i client, m t gi i pháp dùng Enhydra ME project-kSOAP Tuy nhiên, gói kSOAP yêuầ ả ợ ứ ủ ứ ụ ầ ố ộ ả c u nh t 41 KB b nh , m t gánh n ng cho ng d ng thi t b ầ ấ ộ ộ ặ ứ ụ ế ị

Trong trường h p này, ta ph i b o đ m b nh băng thông yêu c u có th th a mãn Đợ ả ả ả ộ ầ ể ỏ ương nhiên server c n ph i h tr SOAP Phía server 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 d án m i Axis thu c Apache.ả ể ự ặ ự ự ộ

(7)

Ta kh o sát nhi u tùy ch n khác 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 ý v i 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 u m c aử ụ ộ ế ố ế ợ ể ủ phương pháp đ i l p này, có m t gi i pháp thú v – s d ng m t proxy server ho c m t gateway gi a MIDP client server J2EE Nh ta đ c p ố ậ ộ ả ị ụ ộ ặ ộ ữ ề ậ trên, thông p XML có th đệ ể ược nén thơng qua WBXML gateway

Tương t nh v y, ta có th th c hi n m t proxy cho giao th c đ c quy n, chuy n thành giao th c chu n nh XML-RPC hay SOAP Nh v y, d li uự ậ ể ự ệ ộ ứ ộ ề ể ứ ẩ ậ ữ ệ 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 p 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 d ch request c a giao th c nh thành giao th c d a trênư ộ ế ị ủ ứ ẹ ứ ự XML c a server ngủ ượ ạc l i

Dùng proxy, ta có kh k t n i ng d ng đ n m t server 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 h tr SOAPụ ể ỗ ợ hay XML-RPC Đi u có u m kh liên k t hi u su t đ u đề ể ả ế ệ ấ ề ược nâng cao M t khác, c n ph i xem xét m t v n đ s gia tăng đ ph c t p c aặ ầ ả ộ ấ ề ự ộ ứ ủ tồn b h th ng s gây khó khăn cho trình phát tri n ng d ng.ộ ệ ố ẽ ể ứ ụ

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

w