KVM và CLDC liên quan như thế nào?

Một phần của tài liệu nghiên cứu lập trình cho các thiết bị di động áp dụng cho bài toán hướng dẫn du lịch (Trang 35 - 46)

Theo tài liệu của Sun: “CLDC là đặc tả cho một lớp máy ảo có thể chạy trên các thiết bị dùng CLDC hỗ trợ profile”. Thực tế, CLDC mang những yêu cầu thỏa mãn những tính chất của một máy ảo. KVM là một bản cài đặt thỏa mãn những yêu cầu CLDC.

30

Kiến trúc chung:

Bắt đầu với hệ điều hành chủ (OS) làm cơ sở tiếp theo là máy ảo (VM). VM sẽ thuộc 2 dạng:

Đối với những hệ thống tuân theo đặc tả CDC thì đây sẽ là một máy ảo Java “truyền thống” có nghĩa là như Java 2 phiên bản chuẩn (Java 2 Standard Edition).

Đối với những hệ thống tuân theo chuẩn mô tả CLDC, đây sẽ là loại máy ảo KVM theo yêu cầu bởi CLDC.

Các thư viện lõi CLDC và CDC là phần tiếp theo trong lớp ứng dụng. Profile nằm ở lớp cao nhất và được thiết kế để cung cấp các công cụ đặc thù cho chủng loại thiết bị.

Hình 3.2 3.5. Tính tương thích giữa những phiên bản Java

Trong phần đầu chúng ta đã nghe nói đến châm ngôn của java “Write once, run anywhere”. Và cũng đã biết qua khái niệm Configuration và Profile, KVM. Liệu châm ngôn trên còn đúng cho tất cả máy ảo Java? Câu trả lời là còn tùy thuộc vào một số điều kiệm đi cùng.

31

3.5.1. Ứng dụng J2SE sẽ tiếp tục chạy trên môi trường J2ME?

J2ME là một phiên bản thu nhỏ về cơ bản từ phiên bản J2SE. Rất nhiều thành phần đã được loại bỏ để giữ cho nền tảng J2ME nhỏ và hiệu quả. Một ví dụ điển hình là thư viện AWT (Abstract Window ToolKit) đã thay đổi để có khả năng hoạt động trên nhiều thiết bị - do nhiều thiết bị di động không có những khả năng để cung cấp những thành phần giao diện người dùng tiên tiến như cửa sổ gối chồng lên nhau hay những thực đơn dạng thả xuống.

Nếu bạn viết ứng dụng trên nền J2SE nhưng chỉ sử dụng những lớp có sẵn trong J2ME Configuration thì ứng dụng của bạn có thể chạy trên cả hai nền tảng.

Nên nhớ, những ứng dụng như vậy sẽ bị ràng buộc với khả năng sử dụng giao diện người dùng thấp, theo như môi trường J2ME. J2SE sử dụng một tập API khác hoàn toàn J2ME để điều khiển giao diện màn hình.

3.5.2. Những ứng dụng J2ME vẫn chạy trên J2SE?

Cùng một quy tắc như trên, nếu bạn hạn chế mã bạn chỉ sử dụng những lớp thư viện chung trên cả hai nền tảng, câu trả lời là vẫn chạy được. Tuy nhiên, phần lớn phần mềm bạn viết cho một thiết bị chạy J2ME sẽ yêu cầu giao diện và cách điều khiển sự kiện đặc thù. Như vậy, bạn sẽ gặp rất nhiều hạn chế khi muốn viết kiểu chương trình thích hợp cho cả hai nền tảng.

3.6. Kết chương

Sun tạo ra Java 2 phiên bản Micro cho phép phát triển những ứng dụng Java cho thiết bị có sức mạnh xử lý thấp và dung lượng bộ nhớ nhỏ hơn so với các ứng dụng trên nền tảng desktop truyền thống. Những sản phầm sử dụng J2ME có thể bao gồm những thiết bị như mobile, PDAs, pager, máy chơi games, những hệ thống định vị, dẫn đường…

J2ME được chia thành hai phạm trù rộng mà chúng ta đã biết và được gọi là Configuration. CDC là một tập hợp API dùng cho những thiết bị hạn chế về sức mạnh xử lý, màn hình và bộ nhớ như mobile, PDAs, Pocket PC…

Cấu hình Configuration gần gũi với máy ảo Java. Với loại CDC, máy ảo Java hoàn toàn tương thích với Java 2 phiên bản chuẩn. Configuration KVM là máy ảo dùng phát triển cho CLDC thay vì JVM.

Trên cùng của lớp Configuration là Profile của thiết bị. Ở đây bạn sẽ tìm thấy các tập API dùng cho thiết kế giao diện người dùng, hỗ trợ nối mạng và lưu trữ.

32

Chương 4. Web service

4.1. Định nghĩa

Một Web service được định nghĩa là một tập các phương thức có thể được định vị thông qua địa chỉ URL, các phương thức này được công bố trên hệ thống mạng và được dùng như những khối cơ bản để xây dựng một ứng dụng phân tán. Nói một cách đơn giản hơn, web service là tập hợp các phương thức có thể được các ứng dụng khác triệu gọi từ xa (RPC- Remote Procedure Call) để hình thành nên một hệ ứng dụng phân tán.

4.2. Thành phần cơ bản của Web service

Các thành phần cơ bản nhất của web service bao gồm HTTP, XML và SOAP (Simple Object Access Protocol). Việc phát triển những kỹ thuật này được điều hành bởi tổ chức W3C (World Wide Web Consortium). Chúng ta sẽ đề cập đến những kỹ thuật này ở những phần sau.

4.3. Hoạt động của Web service

Hình 4.1: Hoạt động của Web Service

Một ứng dụng web service thường gồm 2 phần: client và server.

Client và server sẽ giao tiếp với nhau theo giao thức HTTP: Ứng dụng client gửi những lời gọi hàm đến server thông qua các gói tin HTTP request và kết quả thực thi hàm sẽ được server hồi đáp thông qua các gói tin HTTP response.

33

4.3.1. SOAP

Các thông điệp sẽ được định dạng theo chuẩn giao thức SOAP (Simple Object Access Protocol). Đây thực chất cũng chỉ là một ngôn ngữ được định nghĩa bên trên ngôn ngữ XML có sẵn.

4.3.2. WSDL (Web Service Definition Language)

Đây là file XML chứa các định nghĩa về các hàm trong Web service tương ứng. Các nhà phát triển ứng dụng sẽ phải dựa vào nội dung file này để biết Web service hỗ trợ những hàm này và nhận những tham số tương ứng, kết quả trả về như thế nào.

Nếu chúng ta phát triển Web service trong môi trường J2ME thì không nhất thiết phải hiểu rõ cấu trúc về file WSDL, vì trong bộ công cụ Wireless Toolkit của Sun đã cung cấp sẵn công cụ Stub Generator. Chức năng của bộ công cụ này là đọc file WSDL và phát sinh thành những lớp java tương ứng cho nhà phát triển ứng dụng.

4.3.3. UDDI(Universal Description, Discovery, and Integration)

Đây là công cụ giúp cho những nhà phát triển Web Service công bố những thông tin về web service của mình cho cộng đồng các nhà phát triển ứng dụng. Người dùng sẽ dựa vào những thông tin này để sử dụng web service trong ứng dụng riêng của mình tạo thành một hệ ứng dụng phân tán.

Mối quan hệ giữa các thành phần SOAP,WSDL,UDDI có thể được mô tả như sau: Một ứng dụng web service client cần sử dụng một web service được đặt tại một nơi nào đó trên hệ thống mạng. Trước tiên, client sẽ truy vấn đến các mẫu tin UDDI, có thể theo tên, loại hay một thông tin riêng biệt nào đó. Khi đã xác định được web service cần tìm, client có thể lấy thông tin về địa chỉ của tài liệu WSDL của web service này dựa trên mẫu tin UDDI. Tài liệu WSDL sẽ mô tả cách thức liên lạc với web service, định dạng của gói tin truy vấn và phản hồi theo cũng được mô tả bằng XML schema. Dựa vào những thông tin này client có thể tạo những gói tin SOAP tương ứng để liên lạc với server.

Ứng dụng web service có thể được cài đặt ở những mức độ cao hơn như những mô hình sau:

34

Hình 4.2: Mô hình một client truy suất đến nhiều we b services cùng một lúc

35

4.5. Các thành phần chính của Web Service

Web service dựa vào khá nhiều công nghệ bên dưới như HTTP, XML, SOAP… Mỗi công nghệ nêu trên đều có phạm vi ứng dụng khá sâu rộng và đòi hỏi nhiều thời gian tìm hiểu cũng như trình bày. Luận văn không có tham vọng trình bày cặn kẽ về tất cả các công nghệ trên mà chỉ xin giới thiệu những nét cơ bản và sơ lược về các công nghệ chính. Việc trình bày này chỉ nhằm mục đích cung cấp cho người đọc cái nhìn khái quát hơn về web service, tuy nhiên quá trình phát triển ứng dụng web service thông thường không đòi hỏi kiến thức sâu về lãnh vực này vì đã có rất nhiều công cụ hỗ trợ và lập trình viên đã được “che” đi những công việc phức tạp bên dưới.

4.5.1. SOAP (Simple Object Access Protocol)

SOAP là một giao thức đơn giản nhằm mục đích trao đổi thông tin trong môi trường ứng dụng phân tán. SOAP dựa trên nền công nghệ XML và bao gồm 2 thành phần:

Một “bì thư” (envelope) để quản lý các thông tin mở rộng và mang tính điều khiển.

Một chuẩn mã hóa quy định cách thể hiện thông tin trong envelope. SOAP có thể được sử dụng kết hợp với các giao thức chuẩn khác như SMTP, HTTP/HTTPS, FTP… Tuy nhiên hiện nay chỉ mới có HTTP/HTTPS được xem như giao thức chuẩn để trao đổi gói tin SOAP. Việc sử dụng SOAP như một giao thức trao đổi dữ liệu chuẩn khiến web service có khả năng hoạt động trên nhiều môi trường lập trình khác nhau như Java, .NET,…

4.6. WSDL (Web Service Definition Language)

Khi chúng ta đã xây dựng hoàn thành web service cần phải cung cấp tài liệu mô tả để các nhà phát triển client có thể sử dụng được web service trên. Tài liệu mô tả web service cần mô tả được vị trí web service, các hàm nó cung cấp, tham số kèm theo…

Tài liệu WSDL là một tài liệu thỏa mãn các nhu cầu trên. WSDL (Web Service Definition Language) là một ngôn ngữ dựa trên cú pháp XML dùng để định nghĩa một web service. Nói cách khác, một file WSDL như một người trung gian đứng giữa web service và ứng dụng web service client.

Trong tài liệu WSDL, chúng ta sẽ định nghĩa các phương thức được web service hỗ trợ, các kiểu dữ liệu được xử dụng trong các phương thức cùng các thông điệp được

36

trao đổi giữa client và server ứng với mỗi phương thức. Chúng ta chỉ phải định nghĩa các kiểu dữ liệu phức tạp như mảng, các lớp được khai báo thêm trong chương trình, mảng các lớp … còn các kiểu dữ liệu cơ bản như int, string, float …đã được hỗ trợ sẵn. Sau đó, chúng ta gộp chung các định nghĩa này kết hợp với các giao thức mạng bên dưới để hình thành một end-point (tạm dịch là một đầu cuối).

Hình 4.4 Web Service Endpoint

Một endpoint interface (gọi tắt là một enpoint) gồm có nhiều ports, mỗi port quy định một cách liên lạc với web service khác nhau ứng với mỗi giao thức bên dưới khác nhau. Sự kết hợp của web service với một giao thức mạng như thế được gọi là một binding, như trong hình 2.4 chúng ta thấy có 3 binding khác nhau. Port 1 sử dụng SOAP/HTTP binding, Port 2 sử dụng SOAP/HTTPS binding, Port 3 sử dụng các dạng binding khác. Như vậy ứng với web service trên, ta có đến 3 phương tiện khác nhau để triệu gọi các hàm.

Các hình thức binding thông dụng nhất hiện nay vẫn là SOAP/HTTP POST và SOAP/HTTPS (hỗ trợ bảo mật thông qua SSL).

Việc phát sinh file WSDL sẽ được tự động thực hiện bởi các bộ công cụ (như Netbeans 6.8) do đó chúng ta không nhất thiết phải hiểu rõ cấu trúc file WSDL. Tuy nhiên, nếu hiểu cấu trúc file WSDL sẽ cung cấp cho chúng ta thêm nhiều tùy biến cũng như khả năng sửa lỗi (debug) tốt hơn.

37

4.6.1. Cấu trúc file WSDL

Một tài liệu WSDL thực chất chỉ là một danh sách các định nghĩa. Trong một file WSDL, phần tử gốc được đặt tên là "definitions". Phần tử này chứa năm phần tử con chính để định nghĩa web service. Thứ tự xuất hiện của các phần tử con này:

Phần tử "types": định nghĩa các kiểu dữ liệu dùng để trao đổi giữa client và server (chỉ định nghĩa các kiể u dữ liệu phức tạp như structure, class…).

Phần tử "message": định nghĩa các thông điệp được trao đổi.

Phần tử "portType": định nghĩa một tập các chức năng web service hỗ trợ và thông điệp tương ứng đối với mỗi chức năng đó.

Phần tử "binding": Sau khi đã định nghĩa các port, ta cần chỉ rõ ràng buộc giữa các ports này và các giao thức tầng dưới. Phần tử binding sẽ đảm nhiệm chức năng này (sẽ được đề cập kỹ hơn ở phần sau).

Phần tử "service": Có tác dụng gom các ports đã định nghĩa thành từng nhóm.

38

Chương 5. Kết luận

5.1. Kết luận

Sau hơn 5 tháng nghiên cứu dưới sự hướng dẫn của ThS Nguyễn Việt Anh và sự giúp đỡ nhiệt tình của các bạn trong nhóm khóa luận. Bước đầu khóa luận đã thu được một số kết quả nhất định.

5.1.1. Các kết quả đạt được

Tìm hiểu về J2ME, Webservice.

Xây dựng thành công chương trình “Hướng dẫn du lịch qua mobile theo ngữ cảnh”. Ứng dụng demo gồm 2 địa danh đó là “Văn miếu Quốc Tử Giám” và “Lăng tẩm Huế”, bước đầu chương trình xử lý sự chi tiết của nội dung theo độ sâu là 5 mức. Ngữ cảnh của ứng dụng là thời gian có thể ghé thăm, font, profile. Người dùng hoàn toàn có thể cài đặt ứng dụng khi điện thoại của họ hỗ trợ kết nối GPRS.

5.1.2. Các vấn đề chưa giải quyết được

Chức năng người dùng tự bổ sung dữ liệu cho chương trình chưa hoàn thành.

Chưa giải quyết được việc tự động thay đổi lộ trình do tác động bởi một ngoại cảnh nào đó trong quá trình du lịch.

Giải quyết sự cố mất kết nối với Webservice chưa hoàn thành.

5.2. Hướng phát triển tương lai

Chương trình mới chỉ thực hiện được những chức năng cơ bản, và ngữ cảnh đưa vào chương trình chưa nhiều và giao diện cũng chưa được đẹp lắm. Trong thời gian tới hướng phát triển của em là:

Hoàn thiện giao diện để giúp người sử dụng thao tác dễ dàng hơ n.

Đưa thêm nhiều ngữ cảnh vào hơn để chương trình thêm mềm dẻo mới người dùng.

Mở rộng cơ sở dữ liệu.

Với sự phát triển của 3G, việc đưa video vào ứng dụng là hướng phát triển tốt vì vậy VideoStreaming là cách giải quyết tốt nhất.

39

Tài liệu tham khảo

Tiếng việt:

[1] Đặng Nguyễn Kim Anh, Đào Anh Tuấn. Nghiên cức Java Mobile và xây dựng ứng dụng minh họa. Đại học Khoa Học Tự Nhiên, 2005.

[2] Phạm Tấn Liêm. Phát triển game di độg với J2ME, Nxb Giao Thông Vận Tải, 2005.

[3] Phương Lan, Trần Tiến Dũng. Java tập 3. Nền tảng của J2ME, tr15-22.

English:

[1] Bruce Eckel, Thinking in Java 3rd, Prentice Hall, New Jersey, 1998 . Telecooperation Johannes Kepler University Linz, Austria, 2007 .

[2] Context-Aware Adaptation in a Mobile Tour Guide. Ronny Kramer, Marko Modsching, Joerg Schulze, Klaus ten Hagen. Department of Computer Science, University of Applied Sciences Zittau / Görlitz, Germany K.tenHagen@HS-ZiGr.de [3] David Chappell - Tyler Jewell, Java Web Services, O'Reilley, 2002.

[4] Jason Lam. J2ME Game De velopment with MIDP2.

[5] Kim Topey,Java Web Service in A Nutshell, O'Reilley, 2003. [6] Michael Juntao Yuan, Enterprise J2ME™: Developing Mobile Java Application, Prentice Hall PTR, 2003.

[7] Roger Riggs, Programming Wireless Devices with the Java™ 2 Platform Micro Edition, Addision Wesley, 2003.

Một phần của tài liệu nghiên cứu lập trình cho các thiết bị di động áp dụng cho bài toán hướng dẫn du lịch (Trang 35 - 46)

Tải bản đầy đủ (PDF)

(46 trang)