Chủ Nhật, 23 tháng 2, 2014

nghiên cứu JAVA MoBILE và xây dựng ứng dụng minh họa


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ác chữ viết tắt, thuật ngữ được sử dụng

API Application Program Interface
CDC Connected Device Configuration
CLDC Connected Limited Device Configuration
Configuration
Đặc tả qui định các thư viện gốc J2ME phải hỗ trợ cho một dòng
phần cứng.
DES Thuật toán mã hóa khóa bí mật 64 bits
GCF General Connection Framework
IIS Internet Information Services-Web server chuẩn trên Windows
J2EE Java 2 Enterpise Edition, phiên bản Java cho những dự án lớn.
J2ME Java 2 Micro Edition, phiên bản Java cho những thiết bị nhỏ.
J2SE
Java 2 Standard Edition, phiên bản Java ra đời đầu tiên, dành cho
PC thông thường.
JCP Tổ chức Java Community Process
JDK Java Development Kits
JSR
Java Specification Requests, những yêu cầu cần bổ sung cho các
phiên bản Java.
JSR-172 Thư viện truy xuất web service cho ngôn ngữ J2ME.
JSR-177 Thư viện mã hóa và bảo mật cho ngôn ngữ J2ME.
KVM Máy ảo Java cho môi trường CLDC.
MIDlet Tên gọi chung cho các ứng dụng J2ME.
MIDP Mobile Information Device Profile.
MMS
Multimedia Message Service, tin nhắn hình ảnh, âm thanh, video
cho di động.
PDA Personal Digital Assistant.
Profile Các tập thư viện cấp cao định nghĩa trên nền Configuration.
RMS RecordStore Management System, cơ chế lưu trữ của J2ME.


SMS
Short Message Service, tin nhắn thông thường cho điện thoại di
động.
SOAP
Simple Object Access Protocol, định dạng thông điệp của Web
Service.
Symbian Hệ điều hành cho điện thoại di động của hãng Symbian.
UDDI Universal Description, Discovery, and Integration
Web Service Giao thức gọi hàm từ xa dựa trên XML và HTTP.
WMA Wireless Message API
WSDL Web Service Definition Language
XML Extensible Markup Language



Java Mobile
Lời Nói Đầu

Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 và
theo thời gian, số lượng các thuê bao cũng như các nhà cung cấp dịch vụ di động tại
Việt Nam ngày càng tăng. Cùng với sự phát triển của số lượng thuê bao di động là
sự đa dạng hoá các dịch vụ hướng đến thiết bị di động. Ngày nay điện thoại di động
không chỉ còn mang chức năng gọi điện hay nhắn tin thông thường mà còn là một
thiết bị giải trí, tra 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 viết
trên nền Symbian có các ưu thế truy cập trực tiếp các tài nguyên của điện thoại cũng
như hỗ trợ hệ thống tập tin, thư mục… như máy tính cá nhân vì được hỗ trợ trực
tiếp bởi hệ điều hành. Tuy nhiên hệ điều hành Symbian lại có kích thước khá lớn
nên chỉ có ở các thế hệ điện thoại tương đối cao cấp, và xây dựng ứng dụng dùng
Symbian API cũng phức tạp hơn.
Đối trọng với Symbian API là công nghệ J2ME với kích thước nhỏ gọn,
tiện dụng, được hỗ trợ bởi hầu hết các thế hệ điện thoại mới ra đời, kể cả các điện
thoại có hệ điều hành Symbian. J2ME không những là một ngôn ngữ hướng đến các
thiết bị di động mà còn là ngôn ngữ chính để lập trình trên các thiết bị gia dụng, thẻ
tín dụng điện tử và các thiết bị thông minh khác. Chúng ta có thể nói đối tượng của
ngôn ngữ J2ME là rộng hơn rất nhiều so với C++ trên nền Symbian. Tại thời điểm
hiện tại, ngôn ngữ J2ME không hỗ trợ được nhiều tính năng như C++ trên Symbian
nhưng lại có những ưu điểm trội hơn.
J2ME là một ngôn ngữ nhỏ, gọn nhưng rất chặt chẽ và dễ nắm bắt, với
những lập trình viên đã có kinh nghiệm với Java việc lập trình với J2ME trở nên rất
1

Java Mobile
dễ dàng. J2ME còn là một ngôn ngữ được các tổ chức mã nguồn mở ủng hộ mạnh
mẽ và phát triển rất nhanh chóng, JCP (Java Community Process-
http://www.jcp.org) là một chương trình do Sun thành lập luôn tiếp thu các ý kiến
và đưa ra các đặc tả mới dành cho Java nói chung và J2ME nói riêng. Các đặc tả
này thường có tiếp đầu ngữ JSR và là các tính năng bổ sung mới cho J2ME.
Những JSR quan trọng có thể được nhắc đến như JSR-82 (Bluetooth), JSR
205 (Gửi tin nhắn SMS, MMS), JSR-172 (Web service), JSR-177 (Security and
Trust Services), JSR 184 (3D Game)… Các đặc tả này ngày càng phong phú và
phần nào phát triển nhanh hơn cả sự phát triển của phần cứng.
Thật khó so sánh giữa các dòng ngôn ngữ lập trình với nhau vì mỗi loại đều
có ưu và khuyết điểm riêng. Trong luận văn của mình, chúng tôi chọn nghiên cứu
về J2ME vì những ưu điểm khá rõ ràng đã nêu trên, mặt khác chúng tôi cũng muốn
thử sức ở một lãnh vực khá mới mẻ là tiếp cận với phần mềm mã nguồn mở.
Về chương trình ứng dụng, tính khả thi và thực tế ngày càng được đề cao.
Chúng tôi nhận thấy xu hướng mở rộng các ứng dụng trên web sang điện thoại di
động đang được chú trọng. Thương mại điện tử (e-commerce) đang tiến dần sang
thương mại di động (m-commerce). Với thực trạng Việt Nam hiện nay, số người sở
hữu máy vi tính cá nhân, đặc biệt là máy tính xách tay chưa nhiều nhưng tỉ lệ số
người có điện thoại di động lại 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" qua mạng di động. Đối với sinh viên khoa
công nghệ thông tin, hệ thống đăng ký học phần SMS qua môi trường web là một
ứng dụng rất quen thuộc. Chúng tôi muốn phát triển ứng dụng của mình như một
mở rộng của hệ thống đăng ký học phần này trên điện thoại di động nhằm hỗ trợ các
bạn sinh viên có thể sử dụng các tiện ích của hệ thống mà không cần phải có máy
2

Không có nhận xét nào:

Đăng nhận xét