NGHIÊN CỨU JAVA MOBILE VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG MÁY TÍNH – VIỄN THÔNG ĐẶNG NGUYỄN KIM ANH – ĐÀO ANH TUẤN NGHIÊN CỨU JAVA MOBILE VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA KHÓA LUẬN CỬ NHÂN TIN HỌC TP.HCM, 2005 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG MÁY TÍNH – VIỄN THÔNG ĐẶNG NGUYỄN KIM ANH – 0112424 ĐÀO ANH TUẤN – 0112451 NGHIÊN CỨU JAVA MOBILE VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA KHÓA LUẬN CỬ NHÂN TIN HỌC GIÁO VIÊN HƯỚNG DẪN Thầy NGUYỄN MINH TUẤN NIÊN KHÓA 2001-2005 Lời Cảm Ơn! Sau hơn năm tháng tìm hiểu và thực hiện, luận văn “Nghiên cứu công nghệ Java Mobile và xây dựng ứng dụng minh hoạ” đã cơ bản hoàn thành. Để đạt được kết quả này, chúng tôi đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự quan tâm, giúp đỡ, ủng hộ của các thầy cô, bạn bè và gia đình. Trước hết, chúng em xin gởi lời cảm ơn chân thành đến Bộ môn Mạng máy tính và Viễn thông, Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên và các thầy cô đặc biệt là Thầy Nguyễn Minh Tuấn đã tận tình giúp đỡ, hướng dẫn chúng em hoàn thành luận văn này. Chúng tôi rất cảm ơn các bạn bè trong khoa, các anh chị, các bạn trong cộng đồng Java Việt Nam đã bên cạnh ủng hộ, đóng góp ý kiến cho chúng tôi trong quá trình thực hiện luận văn. Và chúng con cũng xin chân thành cảm ơn gia đình đã luôn động viên, tạo điều kiện tốt nhất cho chúng con học tập và hoàn tất luận văn. Luận văn đã hoàn thành với một số kết quả nhất định, tuy nhiên vẫn không tránh khỏi sai sót. Kính mong sự cảm thông và đóng góp ý kiến từ các thầy cô và các bạn. Thành phố Hồ Chí Minh, tháng 7 năm 2005 Đặng Nguyễn Kim Anh - Đào Anh Tuấn MỤC LỤC Lời Nói Đầu 1 Phần 1: Kiến thức nền tảng J2ME 5 Chương 1: Tổng quan về J2ME 5 1.1 Giới thiệu J2ME (Java 2 Micro Edition) .5 1.2 Lý do chúng ta cần J2ME 6 1.3 Các thành phần của J2ME: 7 1.3.1 Configuration: .7 1.3.2 Profile: 9 1.3.3 Máy ảo Java 10 Chương 2: Giới thiệu CLDC và MIDP 13 2.1. CLDC 13 2.1.1. Yêu cầu phần cứng: 13 2.1.2. Yêu cầu phần mềm: 13 2.1.3. Máy ảo Java: .13 2.2. MIDP: 16 2.2.1. Yêu cầu phần cứng: 16 2.2.2. Yêu cầu phần mềm: 16 2.2.3. Cấu trúc MID Profile: .16 2.2.4. MIDlet Suite: 18 2.2.5. Môi trường phát triển ứng dụng J2ME .22 Chương 3: Các vấn đề cơ bản của chương trình MIDlet . 25 3.1. Cấu trúc cơ bản: 25 3.2. Xây dựng một ứng dụng MIDlet: 25 3.3. Lớp MIDlet: 26 3.4. Lớp MIDletStateChangeException: 28 3.5. Display .28 3.6. Lớp Displayable: .30 3.7. Quản lý các sự kiện (event) .32 3.7.1. Command & CommandListener .33 3.7.2. Item và ItemStateListener .38 Chương 4: Giao diện đồ họa cấp cao 40 4.1. Screen: .42 4.2. Form: .43 4.3. Item: .45 4.3.1. DateField: .46 4.3.2. Gauge: .48 4.3.3. String Item: .51 4.3.4. TextField: .53 4.3.5. ChoiceGroup: .57 4.3.6. Image và ImageItem: 61 4.4. List: 64 4.5. TextBox: 69 4.6. Alert và AlertType: .72 4.6.1. Alert: .72 4.6.2. AlertType: .74 4.7. Ticker: .77 Chương 5: Giao diện đồ họa cấp thấp 78 5.1. Canvas: 78 5.1.1. Hệ toạ độ: 79 5.1.2. Vẽ trên đối tượng Canvas: 79 5.1.3. Bắt sự kiện trong các đối tượng Canvas: 82 5.1.4. Game action: .85 5.1.5. Sự kiện con trỏ: .87 5.2. Graphics: .89 5.2.1. Màu sắc: 90 5.2.2. Nét vẽ: .93 5.2.3. Font chữ: .98 5.2.4. Vẽ các đối tượng hình ảnh (image): .101 5.2.5. Các phương thức tịnh tiến đối tượng: .103 5.2.6. Vùng xén (Clipping regions): .105 Chương 6: Lưu trữ thông tin với RMS 106 6.1. Giới thiệu RMS .106 6.2. Duyệt danh sách Record với RecordEnumeration 115 6.3. Sắp xếp bằng RecordComparator 117 6.4. Lọc record với RecordFilter 119 6.5. Nhận thông điệp khi Record Store thay đổi 121 6.6. Xử lý lỗi khi thao tác với Record Store .122 Chương 7: Kết nối mạng với Generic Connection Framework (GCF) 124 7.1. Giới thiệu GFC 124 7.2. Lược đồ lớp .124 7.3. Kết nối HTTP: .127 7.3.1. Khởi tạo kết nối: .127 7.3.2. Các đặc điểm của kết nối HTTP bằng J2ME: 130 7.3.3. Thông số kết nối: 137 7.4. Kết nối socket Datagram (UDP) .138 7.5. Kết nối TCP socket .141 7.6. Gửi và nhận SMS 144 Phần 2 : Web Service và Ứng dụng "Đăng Ký Học Phần" 149 Chương 8: Giới thiệu Web Service . 149 8.1. Ứng dụng phân tán (Distributed Application) 149 8.1.1. Giới thiệu 149 8.1.2. Các vấn đề nảy sinh trong hệ thống ứng dụng phân tán .150 8.1.3. Hạn chế của những mô hình ứng dụng phân tán trước đây 151 8.2. Web Service 152 8.2.1. Định nghĩa 152 8.2.2. Thành phần cơ bản của Web service: .152 8.2.3. Hoạt động của Web service 152 8.2.4. Ưu điểm của web service .155 8.3. Các thành phần chính của Web Service 157 8.3.1. SOAP (Simple Object Access Protocol) 157 8.3.2. WSDL (Web Service Definition Language) 162 Chương 9: Ứng dụng đăng ký học phần 172 9.1 Đặc tả chương trình: 172 9.1.1 Tổng quan: 172 9.1.2 Các chức năng chính: .172 9.2 Kiến trúc chương trình: .174 9.2.1 Mô hình kết nối: .174 9.2.2 Mô hình bảo mật (mã hoá password): 176 9.3 Phân tích - thiết kế: 177 9.3.1 Mô hình use case: .177 9.3.2 Đặc tả một số use case chính: .178 9.4 Thiết kế mô hình dữ liệu: 183 9.4.1 Mô hình thực thể kết hợp: 183 9.4.2 Các bảng dữ liệu: 183 9.4.3 Chi tiết các bảng dữ liệu: 184 9.4.4 Ràng buộc dữ liệu: 188 9.4.5 Mô hình dữ liệu: .190 9.4.6 Các chức năng store procedures: 190 9.4.7 Thiết kế lớp: 191 9.5 Cài đặt - thử nghiệm: .192 9.5.1 Yêu cầu phần cứng: 192 9.5.2 Yêu cầu phần mềm: 193 9.5.3 Giao diện chương trình: 193 Chương 10: Tổng kết . 205 10.1 Kết luận: 205 10.2 Hướng phát triển: 207 Tài liệu tham khảo 210 Phụ Lục A: Hướng dẫn sử dụng công cụ Sun Wireless ToolKit 2.3 211 Phụ Lục B: Xây dựng và Sử dụng Web Service . 217 Phụ Lục C: Giới thiệu các thư viện JSR . 222 Danh Sách Các Hình Hình 1.1 Các thiết bị J2ME hỗ trợ 6 Hình 1.2 Các thành phần của J2ME 7 Hình 1.3 Configurations và các thiết bị 9 Hình 1.4 Cấu trúc chương trình J2ME 11 Hình 1.5 Cấu trúc chương trình MIDP .11 Hình 2.1 Cấu trúc thiết bị MID .17 Hình 3.1 Command Exit .34 Hình 3.2 Command Label .36 Hình 3.3 Ánh xạ soft-button 36 Hình 4.1 Sơ đồ các lớp giao diện đồ hoạ 40 Hình 4.2 Giao diện đối tượng DateField .46 Hình 4.3 Giao diện đối tượng Gauge chế độ tương tác 48 Hình 4.4 Giao diện đối tượng Gauge chế độ không tương tác .49 Hình 4.5 Giao diện đối tượng StringItem .52 Hình 4.6 Giao diện đối tượng TextField .56 Hình 4.7 Giao diện đối tượng ChoiceGroup chế độ một lựa chọn .59 Hình 4.8 Giao diện đối tượng ChoiceGroup chế độ nhiều lựa chọn .60 Hình 4.9 Giao diện đối tượng List dạng menu 67 Hình 4.10 Giao diện đối tượng List cho phép chọn nhiều lựa chọn .68 Hình 4.11 Giao diện đối tượng TextBox .71 Hình 4.12 Giao diện đối tượng Alert 76 Hình 4.13 Giao diện Ticker .77 Hình 5.1 Các phương thức vẽ đường cong .94 Hình 5.2 Các phương thức vẽ hình chữ nhật 95 Hình 5.3 Các phương thức hỗ trợ vẽ Text 97 Hình 5.4 Các định dạng trong Text Graphic .97 Hình 5.5 Các phương thức tạo font .100 Hình 5.6 Vẽ bằng đối tượng Immutable Image 101 Hình 5.7 Vẽ bằng đối tượng Mutable Image 102 Hình 5.8 Các định dạng vị trí trong Graphics .103 Hình 7.1 Lược đồ các lớp trong thư viện GCF .125 Hình 7.2 Kết nối UDP .138 Hình 7.3 Kết Nối TCP .141 Hình 7.4 Lược đồ lớp thư viện WMA .145 Hình 8.1 Hoạt động của Web Service .152 Hình 8.2 Một client truy xuất đến nhiều web services cùng lúc .154 Hình 8.3 Một web service có thể triệu tập đến các web services khác .155 Hình 8.4 Web Service Endpoint 162 Hình 9.1 Kiến trúc chương trình ứng dụng .174 Hình 9.2 Mô hình mã hoá password .176 Hình 9.3 Lược đồ use case 177 Hình 9.4 Mô hình thực thể kết hợp ER .183 Hình 9.5 Ràng buộc chu trình .189 Hình 9.6 Mô hình cơ sở dữ liệu 190 Hình 9.7 Mô hình Lớp .192 Hình 9.8 Sơ đồ các màn hình 194 Hình 9.9 Màn hình welcome .195 Hình 9.10 Màn hình đăng nhập .196 Hình 9.11 Confirm 197 Hình 9.12 Menu chức năng .198 Hình 9.13 Màn hình đăng ký học phần lý thuyết 199 Hình 9.14 Màn hình đăng ký học phần thực hành 200 Hình 9.15 Màn hình xem thời khoá biểu 201 Hình 9.16 Màn hình xem kết quả học tập .202 Hình 9.17 Màn hình xem phiếu đăng ký .203 Hình 9.18 Màn hình xem thời khoá biểu 204 Hình 10.1 Hướng phát triển thực tế 207 Hình A.1 Công cụ Sun WirelessToolkit 2.3 .211 Hình A.2 Màn hình chính của công cụ .212 Hình A.3 Tạo project mới .212 Hình A.4 Các options cho project .213 Hình A.5 Chỉnh sửa nội dung file Jad và Jar 214 Hình A.6 Biên dich project .215 Hình A.7 Đóng gói ứng dụng 216 Hình B.1 Tạo project Web Service .217 Hình B.2 Khai báo lớp và hàm 218 Hình B.3 Export nhiều hàm cùng lúc 219 Hình B.4 Màn hình thực thi Web Service của IE .219 Hình B.5 File WSDL .220 Hình B.6 Công cụ Stub Generator 221 Hình B.7 Các options của công cụ Stub Generator .221 Danh Sách Các Bảng Bảng 2.1 Cấu trúc file manifest .19 Bảng 2.2 Cấu trúc file JAD .20 Bảng 3.1 Lớp MIDlet 27 Bảng 3.2 Lớp Display .29 Bảng 3.3 Lớp Displayable .32 Bảng 3.4 Các Command Type 37 Bảng 3.5 Command và CommandListener .38 Bảng 3.6 Item và ItemStateListener 39 Bảng 4.1 Lớp Screen .42 Bảng 4.2 Lớp Form .44 Bảng 4.3 Lớp Item 45 Bảng 4.4 Lớp DateField 46 Bảng 4.5 Lớp Gauge .49 Bảng 4.6 Lớp StringItem .51 Bảng 4.7 Các Ràng Buộc của TextField .53 Bảng 4.8 Lớp TextField 55 Bảng 4.9 Lớp ChoiceGroup 58 Bảng 4.10 Lớp Image 62 Bảng 4.11 Định dạng ImageItem 62 Bảng 4.12 Lớp ImageItem 63 Bảng 4.13 So sánh List và ChoiceGroup 65 Bảng 4.14 Lớp List 66 Bảng 4.15 So sánh TextField và TextBox 69 Bảng 4.16 Lớp TextBox 70 Bảng 4.17 Lớp Alert 73 Bảng 4.18 AlertType .75 Bảng 4.19 Lớp Ticker .77 Bảng 5.1 Truy vấn kích thước Canvas 79 Bảng 5.2 Lớp Canvas 81 Bảng 5.3 Giao tiếp với Application Manager .81 Bảng 5.4 Mã Phím .83 Bảng 5.5 Sự kiện keyPressed 84 Bảng 5.6 Sự kiện Game Action .85 Bảng 5.7 Bắt sự kiện trong Game Action .86 Bảng 5.8 Sự kiện con trỏ .87 Bảng 5.9 Lớp Graphics .90 Bảng 5.10 Các phương thức vẽ .93 Bảng 5.11 Xử lý Text 96 Bảng 5.12 Giá trị Anchor 96 Bảng 5.13 Xử lý Font chữ .98 Bảng 5.14 Các giá trị Font 99 Bảng 5.15 Vẽ hình ảnh 101 Bảng 5.16 Giá trị Image Anchor .103 Bảng 5.17 Các phương thức tịnh tiến .103 Bảng 5.18 Vùng xén 105 Bảng 6.1 Mô hình Record Store 107 Bảng 6.2 Lớp RecordStore 109 Bảng 6.3 Lớp RecordEnumeration .117 Bảng 6.4 Các giá trị hằng để sắp xếp record .118 Bảng 6.5 Lớp RecordListener .121 Bảng 7.1 Lớp Connector .128 Bảng 7.2 Mode Kết Nối 128 Bảng 7.3 Các Request Method chính 130 Bảng 7.4 Các phương thức set/get Request Method .131 Bảng 7.5 Các phương thức truy vấn HTTP Header 134 Bảng 7.6 Lấy thông số kết nối 137 Bảng 7.7 Lớp DatagramConnection .139 Bảng 7.8 Lớp Datagram 140 Bảng 7.9 Thuộc tính của SocketConnection .142 Bảng 7.10 Lớp SocketConnection 143 Bảng 7.11 Các interfaces chính của WMA .144 Bảng 9.1 Danh sách các Use Case 178 Bảng 9.2 Table ChuyenNganh 184 Bảng 9.3 Table SV 184 Bảng 9.4 Table MonHoc .185 Bảng 9.5 Table GV .185 Bảng 9.6 Table Lop .185 Bảng 9.7 Table Lop_MonLT 186 Bảng 9.8 Table Lop_MonTH 187 Bảng 9.9 Table PhanCongTH .187 Bảng 9.10 Table DangKyLT .187 Bảng 9.11 Table DangKyTH 187 Bảng 9.12 Table ThongBao 188 [...]... công nghệ rất mới để xây dựng các ứng dụng thương mại điện tử phân tán và giới thiệu chi tiết về ứng dụng cùng những đánh giá, tổng kết Chương 8 Giới thiệu về ứng dụng phân tán và web service Chương 9 Trình bày chi tiết về ứng dụng "Đăng Ký Học Phần" Chương 10 Đánh giá, tổng kết các kết quả đạt được và hướng phát triển trong tương lai Tuy đã đầu tư khá nhiều thì giờ và công sức vào luận văn này nhưng... biên dịch Java không biên dịch mã nguồn trực tiếp sang mã máy mà biên dịch sang một dạng mã trung gian mà máy ảo Java hiểu được (mã bytecode) Khi có nhu cầu sử dụng ứng dụng, máy ảo Java sẽ đọc mã trung gian này và dịch ra mã máy và thực thi; nhờ vào quá trình trung gian đó một ứng dụng Java có thể chạy trên bất kỳ môi trường nào có cài đặt máy ảo Java tương thích Được giới thiệu lần đầu vào năm 1995,... cho lập trình viên) và bên trên là các ứng dụng được xây dựng từ các lớp này, các ứng dụng này thường chỉ chạy trên các điện thoại của hãng đã cung cấp thư viện lơp OEM 17 Java Mobile 2.2.4 MIDlet Suite: Chúng ta gọi chương trình Java chạy trên thiết bị di động là một MIDlet MIDlet sẽ sử dụng các lớp cung cấp bởi CLDC và MIDP Một MIDlet Suite (một bộ MIDlet) chứa một hay nhiều ứng dụng MIDlet được nén... cụ để xây dựng ứng dụng J2ME Chúng ta có nhiều công cụ hỗ trợ cho quá trình biên dịch và thực thi MIDlet nhưng ban đầu chúng ta sẽ tìm hiểu cách sử dụng những công cụ cơ bản nhất và là công cụ chuẩn của J2ME Quá trình biên dịch và thực thi ứng dụng J2ME phải qua một số thao tác bằng dòng lệnh (command lines), chúng ta giả sử thư mục chứa mã nguồn là thư mục C:\Midlets Ta sẽ xây dựng một ứng dụng J2ME... để mô phỏng quá trình biên dịch và thực thi, ứng dụng có tên Welcome và file source code có tên Welcome .java C:\Midlets\Welcome\Welcome .java • Quá trình biên dịch và Pre-verify: Để biên dịch ta chuyển đến thư mục chứa ứng dụng (C:\Midlets\Welcome\) và gọi lệnh: javac -bootclasspath c:\j2me\midp1.0.3fcs\classes Welcome .java hoặc javac –bootclasspath %CLASSPATH% Welcome .java (CLASSPATH là biến môi trường... chức năng quản lý các ứng dụng Java, bao gồm: • Cho phép chọn và kích hoạt ứng dụng • Cho phép gỡ bỏ ứng dụng khỏi thiết bị 2.1.3 Máy ảo Java: Do các thiết bị di động dùng CLDC thường có tài nguyên hạn chế nên Sun đã đề ra máy ảo Java KVM phục vụ riêng cho các thiết bị này Máy ảo KVM thực chất là một bộ phận con của các máy ảo trên môi trường J2SE và J2EE nên cũng có nhiều hạn chế và khác biệt so với... cứu thông tin rất tiện lợi Do đó, xây dựng các ứng dụng cho điện thoại di động đang là một yêu cầu tất yếu trong xu thế hiện nay Ngành công nghiệp phần mềm cho các thiết bị di động được xem như một mảnh đất màu mỡ và hứa hẹn đem lại nhiều tỉ đô la doanh thu Hai hướng phát triển ứng dụng trên điện thoại di động phổ biến hiện nay là sử dụng ngôn ngữ C++ trên nền hệ điều hành Symbian và J2ME Các ứng dụng. .. thoại, hiện nay ứng dụng này chỉ chạy trên chương trình giả lập Tuy nhiên, chúng tôi hi vọng trong một tương lai rất gần, khi các thế hệ điện thoại mới có giá thành vừa phải ra đời và hỗ trợ một số công nghệ như WebService, mã hoá… mà chúng tôi đang sử dụng để xây dựng phần mềm thì ứng dụng này có thể được áp dụng rộng rãi trong thực tế cho sinh viên của khoa Cần phải nói thêm, ứng dụng hiện tại hoàn... mục tiêu Java nhắm đến cũng đã thay đổi khá nhiều Java hiện nay không chỉ nhắm đến họ máy tính để bàn đơn thuần; hai năm sau ngày đầu được ra mắt, một phiên bản Java mới là J2EE (Java 2 Enterprise Edition) đã được giới thiệu nhắm tới việc phát triển các ứng dụng có qui mô lớn hơn Phiên bản mới nhất được thêm vào dòng ngôn ngữ Java là J2ME (Java 2 Micro Edition) J2ME nhắm đến việc phát triển ứng dụng cho... khá cao Việc chuyển các ứng dụng thương mại từ môi trường web sang môi trường di động sẽ khiến sự tiện dụng tăng cao, số người sử dụng dịch vụ trực tuyến chắc chắn sẽ tăng nhanh vì đối với nhiều người chiếc điện thoại di động dễ sử dụng hơn rất nhiều so với chiếc máy tính "phức tạp và khó hiểu" Ứng dụng chúng tôi chọn thực hiện để bước chân vào lãnh vực khá mới mẻ này là ứng dụng "Đăng Ký Học Phần"