Các khái niệm: môi trường phát triển ứng dụng hoặc ứng dụng, chẳng hạn như: menu, database, file systems, related runtime libraries, giao diện đồ họa người dùng graphical user interface,
Trang 1Lập trình cho các thiết bị di động
Tên giảng viên:
GVC.ThS Đoàn Hòa Minh, Đơn vị: Bộ Môn Mạng Máy Tính &
Trang 2Mục tiêu - Chuẩn đầu ra
di động
• Chuẩn đầu ra:
– Có các kiến thức cơ bản về công nghệ và kỹ thuật phát triển phần mềm ứng dụng cho thiết bị di động – Có kỹ năng lập trình phát triển phần mềm ứng dụng
Trang 3Nội dung [1]
Chương 1: Tổng quan (các khái niệm căn bản)
động (Mobile devices) và lập trình di động (Mobile programming)
động
thoại di động
Trang 4Nội dung [2]
CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG TRÊN NỀN TẢNG ANDROID
2.1 TỔNG QUAN VỀ NỀN TẢNG ANDROID
2.2 Máy ảo DALVIK
2.3 Chu kỳ sống của ứng dụng android
2.4 Công cụ lập trình
2.5 Một số thành phần trong android project
2.6 Các thành phần trong ứng dụng android
Trang 6• Vẽ một đối tượng đơn giản
• Làm cho đối tượng di chuyển
• Xử lý sự kiện trong lập trình mức thấp – Lập trình luồng trong giao diện mức thấp
– Lập trình với SurfaceView
Trang 86.5.1 Sử dụng HTTP với GET Request
6.5.2 Sử dụng HTTP với POST Request
Trang 9Tài liệu học tập
Bài giảng và slide
Tài liệu tham khảo:
1) Mobile Computing Principles Designing and
Developing Mobile Applications with UML and XML/
Reza B’Fax - Cambidge University Press, 2005
2) Beginning Android 4 Application Developmant –
Wei Meng Lee – John Viley & Sons Inc - 2012
3) Mobile Platforms and development Environments – Sumi Helal, Raja Bose, Wendong Li – Morgan &
Trang 10Phương pháp học tập và đánh giá
– Bài giảng trên lớp
– Tự học, tham khảo và trao đổi trên Website
e-learning của Khoa CNTT-TT
Trang 11Giảng viên chính, Khoa CNTT-TT
Trang 12Chương 1: CÁC KHÁI NIỆM CĂN BẢN
1.1 Điện toán di động (Mobile computing), thiết bị di
động (Mobile devices) và lập trình di động (Mobile programming)
1.1.1 Điện toán di động và thiết bị di động
Điện toán di động: là chức năng tính toán của hệ thống di động, chức năng tính toán được hiểu bao hàm cả việc lưu trữ và trao đổi thông tin
Thiết bị di động: là các hệ thống mà chúng có thể di chuyển dễ dàng và
có khả năng tính toán trong khi chúng đang di động
Ví dụ: Laptops, PDAs (Personal Digital Assistants), Mobile phone, TV set-top boxes, dụng cụ đo lường từ xa trên xe, các thiết bị nhúng,…
Hệ thống di động thường có tài nguyên phần cứng giới hạn, nên chúng cũng
Điện thoại di động là thiết bị di động tiêu biểu nhất, nên trong giáo trình này ta khảo sát tập trung vào điện thoại di động
Cơ sở phân phân biệt hệ thống tính toán di động với các hệ thống tính toán khác là:
- Sự khác nhau về công việc mà chúng được thiết kế để thực hiện;
- Cách mà chúng được thiết kế;
- Cách chúng vận hành
Có nhiều việc một hệ thống cố định không thực hiện được nhưng hệ thống di động có thể thực hiện được
Một thiết bị tính toán di động cũng như bất kỳ một hệ thống nào khác,
nó có thể kết nối mạng Tuy nhiên, một thiết bị di động có thể không phải lúc nào cũng là thiết bị có thể kết nối mạng không dây (Ví dụ: calculators, electronic watches, máy chơi game, máy hát nhạc PM3,…)
Trang 13Hệ thống cố định và hệ thống di động chắc chắn sẽ có sự khác biệt, nhưng điều này không có nghĩa là chúng không có bất kỳ điểm chung nào
Có 4 mảng trong lĩnh vực di động: người dùng di động; thiết bị di động; ứng dụng di động và mạng di động
Kích thước của sự di động (Dimensions of mobility): là tập hợp các tính chất để phân biệt hệ thống tính toán di động và hệ thống tính toán
cố định Bao gồm: (hình 1.1)
1) Sự nhận biết vị trí (Location awareness)
2) Chất lượng kết nối mạng của dịch vụ (Network connectivity
quality of service, QOS) 3) Sự hạn chế về khả năng của thiết bị (Limited device capability - particularly storage and CPU)
4) Sự hạn chế về nguồn điện (Limited power supply)
5) Sự hỗ trợ về mặt đa dạng của giao diện người dùng (Support for a wide variety of user interfaces)
6) Sự tăng nhanh về số lượng platform
7) Sự giao dịch tích cực (Active transaction)
Hình 1.1
Điều kiện di động (Mobile condition) là sự khác biệt giữa người dùng
di động với người dùng cố định, như sau:
1) Người dùng di động là có thể hoặc đang di chuyển giữa vị trí được biết hay các vị trí không biết
2) Người dùng di động không tập trung vào việc tính toán
Trang 143) Người dùng di động thường đòi hỏi ở mức cao sự tức thì và đáp ứng nhanh từ hệ thống
4) Người dùng di động thay đổi công việc thường xuyên hoặc đột ngột 5) Người dùng di động có thể đòi hỏi truy xuất đến hệ thống mọi nơi
và mọi lúc
Các thuộc tính của người dung di động: thay đổi vị trí, không tập trung (lack of focus), đòi hỏi tức thì, thay đổi đột ngột trong công việc, mọi nơi và mọi lúc
1.1.2 Khái niệm lập trình di động (Mobile programming)
Lập trình di động là việc xây dựng một phần mềm ứng dụng hay một chức năng cho một thiết bị di động trên một nền tảng (platform) xác định Tiến trình bao gồm: thu thập các yêu cầu, chọn kiến trúc phần mềm di động và mẫu thiết kế (design pattern), viết chương trình, thử, gở lổi/ sửa chữa, và bảo trì phần mềm
Sự khác nhau cơ bản giữa điện toán di động và lập trình di động: Điện toán di động là một chức năng của thiết bị di động trong khi lập trình di động là quá trình xây dựng chức năng cho thiết bị di động của người lập trình
1.1.3 Kiến trúc tổng quát của một điện thoại di động có thể lập trình:
Trang 15• Nhà sản xuất cung cấp việc truy cập đến platform của họ (với một số hạn chế), việc sử dụng nhân (kernel) và hardware drivers của họ, bất kỳ điều gì
mà có trong phần mềm mà có thể được thay đổi trên điện thoại di động, chì
có platform phần cứng là không đổi
• Bên cạnh khả năng lập trình, điện thoại di động có có tính mềm dẻo Một điện thoại có nhiều khả năng và chức năng khác nhau có thể được chia thành 3 nhóm: giao diện người dùng, giao diện truyền thông và các nguồn tài nguyên được cài đặt sẵn (built-in)
• Giao diện người dùng (user interface) tiêu biểu bao gồm: the speaker,
microphone, camera, display, built-in sensors and keyboard
• Các gnuồn tài nguyên cài đặt sẵn bao gồm: the battery, CPU, và bộ nhớ
• Giao diện truyền thông tiêu biểu bao gồm: truyền thông tê bào (cellular) và truyền thông tầm ngắn (short-range)
1.2 Mạng di động
1.2.1 Quá trình phát triển của mạng di động [5]
Hoạt động và quá trình phát triển của các thiết bị di động gắn liền với mạng di động và quá trình phát triển của mạng Quá trình phát triển của mạng di động trải qua các thế hệ:
Trang 16Thế hệ thứ nhất (1G: First Generation): Điện thoại di động chỉ có dịch vụ thoại (voice services), không có dịch vụ khác (gia tăng)
Đặc trưng của mạng 1G là :
- Kỹ thuật chuyển mạch tương tự (circuit-switched)
- Dung lượng (capacity) thấp
- Xác suất rớt cuộc gọi cao
- Khả năng chuyển cuộc gọi không tin cậy
- Chất lượng âm thanh không tốt
- Không có chế độ bảo mật
Thế hệ thứ hai (2G):
Các hệ thống kĩ thuật số ở thế hệ thứ 2 bao gồm: GSM, IS-136 TDMA và CDMA, chuyển từ hệ thống tương tự (analog) sang hệ thống số (digital), nhiều dịch vụ gia tăng được đưa vào, chẳng hạn như: short message servive (SMS) và kết nối dữ liệu trên internet Mạng 2G có thể phân ra 2 loại : mạng 2G dựa trên nền TDMA (Time Division Multiple Access) và mạng 2G dựa trên nền CDMA (Code Division Multiple Access) Sự thay đổi quan trọng là sự phân chia thành 2 lĩnh vực: cung cấp hạ tầng cơ sở mạng
và cung cấp dịch vụ mạng Hình 1.2 trình bày sự phụ thuộc lẫn nhau giữa 4 thành phần trong lĩnh vực di động
Đặc trưng của mạng 2G là :
- Kỹ thuật chuyển mạch số
- Dung lượng lớn
- Bảo mật cao
- Nhiều dịch vụ kèm theo như truyền dữ liệu, fax, SMS (tin hắn),
Thế hệ thứ ba (3G): Không mang đến các dịch vụ mới có tính cách mạng trong thực tế Tuy nhiên, có một bài học quan trọng từ thế hệ mới
dịch vụ” Sự thay đổi chính từ thê hệ 2G sang 3G nằm trong lớp nghi
cho phép truyền cả dữ liệu thoại và dữ liệu ngoài thoại (tải dữ liệu, gửi email, tin nhắn nhanh, hình ảnh ) Và điểm nổi bật nhất của mạng 3G
so với mạng 2G nằm ở khả năng cung ứng truyền thông gói tốc độ cao nhằm triển khai các dịch vụ truyền thông đa phương tiện trên mạng di động
Đặc trưng của hệ thống 3G là :
Internet, e-mail, xem video trực tuyến, …
Trang 171.2.2 Dịch vụ cá nhân và dịch vụ cộng đồng (personal and cummunity services)
- Dịch vụ cá nhân: bao gồm tất cả các dịch vụ được dùng bởi mỗi khách hàng với không có sự tương tác với các khách hàng khác hoặc sự tương tác rất hạn chế
- Dịch vụ cộng đồng: là các dịch vụ được thực hiện có sự tương tác giữa các khách hàng
- Cả hai, dịch vụ các nhân và dịch vụ cộng đồng được phân thành các dịch
vụ có sự hỗ trợ của mạng không dây và không có sự hỗ trợ của mạng không dây
- Sự hỗ trợ của mạng không dây được thực hiện bởi các chuẩn kết nối GSM, GPRS, kết nối dữ liệu 3G, Bluetooth, hay WLAN
Hình 1.3 phân biệt một số dịch vụ là dịch vụ cá nhân hoặc cộng đồng
Trang 181.2.3 Hệ thống truyền thông tế bào
– Mạng tế bào phát triển từ dịch vụ thoại thuần túy để hỗ trợ cho dịch vụ dữ
liệu
– Kiến trúc truyền thông bị thống trị bởi tuyền thông point-to-point giữa
một điện thoại và hệ thống trạm (call base station), có thể xem như là cầu
nối giữa lĩnh vực không dây và lĩnh vực có dây
– GMS là hệ thống TDMA với kỹ thuật CSD (Circuit Switched Data)
(9.6kbps) và HSCSD (High Speed Circuit Switched Data ) (14.4kbps)
– GPRS (General Package Radio Service) là một sự mở rộng của CDS và
HSCDS Nó dùng kỹ thuật bó (bundling) để tăng tốc độ dữ liệu Với kỹ
thuật bó, không dùng khe thời gian TDMA, nó cung cấp một tốc độ
truyền thực tế là 40-50 kbps, và khả năng lý thuyết là 171.2kbps (mạng
3G) GPRS có thể tính cước trên số lượng dữ liệu thay vì tính trên thời
gian như kỹ thuật chuyển mạch
– EDGE (Enhanced Data Rates for GMS Evolution ) hay EGPRS
(Enhanced GPRS) mang đến tốc độ truyền dữ liệu cao hơn, có thể lên đến
473.6kbps
– UMTS (Universal mobile Telecommunications System) đưa vào kỹ thuật
3G dựa trên W-CDMA, UMTS được chuẩn hóa bởi 3GPP cung cấp tốc
độ dữ liệu 2 Mbps phạm vi tê bào UMTS và 384kbps đầu cuối người
dùng
Trang 19– HSDPA (3G High-Speed Downlink Packet Access) đạt tới 28.8 Mbps cho download và HSUPA (3G High-Speed Uplink Packet Access) đạt tới 5.76 Mbps cho uploads Nhưng sự phát triển không dừng ở đó, một kế hoạch mang tên Long Term Evolution (LTE) tiếp tục chuẩn hóa cho 3G và đã cho người dùng tốc độ truyền 100Mbps cho download và 50 Mbps cho upload vào năm 2009 (Ericsson, Nokia, và Motorola)
1.2.4 Hệ thống truyền thông tầm ngắn:
1.2.4.1 WPAN (Wireless Personal Area Networks): là mạng không dây cá nhân, mạng được tạo bởi sự kết nối vô tuyến trong tầm ngắn giữa các thiết bị ngoại vi như tai nghe, đồng hồ, máy in, bàn phím, chuột, khóa USB với máy tính
cá nhân, điện thoại di động v.v Sự kết nối vô tuyến trong mạng WPAN có thể dùng các công nghệ như Bluetooth, Wibree, UWB WPAN có tầm phủ sóng gần
cỡ chục mét, cho phép kết nối các thiết bị ngoại vi như máy in, loa, đến một máy tính cá nhân, điện thoại di động
UWB (Ultra-Wide Band), tiếng Việt gọi là Công Nghệ Siêu Băng Rộng , kỹ thuật truyền tín hiệu không dây bằng cách sử dụng các xung (pulse) tần số rất cao Một kênh vô tuyến được gọi là siêu băng rộng khi băng thông của nó lớn hơn 1/4 tần số trung tâm sóng mang của nó Do xung tần số cao nên tín hiệu chiếm một dải băng thông rộng nên công nghệ này được đặt tên là Ultra-Wide Band (siêu băng
Trang 20rộng) Lợi điểm của công nghệ UWB là cho phép truyền dữ liệu xung với tốc độ rất cao từ vài trăm Mbps đến vài Gbps Nhược điểm của công nghệ UWB là độ suy hao cao nên chỉ truyền trong phạm vi ngắn, do đó UWB chủ yếu được phát triển cho mạng WPAN hay WLAN nhỏ
Wibree là công nghệ kết nối tầm ngắn (tầm 10 mét) được giới thiệu bởi Nokia năm 2001 dưới dạng một chuẩn mở, để cùng hoạt động chung bên cạnh Bluetooth Điểm nổi bật của Wibree là ít tiêu hao năng lượng (10 lần ít hơn Bluetooth) trong khi cho cùng một tốc độ truyền truyền dữ liệu (tầm 1Mbps) Do đó, Wibree có thể tích hợp với đồng hộ, chuột không dây, bàn phím không dây, cảm ứng thể thao và nhiều thiết bị ngoại vi khác, sau đó chúng được kết nối với máy tính cá nhân hay điện thoại di động
1.2.4.2 WLAN (Wireless Local Area Networks):
Mạng LAN không dây là mạng cục bộ gồm các máy tính liên lạc với nhau bằng sóng radio theo chuẩn IEEE 802.11 định nghĩa tầng vật lý và tầng MAC cho một mạng nội bộ không dây Chuẩn này định nghĩa ba tầng vật lý khác nhau cho mạng LAN không dây 802.11, mỗi tầng hoạt động ở một dải tần khác nhau và sử dụng các tốc độ 1 Mbps và 2 Mbps Thành tố cơ bản của kiến trúc 802.11 là tế bào (cell), với tên gọi trong 802.11 là BSS (basic service set - bộ dịch vụ cơ bản) Mỗi BSS thường gồm một vài máy trạm không dây và một trạm cơ sở trung tâm được gọi là AP (access point - điểm truy cập) Các máy trạm (có thể di động hoặc cố định) và trạm trung tâm liên lạc với nhau bằng giao thức MAC IEEE 802.11 không dây Có thể kết nối nhiều trạm AP với nhau bằng mạng hữu tuyến Ethernet hoặc một kênh không dây khác để tạo một hệ thống phân tán (DS - distributed system) Đối với các giao thức ở tầng cao hơn, hệ thống phân tán này như là một mạng 802 đơn
Các máy trạm dùng chuẩn IEEE 802.11 có thể nhóm lại với nhau để tạo thành một mạng ad hoc - mạng không có điều khiển trung tâm và không có kết nối với "thế giới bên ngoài" Trong trường hợp này, mạng được hình thành tức thời khi một số thiết bị di động tình cờ thấy mình đang ở gần nhau trong khi đang có nhu cầu liên lạc mà không tìm thấy một cơ sở hạ tầng mạng sẵn có tại chỗ (chẳng hạn một BBS 802.11 với một trạm AP) Một ví dụ về mạng ad hoc được hình thành là khi một vài người mang máy tính xách tay gặp nhau tại một bến tầu và muốn trao đổi dữ liệu mà không có một trạm AP ở gần đó
Tương tự trong như mạng Ethernet hữu tuyến 802.3, các máy trạm trong mạng LAN không dây 802.11 phải phối hợp với nhau khi dùng chung môi trường truyền dẫn (tần số radio) Giao thức MAC có nhiệm vụ điều khiển sự phối hợp này MAC IEEE 802.11 là giao thức CSMA/CA (carrier sense multiple access with collision avoidance)
Trang 21IEEE802.11: là một tập các chuẩn của tổ chức IEEE (Institute of Electrical and Electronic Engineers) bao gồm các đặc tả kỹ thuật liên quan đến hệ thống mạng không dây Chuẩn IEEE 802.11 mô tả một giao tiếp "truyền qua không khí" (over-the-air) sử dụng sóng vô tuyến để truyền nhận tín hiệu giữa một thiết bị không dây
và tổng đài hoặc điểm truy cập (access point), hoặc giữa 2 hay nhiều thiết bị không dây với nhau (mô hình ad-hoc)
1.2.4.3 Bluetooth: là công nghệ truyền dữ liệu không dây dùng trong mạng vô tuyến cá nhân WPAN, nhằm kết nối các thiết bị như điện thoại di động, máy tính xách tay, máy in, máy ảnh số, và thậm chí cả tủ lạnh, lò viba, máy điều hòa nhiệt
độ Công nghệ Bluetooth sử dụng băng tần ISM, từ 2,402 GHz tới 2,480 GHz (được chia thành 79 kênh) Bluetooth sử dụng kỹ thuật trải phổ nhảy tần FHSS để tránh giao thoa Bluetooth có thể phân thành 3 loại tùy theo tầm phủ sóng (1 mét,
10 mét và 100 mét) và năng lượng phát tối đa cho phép tương ứng (1 mW, 2,5
mW và 100 mW) Tốc độ truyền dữ liệu của Bluetooth đạt tầm 1 Mbps Với phiên bản 2.0 (Bluetooth 2.0 + EDR), tốc độ tăng lên được đến 3 Mbps Đôi khi UWB cũng được xem như là phiên bản 3.0 của Bluetooth với tốc độ có thể lên đến 480 Mbps
– được giới thiệu bởi Ericsson trong năm 1999 cho thiết bị di động, để dễ dàng trao đổi dữ liệu giữa các điện thoại di động, PDA, laptop và PC Sáng kiến này đã được tiếp nhận bới IEEE và chuẩn hóa theo IEE 802.15.1 Bluetooth được thiết kế như một công nghệ giá thấp với năng lượng tiêu thụ thấp cho truyền thông tầm ngắn và có thể gặp trên các điện thoại di động Công suất tiêu thụ được hướng đến 3 loại công suất tùy thuộc khoảng cách truyền 1m, 10m và 100m Bluetooth với phiên bản 1.2 cung cấp các kênh truyền thông với chất lượng dịch vụ (QoS:quality of service) ngay cả cho dịch vụ thoại
Piconet
– Trong truyền thông Bluetooth, các thiết bị cùng cấp liên kết trong 1 nhóm gọi là piconet Trong đó có 1 thiết bị đóng vai trò master, còn lại là các slave Có tối đa 7 Slave dạng Active và 255 Slave dạng Parked (Inactive) trong 1 piconet
– Các atctive slave có thể truyền thông với nhau thông qua master Các thiết
bị ở trạng thái này được phân biệt thông qua 1 địa chỉ MAC (Media Access Control) hay AMA (Active Member Address ) - đó là con số gồm 3 bit Nên trong 1 Piconet có tối đa 8 thiết bị ở trang thái này
– Parked slave ở trạng thái "ngủ" và sẽ được Master gọi dậy bằng tín hiệu
"beacon" (tín hiệu báo hiệu) Các packed slave được đánh địa chỉ thông qua địa chỉ PMA (Packed Member Address) Đây là con số 8 bits, nên có
Trang 22tối đa 255 thiết bị ở trạng thái này trong 1 Piconet Tại 1 thời điểm chỉ 1 parked slave được đồng bộ với Piconet
Hình 1.7: Một piconet
• Scatternet:
– Các piconet có thể kết nối nhau tạo thành scatternet thông qua các bridge Một bridge có thể là một master hoặc một slave
– Có 2 loại kết nối, đó là kết nối synchronous communication oriented (SCO)
và kết nối asynchronous-less (ACL) SCO chủ yếu dùng cho dịch vụ thoại, trong khi ACL dùng cho sự truyền dữ liệu bất kỳ
– Vai trò của 1 thiết bị trong piconet là không cố định, có nghĩa là nó có thể thay: đổi từ master thành slave và ngược lại Ví dụ nếu master không đủ khả năng cung cấp tài nguyên phục vụ cho piconet của mình thì nó sẽ chuyển quyền cho 1 slave khác giàu tài nguyên hơn, mạnh hơn, (bởi vì trong 1 piconet thì clock và kiểu hopping đã được đồng bộ)
Trang 23Hình 1.8: Một mạng Scatternet gồm 2 piconet
– Bluetooth dựa trên kỹ thuật TDMA/TDD vớichiều dài khe là 0.625 ms Một frame bao gồm một uplink phase và một downlink phase với ít nhất 1 khe thời gian cho 1 pha Mỗi gói truyền thông được nhận biết bởi thiết bị đối tác
– Để tăng tốc độ truyền, 1, 3 hoặc 5 khe có thể gôm thành 1 nhóm cho uplink, thiết bị thu luôn dùng chỉ 1 khe cho acknowledgement
– Với Bluetooth version 2.0 tốc độ truyền dữ liệu có thể lên đến 3Mbps – Cuối năm 2009, Bluetooth 3.0 được giới thiệu Chuẩn Bluetooth mới sẽ được tích hợp với giao thức 802.11 nên khi truyền dữ liệu, tốc độ có thể tương đương trong mạng Wi-Fi
– Trong tương lai,Bluetooth sẽ được kết hợp với kỹ thuật ultra wide-band (UWB) technology UWB cho phép nâng tốc độ truyền lên đến 400Mbit/s, tuy nhiên mức tiêu hao năng lượng sẽ tăng gấp 2 hoặc 3 lần
Trang 241.3 Các nền tảng (platform) phát triển công nghệ di động
1.3.1 Các khái niệm:
môi trường phát triển ứng dụng hoặc ứng dụng, chẳng hạn như: menu, database, file systems, related runtime libraries, giao diện đồ họa người dùng (graphical user interface),… Chúng là công cụ hữu hiệu cho việc phát triển phần mềm, là một trong những phương tiện được dùng phổ biến trong việc lập trình Khi lập trình trong một môi trường xác định, người lập trình phải biết các trừu tượng cơ bản được áp dụng trong môi trường
đó, và biết cách mà các trừu tượng dự định sẽ được dùng Đây là một kỹ năng
Về mặt nguyên tắc, người dùng một trừu tượng có thể bỏ qua các chi tiết nằm dưới sự thực thi, các chi tiết nằm ở phần cứng và phần mềm cơ sở hạ tầng (infrastructure software) được dùng như kỹ thuật thực thi của một trừu tượng nào đó Tuy nhiên, trong thực tế, trong khi viết chương trình, đôi khi các chi tiết này trở nên có thể nhìn thấy được bởi người phát triển phần mềm hay ngay cả người dùng hệ thống, gọi là sự rò rỉ trừu tượng
Trang 25(Leaking abstructions) Tùy trường hợp, sự rò rỉ trừu tượng có thể có lợi hoặc laàm giảm hiệu quả thực thi chương trình
2 Nền tảng (Platform)
Platform (tôi muốn dùng nguyên từ tiếng Anh) là nền tảng công nghệ của một hệ tính toán, trên đó người ta xây dựng các chương trình ứng dụng
và các trừu tượng Nhiều khi người ta gọi tên một platform bằng chính hệ điều hành tương ứng với nó
Sự phát sinh nhanh chóng nhiều platform có ý nghĩa rất quan trọng đến kiến trúc phần mềm của thiết bị di động, sự thiết kế và phát triển các ứng dụng Nhà phát triển phần mềm ứng dụng mong muốn sao cho việc phát triển ứng dụng không phụ thuộc platform Nghĩa là khi xây dựng một ứng dụng không cần dựa trên mộ platform cụ thể, nhưng lại có thể chạy trên nhiều platform khác nhau Tuy nhiên, các nhà sản xuất platform luôn cố gắng tạo ra các hạn chế để chống lại xu hướng này Vì vậy, ngày nay có nhiều platform cạnh tranh với nhau như: Java J2ME, Symbian, BREW, iOS cho iPhone của Apple, Blackberry OS của RIM, WebOS, Android, Windows Mobile của Microsoft và Windows phone cho các thíết bị di động dựa trên kiến trúc ARM (Arcorn RISC Machine)
3 Ứng dụng (Applications)
Là các phần mềm cho người dùng được lập trình viên phát triển như chương trình xem đa phương tiện, quản lý công việc, trò chơi, Bên cạnh đó cũng có các ứng dụng thiết yếu được tích hợp sẵn như: danh bạ, lịch, quay phim, gọi điện,…
Ứng dụng độc lập (Stand-alone Applications): là các ứng dụng có thể tải về
và sau đó được thực hiện trên thiết bị mà không cần thiết phải tiếp tục kết nối mạng hoặc chỉ cần kết nối định kỳ Chẳng hạn như một số phần mềm trò chơi Ứng dụng loại này có thể được xây dựng cho các thiết bị có cùng platform trong hệ thống thick-client client server
4 Môi trường phát triển phần mềm (SDE :Software development environment) và môi trường phát triển tích hợp (IDE: integrated development environment)
Môi trường phát triển phần mềm (SDE) là một tổng thể mà nó cung cấp toàn bộ các phương tiện để người lập trình máy tính phát triển phần mềm Một SDE có thể bao gồm:
- Công cụ quản lý cần thiết;
- Công cụ mô hình hóa thiết kế;
- Công cụ tạo ra văn bản, tài liệu;
Trang 26- Môi trường phát triển tích hợp (IDE)
- Công cụ phân tích mã;
- Công cụ tra cứu mã;
- Công cụ kiểm tra mã;
- Công cụ xây dựng phần mềm (compile, link);
- Kho chứa tài nguyên (quản lý cấu hình);
- Công cụ dò tìm và báo sự cố
Ví dụ (Hình 1.10):
Một hệ thống bao gồm: một máy chủ (Web server), một máy tính đầu cuối (Computer terminal) được ghép với máy chủ từ xa thông qua mạng với một trình duyệt web và một platform thử (Test platform) ở bên ngoài được kết nối với máy tính đầu cuối Platform thử bao gồm: một thiết bị đích (Target processor) và một mạch giao diện có thể vận hành truyền thông giữa máy tính đầu cuối và thiết bị đích Server làm chủ một công cụ phát triển sẳn sàng cho việc tải dữ liệu với trình duyệt web thông qua mạng Công cụ phát triển bao gồm: một hay nhiều applet chạy bởi trình duyệt web, trình duyệt web được hiển thị bởi một hay nhiều trang web nhằm cung cấp một giao diện người dùng cho công cụ phát triển mà nó cung cấp sự truy xuất tới một hay nhiều applet Một hay nhiều applet được lập trình với sự hỗ trợ bởi ít
Vì vậy khi chạy bởi trình duyệt web, mạch giao diện sẽ tải mã chương trình
từ máy tính đầu cuối để thử trên thiết bị đích
Trang 27Hình 1.10
Môi trường phát triển tích hợp (IDE) cũng được gọi là môi trường thiết
kế tích hợp (integrated design environment) hay môi trường gỡ lỗi tích hợp (integrated debugging environment) là một phần mềm ứng dụng mà nó cung cấp toàn bộ các phương tiện để người lập trình máy tính phát triển phần mềm Một IDE bao gồm:
- Bộ biên tập mã nguồn (source code editor)
- Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter)
- Các công cụ (build automation tools)
Để một chương trình viết bằng một mã có thể chạy trên các platform khác nhau, người ta tạo ra các khung (framework) và các công cụ (tool) nền để phát triển phần mềm ứng dụng như: Máy ảo Java (Java Virtual Machine) của
thuẩn sau: cần có một lớp phần mềm (chẳng hạn như máy ảo), đó là trừu tượng mà nó giúp người viết phần mềm ứng dụng không cần quan tâm đến các đặc tính phần cứng của thiết bị di động, nhờ đó việc viết phần mềm ứng
hình thành, hiệu quả hoạt động của thiết bị hạn chế và các yêu cầu về cấu
và công cụ
6 Khung N-Tier Client-Server
a Thin-Client Wireless Client-Server:
Kiến trúc này đòi hỏi client kết nối mạng liên tục và ổn định, tương ứng với tập các đặc tính kỹ thuật chung nhỏ nhất của các thiết bị và platform Vì vậy, mô hình này được thực thi bởi các “gia đình” platform và thiết bị với các trình duyệt phù hợp Các trình duyệt với cùng đặc tính kỹ thuật có thể thực thi trên mỗi thiết bị trong môi trường client-server Trình duyệt cho phép tải và trả về mã đánh dấu (markup), ngay cả plug-in Phương pháp này tương tự như phương pháp mô hình web, mà trong đó các trình duyệt được thực thi cho
Trang 28nhiều hệ điều hành khác nhau, nhà phát triển web không cần lo lắng
về môi trường mà trong đó trình duyệt hoạt động
Giao thức truy xuất / ứng dụng không dây (WAP: Wireless Access/ Application Protocol) và giao diện người dùng ngôn ngữ đánh dấu
việc xây dựng các ứng dụng thin-client wireless với một kiến trúc Tier client-server
N-b Thick-Client Wireless Client-Server:
Ứng dụng khách hàng trên thiết bị di động có thể là do người dùng đặt hàng Vì vậy, nếu thick client truyền thông với server, nó có thể thực thi vài việc và server thực hiện các việc khác
Các kiến trúc thick-client-server cố định dùng client như là một bộ lưu trữ dữ liệu phụ cho các ứng dụng khi client ngắt kết nối với mạng (thực hiện logic kinh doanh không cần tập trung hóa)
Việc thực hiện kiến trúc này cho thiết bị di động khó khăn hơn, do thiết bị di động có tài nguyên rất hạn chế Công nghệ hiện nay có thể khắc phục sự hạn chế này, chẳng hạn như điện thọai thông minh (smart phone) và máy tính bảng (tablet computer) có CPU mạnh và bộ nhớ lớn không kém các PC Tuy nhiên, có vấn đề khác, đó là: Ta phải phân bố phần mềm như thế nào cho một dải rộng thiết bị? Ta phải viết phần mềm như thế nào cho một số lớn các platform khác nhau?
BREW Java NET
Android iOS
Mobile platform
RIM Hình 1.11: Vài sản phẩm trong các loại khác nhau của khung N-Tier Client-Server và giải pháp
1.3.2 Giới thiệu sơ lược các platform hiện đang tồn tại và phát triển:
Các platform cho phép phát triển kiến trúc thick-client cho thiết bị di động có 3 giải pháp:
Trang 29(1) Xây dựng một hệ điều hành hay một máy ảo (virtual machine) trên đỉnh của phần cứng Nhờ vậy, nó cho khả năng viết một lần cho nhiều platform, không cần phải thay đổi mã cho các platform khác nhau, cho phép người lập trình ứng dụng tạo ra các phần mềm ứng dụng cho nhiều platform khác nhau trên một môi trường phát triển
(2) Cung cấp môi trường lập trình trực tiếp trên đỉnh của phần cứng (ASIC, EEPROM,…) Chẳng hạn như các công ty Qualcomn (với nền tảng BREW); Texas Instruments, …
(3) Cung cấp nhiều môi trường lập trình với nhiều ngôn ngữ lập trình khác nhau, sau đó biên dịch sang một ngôn ngữ trung gian (Bytecode) và ứng dụng chỉ chạy trên một hệ điều hành (Widow Mobile)
Trong thực tế, các nhà sản xuất thiết bị muốn có sự khác biệt về phần cứng với đối thủ của họ Một cách để thực hiện mong muốn này là buộc các nhà phát triển phần mềm viết chương trình rất đặc thù cho các platform của thiết bị bằng ngôn ngữ
hoặc môi trường giống như BREW
Các hệ điều hành thông dụng hiện nay cho phép các ứng dụng được viết với kiến trúc không nhiều lệnh mức thấp Chúng cũng cho phép nhiều ứng dụng có thể chạy đồng thời trên cùng một phần cứng và có các chức năng chuẩn, chẳng hạn như truy xuất đến các bộ nhớ vĩnh viễn (như đĩa IO), bộ nhớ dễ bay hơi (như RAM) và các giao diện ngoại vi (như màn hình, bàn phím) Nhưng, các hệ điều hành truyền thống thường lớn, vì vậy nó chiếm giữ bộ nhớ vĩnh viễn với dung lượng đáng kể và cũng cần bộ nhớ RAM khá lớn để khởi động Vì vậy, việc phát triển phần mềm nhúng (embedded software) sẽ luôn luôn được chú trọng cho các thiết bị di động có bộ nhớ nhỏ
Ngày nay, nhu cầu về thiết bị di động rất lớn Sự đòi hỏi về mẫu mã, chất lượng dịch vụ mà đặc biệt là tính năng của chiếc điện thoại, với các phần mềm tiện ích đi kèm đã kéo theo sự phát sinh nhiều platform, kèm theo các platform là các hệ điều hành tương ứng, để các nhà phát triển ứng dụng có thể thực hiện các ý tưởng của mình Trong cuộc đua này, ta thấy trên lĩnh vực sản xuất thiết bị có Nokia, Apple, RIM, Samsum, Motorola, HTC, LG,… Còn trên lĩnh vực phần mềm có sự cạnh tranh mạnh mẽ của các hệ điều hành Windows Mobile của Microsoft, Android của Google, Symbian của Nokia, iOS của Apple, BlackBerry OS của RIM, …
Phần sau đây sẽ giới thiệu sơ lược một số nền tảng hiện đang tồn tại và phát triển:
1.3.2.1 Java - J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise
Edition) và J2ME (Java 2 Micro Edition):
Java chọn giải pháp thứ nhất Với máy ảo, Java cung cấp một môi trường
mở và tương đối hoàn thiện để lập trình với cùng một ngôn ngữ trên mọi hệ điều hành Có thể nói rằng, ngày nay Java là một ngôn ngữ lập trình hỗ trợ
Trang 30một môi trường linh động nhất để viết các phần mềm ứng dụng Sự thành công của Java là cung cấp các giao diện lập trình ứng dụng chuẩn (Standard API), một cơ sở hạ tầng được thiết kế thuận tiện cho lập trình hướng đối tượng (OOP : Object Oriented Programming), nó ngăn cản các thói quen thực thi và thiết kế xấu, chẳng hạn như sự đa kế thừa Có 3 nền tảng chính (tương ứng với API và máy ảo), đó là : J2SE, J2EE và J2ME
các máy tính cá nhân hoặc mạng máy tính nhỏ
được trình bày chi tiết trong các chương sau
1.3.2.2 MicroSoft Window platform:
Windows Mobile được phát triển từ một nhánh hệ điều hành của nhà khổng
lồ Microsoft, Windows Mobile được phát triển từ các phiên bản Windows
CE "CE" không phải là một từ viết tắt, hay ký hiệu của công nghệ nào, mà
đó là tập hợp các từ Compact, Connectable, Compatible, Companion và Efficient Những từ này tượng trưng cho khả năng mà các thiết bị cầm tay
sử dụng Windows CE, thể hiện sự kết hợp gọn nhẹ, khả năng kết nối, khả năng tương thích, sổ tay điện tử và hiệu suất cao
Các sản phẩm khác nhau của Microsoft được hình thành xung quanh các phiên bản khác nhau của một hệ điều hành Các phiên bản mà các nhà phát triển phần mềm ứng dụng quan tâm đó là Windows CE và Embedded Windows XP Windows CE đã được phát hành vào năm 1997 và
này được thiết kế cho hai mục đích khác nhau Có những phiên bản khác nhau của hệ điều hành Window CE tùy thuộc vào nền tảng phần cứng, chẳng hạn như Pocket PC, Window CE.NET, Pocket PC 2002 Việc chọn các phiên bản này phụ thuộc vào tập các đặc tính thương mại và nền tảng phần cứng Ngược lại, Embedded Windows XP là một hệ con của phiên bản Window XP của PC Sự phát triển phần mềm ứng dụng cho Embedded Windows XP tương đối đơn giản hơn trường hợp Windows CE
Trang 31Windows CE 1998 dùng trên các handheld PC (chưa có màn hình cảm ứng) Năm 2003, Windows CE được nâng cấp lên phiên bản 4.2, với các tính năng mới : Bluetooth, Net Framework, Wifi và trình nghe nhạc Player 9.0 Sau đó nó được đổi tên thành Windows Mobile Các Handheld PC được thiết kế dần cho phù hợp và đổi tên gọi thành Pocket PC (PPC) PPC
là một máy tính cầm tay với nhiều tính năng giống như máy tính để bàn và
nó sử dụng hệ điều hành Windows CE (CE là tập hợp các từ Compact, Compatiable, connectable và Efficient) hoặc Windows Mobile Với PPC ta
có thể làm được nhiều việc như : lưu trữ, nhận và gởi mail, lập lịch làm việc, chơi game, nghe nhạc, duyệt web,…, Các ứng dụng được đóng gói và chạy trong ROM (bộ nhớ flash), hoặc chỉ dùng bộ nhớ RAM cho chương trình đang chạy
Windows Mobile là một hệ điều hành cơ bản là sự kết hợp giữa các ứng dụng cho thiết bị di động trên nền tảng Microsoft Win 32 API Một phần cũng gần giống với các phiên bản hệ điều hành Windows khác cho PC Các tính năng đặc trưng và phổ biến của Windows Mobile mang phong cách giống như các phiên bản khác của Windows: cũng có giao diện tương
tự, có chương trình hỗ trợ văn phòng Office Mobile (bao gồm Word, Exel, Power Point) và có khả năng đồng bộ hóa với máy tính, Outlook cho việc gởi và nhận email, Window Media Player,…
Các phiên bản của Windows Mobile lần lượt ra đời: Pocket PC 2002; Windows Mobile 2003; Windows Mobile 2003 SE; Windows Mobile 5.0; Windows Mobile 6 ; Windows Mobile 6.5
Các phiên bản mới đã mang lại cuộc cách mạng là tích hợp cho cả hai dòng máy Smartphone (hiện Symbian đang chiếm đa số) và PPC
Microsoft đã tận dụng thế mạnh dẫn đầu trong thị trường phát triển phần mềm để mở rộng kỹ thuật của nó, bao gồm các công cụ phát triển phần mềm với kỹ thuật NET và Window CE Môi trường NET cho phép lập trình trên mọi ngôn ngữ và chạy nó trên môi trường NET Dĩ nhiên, một thiết bị bất kỳ chạy một ứng dụng được viết bằng CLR (Common Language Runtime) phải chạy trên hệ điều hành mà nó hỗ trợ CLR Hệ điều hành này
là thuộc gia đình hệ điều hành Window
CLR là thành phần cốt lõi trong sáng kiến của Microsoft’s NET, nó định nghĩa một môi trường thực thi mã chương trình Trong CLR, mã chương trình được biểu diễn dưới dạng bytecode và được gọi là Common Intermediate Language (CIL) Để phát triển phát triển phần mềm cho thiết
bị di động dùng CLR, ta có thể viết bằng nhiều ngôn ngữ khác nhau như C#, Visual Basic.NET Trong thời gian biên dịch, bộ biên dịch tương ứng
sẽ chuyển đổi mã của ngôn ngữ đó thành mã CIL Trong thời gian chạy, bộ biên dịch trong thời gian chạy (Just-in-time-compiler) của CLR chuyển đổi
mã CIL thành mã gốc của hệ điều hành (Hình 1.12)
Trang 32Các khung dựa trên một hệ điều hành để thực hiện sự phát triển ứng dụng cho thiết bị di động có cách thức giống như các khung thực hiện phát triển ứng dụng trên các thành phần cố định tương ứng trên PC Các hệ điều hành
sẽ cung cấp sự truy xuất đến phần cứng (I/O, networking,…) Vì vậy, các ứng dụng chạy trên Windows CE và Embedded Windows XP được điều khiển bởi các hệ điều hành tương ứng Microsoft cung cấp các công cụ để xây dựng các ứng dụng cho mỗi môi trường Đó là :
(1) Embedded Visual C++ :
Đây là một bộ công cụ tách ra từ Visual Studio, môi trường phát triển tiêu biểu cho các ứng dụng Windows PC căn bản Nó cho phép tạo ra các ứng bằng C++ Các bộ giả lập và bộ gở rối (debugger) được cung cấp Phiên bản mới nhất của công cụ này cung cấp thêm các đặc tính nâng cao chẳng hạn như sự điều khiển ngoại và gở rối trong thời gian chạy, những đặc điểm
mà người tạo ra ứng dụng cho thiết bị di động rất ưa thích
Hình 1.12 : Common Intermediate Language
(2) Embedded Visual Basic :
Công cụ này cung cấp khả năng viết các ứng dụng cho dùng Visual Basic Các ứng dụng Visual Basic có thể được phát triển nhanh hơn, nhưng Embedded Visual Basic không hỗ trợ khả năng điều chỉnh và tối ưu hóa ứng dụng cho các thiết bị di động có nguồn tài nguyên hạn chế Vì vậy nó không là một bộ công cụ thích hợp cho việc phát triển các ứng dụng thương mại, nó thích hợp cho các ứng dụng thí điểm hoặc thực nghiệm
(3) Smart Device Extensions for NET :
Trang 33Nền tảng lập trình ứng dụng NET là một bộ công cụ mới nhất cho việc xây dựng các ứng dụng Microsoft Windows căn bản Nó có thể được bổ sung với một tập công cụ mở rộng cho phép nhà phát triển ứng dụng tạo ra những ứng dụng NET cho thiềt bị di động
(4) Microsoft Mobile Internet Toolkit : là một khung hỗ trợ các máy chủ Cũng như các nền tảng Microsoft Windows khác, Windows CE cho phép dùng các thành phần COM và ActiveX bằng sự thêm vào Win32 API Các đặc tính quan trọng khác là : xử lý ngôn ngử đánh dấu (HTML, XML, XSL,…), bảo mật (ví dụ SSL), khung truy xuất dữ liệu Windows ADO trong ADOCE (ADO for Windows CE) và các chức năng giới hạn trong việc ghép với hàng đợi truyền thông điệp trong MSMQ (Mcrosoft Message Queuing)
Nhận xét :
Ta thấy, Java là một ngôn ngữ có thể viết cho nhiều platform, ngược lại Microsoft Windows là một platform có thể viết với nhiều ngôn ngữ Java tổng quát hóa bằng ngôn ngữ lập trình, Microsoft Windows tổng quát hóa bằng hệ điều hành
Xây dựng một ứng dụng Visual Basic trên Windows CE
Việc xây dựng ứng dụng Visual Basic trên Windows CE rất giống với việc xây dựng ứng dụng Visual Basic trên màn hình nền MS Window Trong ví dụ này ta viết một ứng dụng in ra màn hình dòng chữ « Hello Visual Basic » Trước tiên, chúng ta phải tải về và cài đặt Microsoft eMbedded Visual Tools 3.0 (hay một phiên bản mới hơn) Sau đó thực hiện các bước sau :
(1) Khởi động eMbedded Visual Basic tool Chúng ta sẽ tìm được các môi trường khác nhau từ Visual Basic IDE cho PC, nhưng chúng rất giống nhau
(2) Khi một dự án mới được tạo ra, IDE tự động tạo ra một màn hình nền (base form) cho ứng dụng Chúng ta sẽ đặt những điều khiển (control) khác nhau trên đó
(3) Rê và thả một nhãn điều khiển bất kỳ trên màn hình nền và nhập vào dòng chữ “ Hello Visual Basic” trong thuộc tính “Caption” của điều khiển
(4) Trong thanh trình đơn (menu bar), ta sẽ thấy một combo box cho phép
ta chọn một bộ giả lập Ta có thể chọn thử bộ giả lập Pocket PC và nhắp vào nút “Play” trên thanh trình đơn
Ta thấy tiến trình tạo ra một ứng dụng khá đơn giản và cách tạo ra một ứng dụng dựa trên eMbedded Visual Basic cũng tương tự như vậy Bây giờ ta phải chuyển ứng dụng lên thiết bị thật Chúng ta cần trình biên dịch cho nền tảng thích hợp
Trang 34Để thử ứng dụng trên một thiết bị thực, ta cần kết nối vật lý giữa thiết bị với PC
Có nhiều cách kết nối khác nhau, phổ biến nhất là dùng kết nối RS232 (cổng nối tiếp) hoặc USB với chức năng ActiveSynch Sau đó ta phải cài đặt ứng dụng trên thiết bị dùng Windows CE Các bước cài đặt như sau:
(1) Từ Tools menu, chọn Remote Tools và thực hiện cài đặt theo hướng dẫn của Application Install Wizard
(2) Trong các bước cài đặt theo trình Wizard, có bước chọn nền tảng phần cứng Trong bước này, ta được hỏi processor nào được chọn, bởi vì các thiết bị khác nhau có thể dùng bộ xử lý khác nhau (Intel x86 based, ARM, StrongARM,…) Trình biên dịch cho mỗi bộ xử lý khác nhau là khác nhau (3) Tiếp tục tiến trình cài đặt giống nhau cho các ứng dụng trên Windows CE Nhớ rằng, chúng ta chỉ có thể phát triển các ứng dụng dùng eMbedded Visual basic cho Windows CE với các nền tảng phần cứng mạnh Ví dụ, ta không thể phát triển ứng dụng trên Microsoft Smart Phone với eMbedded Visual Basic Khi phát triển ứng dụng với Visual Basic, ta nên cố gắng tìm hầu hết các thành phần COM/ActiveX được cung cấp bởi “người” thứ ba (third parties)
eMbedded Visual C++ trên Windows CE :
eMbedded Visual C++ là một môi trường rất giống với các môi trường tương ứng Visual C++ 6.0 trên máy tính để bàn Nó được thiết kế cho sự phát triển các ứng dụng cho Windows CE bằng C++ Từ năm 2004, các trình biên dịch đã có cho nhiều bộ xử lý như: ARM, MIPS, Intel’s x86, PowerPC, Hitachi,… eMbedded Visual C++ (eVC) cung cấp các khả năng sau:
(1) Khả năng sử dụng một phân hệ của Win32 APIs cho việc xây dựng các ứng dụng Windows CE
(2) Khả năng sử dụng một phân hệ của thư viện MFC (Microsoft Foundation Classes)
(4) Một tập các lớp riêng cho nên tảng Windows CE
Trong trường hợp Visual C++ 6.0, eVC là một môi trường phát triển được nâng cao so với các thành phần tương ứng trước đó eVC cung cấp một số lượng đáng
kể các điều khiển (control) cho các ứng dụng tạo ra các giao diện đồ họa người dùng (GUI), có thể áp dụng cho màn hình cảm ứng, với các giao diện nhỏ dùng bút stylus
Giống như Windows 2000, Windows CE dùng một kiến trúc bộ nhớ được bảo vệ Khi một máy Windows CE được khởi động lần đầu tiên, nó tạo ra một không gian địa chỉ ảo 4GB Điều này không có nghĩa là đã có sẵn một bộ nhớ RAM 4GB Trong thực tế, hầu hết các thiết bị Windows CE có bộ nhớ giới hạn khoản 64MB
Trang 35Mặc dù, theo xu hướng chung, khả năng của bộ xử lý và dung lượng bộ nhớ của thiết bị di động sẽ không ngừng gia tăng Tuy nhiên, điều này không thể đạt được như mong muốn, bởi vì sự giới hạn về kích thước vật lý của thiết bị và dung lượng của nguồn pin Không gian địa chỉ bộ nhớ ảo được chia thành 128 khe (slot) khác nhau Mỗi khe dùng cho một tiến trình Kích thước của mỗi khe khoảng 32MB Đây là mô hình quản lý bộ nhớ đơn giản, nó không có nghĩa là thiết bị phải có 4GB bộ nhớ và hỗ trợ 32MB cho mỗi tiến trình Cũng cần nhớ rằng, Windows CE không cho phép phân trang (paging), vì vậy ta không thể sử dụng vượt quá bộ nhớ sẵn có Sự phân trang là một việc mà nó không được thực thi một cách tiêu biểu như một chiến lược cho sự cải thiện sự hữu hạn của bộ nhớ của thiết bị di động Chương trình sau là mã của một ứng dụng đơn giản dùng eVC Trình wizard của eVC cũng thân thiện và tương tự như các trình wizard khác
#include <windows.h>
#include <windowsx.h>
#include “resource.h”
HWND mMainWindow = NULL;
HINSTANCE mIntance = NULL;
TCHAR mHelloWorldText [] = TEXT(“HELLO WORLD”);
BOOL InitApp(HINCTANCE anInstance);
LRESULT CALLBAC Show(HWND aWindowHandle, UNIT aMessage,
LPARAM aParm1, LPARAM aParam2);
int WINAPI WinMain(HINSTANCE cInstance, HINSTANCE pInstance,
LPSTR aCmdLine, int aCmdShow) {return init(cIntance);}
BOOL init(HINSTANCE cInstance, int aCommand) {
If (! mMainWindow) {return FALSE;}
myWindow.style – CS_HREDRW | CS_VREDRAW;
Trang 36PAINTSTRUCT a PainStructe = NULL;
RECT aRectangle = NULL;
LRESULT aResult = TURE;
switch (aMessage){
case WM_PAINT: {
aHDC = BeginPaint (aWindow, &aPaintStructure);
getClientRect (hwnd, &rect);
DrawText (aHDC, L”Hello Word”, -1,
&aRectangle, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hwnd, &aPaintStructure);
break;
} default:
DestroyWindow(aWindow);
break;
} return (LRESULT);
}
Vài việc mà ta không nên bỏ qua trước khi đi đến khả năng sử dụng mô hình truyền thông bất đồng bộ với mạng Việc này có thể thực hiện thông qua việc sử dụng Microsoft Messaging Queuing (MSMQ) Có hai trường hợp khác nhau được thực thi với MSMQ cho Windows CE:
(1) Các thông điệp từ ứng dụng có thể phải đợi để đưa lên mạng, bởi vì thiết bị
có thể kết nối hoặc không được kết nối mạng ở thời điểm mà một ứng dụng xác định đang thực thi
(2) Để sử dụng kết nối mạng một cách hiệu quả, ta kết nối và gởi một lượng lớn dữ liệu lên mạng, kế tiếp ngắt kết nối và tích lũy dữ liệu nhiều hơn, sau
đó khởi động trở lại chu kỳ mới Điều này cho phép việc sử dụng kết nối mạng hiệu quả hơn
MSMQ được tích hợp với tất cả các phiên bản của Microsoft Windows
Cơ sở dữ liệu trên Windows CE
Có 3 cách để lưu dữ liệu trên thiết bị Windows CE :
(1) Sử dụng MS SQL Server Windows CE Edition : Đây là giải pháp mới nhất, hỗ trợ nhiều chức năng nhất và cũng là giải pháp tốn nhiều tài nguyên của thiết bị nhất MS SQL Server Windows CE hỗ trợ một tập con các chức năng mà đã được hỗ trợ bởi các phiên bản MS SQL Server cho máy tính để bàn hoặc server Các đặc tính cao cấp như views và store procedures không được hỗ trợ Nó cần hơn 1MB bộ nhớ của thiết bị (không kể dữ liệu của
Trang 37chính nó) và cho phép thực hiện việc tạo thứ bản và đồng bộ hóa thông qua HTTP
(2) Sử dụng CEDB : Đây là giải pháp cho phép lưu trữ thông tin trong một cơ
sở dữ liệu nhỏ và đơn giản CEDB là giải pháp tốt hơn cho hầu hết các ứng dụng và hầu hết các thiết bị bởi vì nó chiếm ít tài nguyên hơn MS SQL Server Windows CE CEDB hỗ trợ các chức năng chủ yếu, chẳng hạn, lưu trữ thông tin như các bản ghi (records), nó hữu dụng hơn hệ thống tập tin đơn giản (simple file system) Khi đó nó sẽ gọn nhẹ và không mất nhiều tài nguyên của thiết bị Cần lưu ý một điều quan trọng là CEDB không phải là một cơ sở dữ liệu quan hệ (relational database), ví dụ, mỗi record có thể là một số khác nhau các thành viên dữ liệu (data members) Vì vậy, kiểu làm việc với CEDB tương đối khác với kiểu làm việc với cơ sở dữ liệu quan hệ tiêu biểu
(3) Sử dụng hệ thống tập tin : Như hầu hết nền tảng di động phía client, ứng dụng có thể lưu trữ trong hệ thống tập tin Đây là giải pháp ít tiêu hao tài nguyên nhất, nhưng có thể làm tăng kích thước của ứng dụng (làm bản sao chức năng như sự truy vấn một dữ liệu mà nó có thể tái tạo trên cơ sở dữ liệu) và làm tăng thời gian phát triển ứng dụng
Windows CE và dịch vụ Web
Ngày nay, XML (Extensible Markup Language) là một chuẩn document cho nhiều nội dung phân bố Dịch vụ Web dựa trên XML là đặc biệt quan trọng khi các nội dung có thể trao đổi trên Web và các hệ thống khác nhau có thể tương tác bằng cách dùng HTTP và XML Vậy, sự tương tác (Interoperability) là mục đích đặc biệt của dịch vụ Web Microsoft’s NET là sự chọn lọc một trong các công nghệ khác nhau của Microsoft: những công nghệ có trước NET, chức năng mới dựa trên dịch vụ Web, chọn C# làm ngôn ngữ lập trình, và nhiều công nghệ quan trọng khác
.NET Web services dựa trên 2 công nghệ chủ yếu: WSDL (Web Services Definition Language) và SOAP (Simple Object Access Protocol) Trong khi đang tiến hành việc phát triển các ứng dụng Microsoft Windows cho máy chủ và máy tính để bàn, ROPE (Remote Object Proxy Engine), một DLL mà nó cung cấp một API đơn giản để dùng SOAP, đã làm dễ dàng cho việc xây dựng các ứng dụng dựa trên dịch vụ Web Lúc bấy giờ, ROPE chưa sẵn sàng cho Windpows CE Tuy nhiên, việc phân tách XML với sự truyền thông thông qua HTTP và các phương tiện khác vẫn có hiệu quả trong việc trong việc xây dựng các ứng dụng trên dịch
vụ Web Thêm vào đó, Pocket SOAP, một mô hình đối tượng thành phần (COM) của SOAP client cho Windows CE, đã cho phép các ứng dụng của nó tương tác trực tiếp với các dịch vụ Web khác
Trang 38Việc xử lý kích thước di động của Winhows CE
Các phiên bản Windows CE lúc đầu, ngoài thế mạng trong việc thực hiện các ứng dụng không kết nối mạng, dường như còn hạn chế trong việc xử lý kích thước di động Từ 2005, các phiên bản mới của Windows CE đã hỗ trợ tốt hơn cho việc xử
lý kích thước di động
Như đã nói, Windows CE xử lý các ứng dụng di động giống như các thành phần
cố định tương ứng Tuy nhiên, do sự thâm nhập thị trường của Microsofts trong lĩnh vực điện toán cá nhân., bởi vì sự tương hợp không ranh giới với tất cả các công nghệ dựa trên Windows, Windows CE có một cơ sở rất quan trọng là thị trường và sẽ là một trong các platform được triển khai rộng rãi nhất cho các ứng dụng di động Với ActiveSync, Windows CE đã hỗ trợ cho các nhà phát triển có được một cơ chế tích hợp rất tốt để thực hiện sự đồng bộ hóa giữa thiết bị với mạng Windows xử lý các ứng dụng không kết nối tốt hơn các ứng dụng di động khác, bởi vì nó dựa trên nền Windows và hỗ trợ một phân hệ lưu trữ dữ liệu đã được phát triển trong thực tế cũng như một giao diện lập trình trong ADOCE, sự lưu trữ dữ liệu cũng như sự vận hành đồng bộ hoặc tái tạo được thực hiện tốt trong Windows CE
Microsofts Smart Phone SDK
Từ năm 2002, Microsofts đã bước vào thị trường viễn thông di động với Smart phone, có thể thực hiện các ứng dụng theo sự đặt hàng với Smart Phone SDK Bộ phát triển phần mềm này được cung cấp như một lug-in cho eVC và có thể hỗ trợ phát triển các ứng dụng cho Smart phone giống như chúng được thực hiện cho Windows CE với eVC
Smart phone SDK cung cấp một vài điều khiển đáng quan tâm, mà nó được thiết
kế trên một giao diện người dùng tinh vi, nhưng nhỏ và thích hợp cho màn hình của điện thoại di động
1.3.2.3 BREW (Binary Run-Time Environment for Wireless)
BREW (của Qualcomm): là một phương thức khác để viết phần mềm ứng dụng cho các thiết bị Các ứng dụng được viết trên một platform tương ứng với phần cứng (hardware platform) đã cho Vì vậy, nó cho phép phát triển phần mềm một cách tối ưu hóa cho một “chip set” hay một phần cứng đặc biệt Sau đó các mã này được biên dịch, và sau đó “nạp” vào thiết bị Bởi vì IDE này là riêng của thiết bị, nên chỉ cần tập trung vào việc viết phần mềm cho thiết bị, vấn đề vận chuyển dữ liệu qua lại giữa mạng và thiết bị cũng như việc chuyển đổi chúng đến các định dạng thích hợp cho một thiết bị khác không là vấn đề cần phải quan tâm đến
Ứng dụng BREW được xây dựng gắn một cách trực tiếp vào phần cứng, BREW được xây dựng như là một API để truy cập đến một bộ CDMA, hay GSM/GPRS,
Trang 39hay UMTS mà được cung cấp để hỗ trợ cho nó (Từ ban đầu, BREW hướng đến CDMA, một công nghệ được làm chủ bởi Qualcomn) Các ứng dụng của BREW
có thể được viết trên PC với BREW SDK Khi một ứng dụng được phát triển, nó phải được thử và sau đó mới được triển khai Sự triển khai một ứng dụng BREW
là một tiến trình không chỉ được thực hiện bởi người phát triển mà còn phải liên kết với Qualcomn và các nhà cung cấp hạ tầng viễn thông
Các ứng dụng của BREW, cũng được xem như là các BREW applets, được viết bằng C, trong vài trường hợp có thể viết bằng C++ (mặc dù một vài vấn đề cơ bản
là không thể được, chẳng hạn như sự mở rộng API cơ bản thông qua sự kế thừa),
và việc sử dụng các bộ sinh mã, công nghệ máy ảo, các ngôn ngữ khác chẳng hạn
thước di động gần như đầy đủ trong kiến trúc của nó, những đặc điểm trong thực thi và SDK của nó
1 BREW SDK
Để bắt đầu lập trình với BREW, trước tiên ta phải cái đặt BREW SDK: vào địa chỉ http://www.qualcomn.com/brew và đăng ký như là một nhà phát triển (developer), việc này sẽ cho phép ta tải BREW SDK để cài đặt BREW SDK được
hỗ trợ như là một bộ tích hợp các thành phần với Microsoft Visual C++ 6.0 Sau đây là tập các tiện ích cho sự phát triển:
các lớp làm nên một hay nhiều ứng dụng Mỗi module có một file thông tin được kết hợp (MIF: Module Information File), MIF là file bắt buộc
Bộ MIF Editor cung cấp một công cụ GUI cho việc biên tập MIF kết hợp với các lớp cấu thành một module Với BREW SDK phiên bản 2.0, MIF Editor có thể được khởi động như một wizard bên trong Visual C++ 6.0 hay như là một ứng dụng độc lập (stand-alone) chúng ta sẽ xem xét MIF editor như la một ứng dụng đơn giản
phép các nhà phát triển ứng dụng cấu hình các đặc tính của thiết bị di động (chức năng của các phím, cách thể hiện trên màn hình, phong cách riêng của thiết bị,…) Công cụ phát triển này hướng đến một lượng lớn các thiết bị khác nhau đang tồn tại bằng cách cho phép nhà phát triển ứng dụng tạo rao bộ giả lập của riêng họ và thử các ứng dụng trên đó Cũng lư ý rằng BREW là platform để viết ứng dụng cho các thiết bị cần tay, vì vậy, Device Configurator cho phép xây dựng các hoạt động tương thích cho mỗi loại thiết bị nhưng không có hiệu lực cho việc thử ứng dụng trong môi trường thiết bị giả lập
khăn khi phải thử cho các thiết bị luôn tiến triển Mặc dù các platform
Trang 40cung cấp vài loại trong một bộ giả lập chung, nhưng hầu hết không cho phép thử cấu hình tùy chọn của một thiết bị, hay dùng cấu hình tùy chọn
để mô phỏng một ứng dụng Đây lại là những gì mà BREW cho phép thực hiện Nhưng việc tạo ấn tượng nhất là cho phép thử: xử lý cảm biến
vi trí, chất lượng dịch vụ và các chức năng điện thoại BREW Emulator không những cho phép nhà phát triển tải và chạy ứng dụng trên cấu hình tùy chọn, mà còn cho phép điều chỉnh các thành phần khác nhau trong kết nối mạng, chẳng hạn như lưu lượng up-delay và down delay, vì vậy ứng dụng có thể được thử trong các điều kiện QOS khác nhau Bộ giả lập cũng cho phép giả lập các ứng dụng cảm ứng vị trí bằng cách cấu hình một tập tin GPS xuất ra theo cách thủ công để mô phỏng vị trí được nhập vào thiết bị Cuối cùng, nó cũng cho phép mô phỏng các sự kiện điện thoại như gọi đến hoặc gởi thông điệp SMS Có lẽ BREW Emunitor là một bộ giả lập hoàn chỉnh nhất cho các ứng dụng chạy trên thiết bị di động
BREW, nó có thể dùng tập tin PNG hoặc BMP
cứng ARM hoặc Strong-ARM (đăng ký nhãn hiệu của tập đoàn ARM), đây là bộ biên dịch phải trả phí bản quyền
bit-bitmaps để phù hợp với nguồn tài nguyên hạn chế của thiết bị di động
để xây dựng các ứng dụng GUI cho client, thì ta sẽ thân thiện với khái niệm “resource bundle” Các tập tin tài nguyên (resource file) trong BREW là sự chọn lọc hình ảnh, chuỗi ký tự, những hộp thoại REW Resource cho nhà người phát triển ứng dụng một GUI để quản lý các tập tin tài nguyên
người phát triển ứng dụng chuyễn đổi tập tin wave (audio) thành tập tin Pure Voice hoặc ngược lại
thiết bị cầm tay thông qua bộ kết nối với PC, dùng cho thử nghiệm (10) BREW Grinder: Nó phát ra các dữ liệu vào khác nhau dùng cho thử
nghiệm
(11) BREW TestSig Generator and AppSigner: Công cụ Testsig cung cấp
Certification từ Verisign để xác nhận một ứng dụng