Tải bản đầy đủ (.docx) (57 trang)

Tìm hiểu về framework ngôn ngữ lập trình độc lập trên mobile

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 57 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Văn Điềm
TÌM HIỂU VỀ FRAMEWORK NGÔN NGỮ LẬP TRÌNH
ĐỘC LẬP TRÊN MOBILE
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ thông tin
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Văn Điềm
TÌM HIỂU VỀ FRAMEWORK NGÔN NGỮ LẬP TRÌNH
ĐỘC LẬP TRÊN MOBILE
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: TS. Nguyễn Trí Thành
(ký tên)

TÓM TẮT
Tóm tắt: Trong thời kì mà công nghệ số phát triển với tốc độ chóng mặt như hiện nay, điện thoại
thông minh hay còn gọi là Smartphone thực sự đã mang đến một cuốc cách mạng cho các thiết bị
di động. Sự tiến bộ vượt bậc của công nghệ đã làm thay đổi hoàn toàn thói quen cũng như hành
vi của con người. Thiết bị di động đã đang và sẽ trở thành phương tiện giao tiếp và làm việc chủ
yếu của cong người. Và phần cốt lõi để tạo ra sức hấp dẫn từ chiếc Smartphone chính là hệ điều
hành và các ứng dụng mà chúng đang chạy.
Hiện tại, các ứng dụng dành cho thiết bị di động đang bị phân mảnh rất lớn do các hãng
công nghệ lớn cạnh tranh, ganh đua nhau tạo ra các nền tảng hệ điều hành di động của riêng
mình: IOS, Android, Window Phone, BlackBerry, webOS,… Vì vậy, các framework ngôn ngữ
lập trình lần lượt ra đời với mục đích “viết một lần, có thể chạy khắp nơi – tương thích với hầu
hết các nền tảng hệ điều hành di động”, và Phonegap chính là một framework phổ biến nhất đáp
ứng được mục đích đó tính đến thời điểm hiện tại.
Trong khóa luận này, tôi sẽ tập trung chủ yếu vào việc tìm hiểu Phonegap, và xây dựng


một chương trình phần mềm ứng dụng sử dụng Phonegap có thể chạy trên nhiều nền tảng
Smartphone khác nhau.
Từ khóa: Smartphone, Phonegap, framework, tương thích.
3
Lời cảm ơn
Lời đầu tiên, tôi xin bày tỏ lời cảm ơn và lòng biết ơn sâu sắc nhất tới TS.Nguyễn
Trí Thành đã tận tình hướng dẫn và chỉ bảo tôi trong suốt quá trình thực hiện khóa luận
này.
Tôi xin chân thành cảm ơn các thầy, cô trong trường đại học Công Nghệ - Đại học
Quốc gia Hà Nội đã tạo mọi điều kiện thuận lợi cho tôi học tập, rèn luyện và ghiên cứu.
Tôi cũng xin gửi lời cảm ơn đến các anh chị, các bạn cùng thực hiện khóa luận đã
hỗ trợ tôi rất nhiều về kiến thức chuyên môn trong quá trình thực hiện khóa luận.
Tôi xin cảm ơn các bạn trong lớp K55CB đã ủng hộ, khích lệ, giúp đỡ và luôn sát
cánh bên tôi trong suốt quá trình học tập, rèn luyện tại trường.
Và cuối cùng, tôi xin được gửi lời cảm ơn tới gia đình, người thân và bạn bè -
những người đã luôn ở bên tôi những lúc khó khăn nhất, luôn động viên và khuyến khích
tôi trong cuộc sống cũng như trong học tập và công việc.
Tôi xin chân thành cảm ơn!
4
Lời cam đoan
Tôi xin cam đoan các kết quả đạt trong khóa luận này là do tôi thực hiện dưới sự
hướng dẫn của TS. Nguyễn Trí Thành.
Tất cả các tài liệu tham khảo từ những nghiên cứu liên quan đều được nêu nguồn
gốc một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Trong khóa luận,
không có việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ
về mặt tài liệu tham khảo.
5
Mục lục
Danh sách hình vẽ
Danh sách bảng

6
Chương 1
MỞ ĐẦU
Điện thoại thông minh hay còn gọi là smartphone thực sự đã mang đến một cuộc
cách mạng cho các thiết bị di động, trong thời kì mà công nghệ số phát triển với tốc độ
chóng mặt như hiện nay. Nhu cầu sử dụng thiết bị di động đã trở nên rất phổ biến
không chỉ ở Việt Nam mà trên toàn thế giới. Sự tiến bộ vượt bậc của công nghệ đã làm
thay đổi hoàn toàn thói quen cũng như hành vi của con người. Trong tương lai, thiết bị
di động sẽ trở thành phương tiện giao tiếp và làm việc chủ yếu của con người. Và phần
cốt lõi để tạo ra sức hấp dẫn từ chiếc smartphone chính là hệ điều hành và các ứng
dụng mà chúng đang chạy.
Hiện tại, các ứng dụng dành cho thiết bị di động đang bị phân mảnh rất lớn do các
hãng công nghệ lớn cạnh tranh, ganh đua nhau tạo ra các nền tảng hệ điều hành di động
của riêng mình. Do đó có nhiều framework ngôn ngữ lập trình ra đời, với mục đích
“viết một lần, biên dịch qua cloud và chạy khắp nơi – tương thích với hầu hết các nền
tảng hệ điều hành di động hiện tại”, cũng có nghĩa là những framework này là những
ngôn ngữ lập trình độc lập trên mobile.
Phonegap chính là một trong những framework phổ biến nhất đáp ứng được mục
đích đó. Nó là công cụ phát triển ứng dụng cho cả iOS, Android, Window Phone,
BlackBerry, webOS, Bada, Symbian cùng lúc…Việc ra đời của các framework này nói
chung và của Phonegap nói riêng đã nhận được sự đóng góp của rất nhiều tổ chức và
cộng đồng công nghệ lớn.
Đối với các lập trình viên trong việc tạo ra ứng dụng có thể chạy trên đa nền tảng
di động thì cần phải nắm bắt và hiểu rõ về các công nghệ bên trong mỗi nền tảng.
7
Nhưng giờ đây, với sự hỗ trợ đắc lực của Phonegap, các lập trình viên chỉ cần nắm bắt
và chuyên sau về một công nghệ duy nhất, đó là công nghệ nền Web(bao gồm HTML5,
Javascript, CSS3, Jquery Mobile, ).
Nội dung đề tài: “Tìm hiểu framework ngôn ngữ lập trình độc lập trên mobile”
ngoài việc tìm hiểu tổng quan về Phonegap, các công nghệ nền Web liên quan, còn xây

dựng một chương trình phần mềm ứng dụng sử dụng Phonegap – viết một lần, biên
dịch qua cloud và có thể chạy trên các nền tảng di động khác nhau.
Nội dung Khóa luận này gồm 5 chương:
Chương 1 – Mở đầu: Nêu thực trạng, giới thiệu về công việc và nêu những nội
dung sẽ được trình bày.
Chương 2 – Cơ sở lý thuyết: Giới thiệu về Phonegap và những công nghệ, cơ sở
lý thuyết được áp dụng để xây dựng chương trình.
Chương 3 – Xây dựng chương trình: phân tích thiết kế và xây dựng, kiểm thử
chương trình phần mềm.
Chương 4 – Kết quả, đánh giá chương trình phần mềm.
Chương 5 – Kết luận: Tóm lược những kết quả của Khóa luận, những đạt được và
hạn chế, triển vọng và hướng phát triển trong tương lai.
8
Chương 2
CƠ SỞ LÝ THUYẾT
2.1. HTML5 và CSS3
2.1.1. HTML và CSS
Trong những ngày sơ khai của Internet, các công cụ cho việc thiết kế một Web site chỉ là
HTML và một số ít các công cụ khác. Nh
ưng việc thiết kế một trang Web chỉ với HTML thật tẻ nhạt và nhiều hạn chế. Đó là
lí do chúng ta cần đến CSS.
HTML5 là phiên bản thứ 5, mới nhất của chuẩn HTML, ngôn ngữ cấu trúc và trình
bày nội dung cho World Wide Web và sẽ là công nghệ cốt lõi của Internet trong tương
lai không xa. HTML5 có nhiều tính năng mới hỗ trợ việc đưa vào và quản lý các nội
dung đa phương tiện và đồ họa, không còn phụ thuộc vào các plugin và API.
Cascading Style Sheets, hay còn gọi tắt là CSS, là những file hỗ trợ cho trình duyệt
Web trong việc hiển thị một trang HTML. Về cơ bản, các trang HTML như bộ xương –
khuôn khổ cơ bản của một trang web, trong khi các file CSS sẽ cụ thể hóa các thành
phần của một trang nên được hiển thị như thế nào. CSS cho phép ta kiểm soát phông
chữ, màu chữ, kiểu nền…, của một trang HTML.

CSS đã giúp cho việc thay đổi phong cách của một trang Web đơn giản hơn và đỡ
tốn thời gian hơn, bạn có thể thực hiện sự thay đổi trên một mục nào đó và sau đó
apply sự thay đổi này trên toàn bộ trang Web thay vì phải thực hiện trên từng mục
riêng lẻ như trước đây.
CSS3 là phiên bản mới nhất của CSS, được chia thành các module để có thể phát
triển và đặc tả độc lập. CSS3 đưa vào nhiều thuộc tính và bộ chọn (selector) mới hỗ trợ
9
xây dựng các trang web với nội dung phong phú, hiêu ứng, giao diện người dùng tốt
hơn và vẫn đảm bảo yêu cầu mã tương đối nhẹ.
2.1.2. Một số đặc điểm nổi bật của HTML5
HTML5 mang lại cho người dùng trải nghiệm lướt Web hoàn toàn mới, nhanh hơn,
ổn định hơn và bảo mật hơn. HTML5 sẽ giúp các nội dung trên Web hoạt động tốt hơn
mà không cần phụ thuộc vào bất kì một ứng dụng phụ trợ nào khác. Bên cạnh đó,
HTML5 có khả năng hỗ trợ API (Application Programming Interface) và DOM
(Document Object Model) sẽ cho phép dễ dàng mở rộng, giúp các nhà phát triển tự do
sang tạo trong việc tạo ra các ứng dụng thân thiện và hữu ích hơn.
Hơn nữa, với HTML5 mọi thiết bị từ máy tính cá nhân đến các thiết bị di động sẽ
có thể dễ dàng tiếp cận nội dung, chỉ cần duy nhất một điều kiện là trình duyệt đang
dùng phải hỗ trợ HTML5. Và hiện nay, hầu hết các trình duyệt phổ biến đều hỗ trợ
mạnh mẽ HTML5, từ trình duyệt web: Firefox, Chrome, Opera, Internet Explorer đến
các trình duyệt trên iOS, Android,…
Với HTML5, các nhà phát triển chỉ cần xây dựng ứng dụng 1 lần, nó có thể hoạt
động tốt trên tất cả các thiết bị, không như Flash hoặc Silverlight đòi hỏi phải cài đặt
plugin để có thể hiển thị nội dung.
Sau đây là một số tính năng nổi trội của HTML5 mà trong quá trình tìm hiểu tôi đã
đúc kết được.
2.1.2.1. Hỗ trợ thay thế Flash
Flash lâu nay vẫn chiếm phần lớn nội dung trên Web nhưng hiện nay nó đã và
đang dần bị thay thế bởi HTML5.
Tồn tại quãng thời gian khá dài, Flash có những hạn chế rất lớn mà các giới phát

triển đã chỉ ra được, đó là sự bất ổn định, làm thiết bị hoạt động nóng hơn và hao pin
10
hơn, phải yêu cầu cài đặt plugin để hoạt động. Và Flash không phải là tối ưu cho các
thiết bị di động khi vấn đề về Pin luôn là mối quan tâm lớn của người dùng.
Huyền thoại Steve Jobs đã từng đưa ra quan điểm rất rõ rang, Flash sẽ không bao
giờ xuất hiện trên các thiết bị di động của Apple, và cũng đưa ra sự ủng hộ tuyệt đối
vào HTML5. Quan điểm này thể hiện rõ ràng đến nỗi Steve Jobs đã viết một bức thư
và đăng trên trang chủ của Apple và xóa tan những mong muốn đưa Flash lên iOS của
người dùng.
Thời gian trước, Google đã phát triển công cụ Google Swiffy cho phép người dùng
chuyển đổi nội dung từ Flash sang HTML5, Adobe mua lại Nitobi – công ty sang lập
bộ khung lập trình ứng dụng Phonegap và Phonegap Build cho phép lập trình viên phát
triển ứng dụng nền tảng cross-flatform trên di động với HTML5 và Javascript. Bên
cạnh đó, bản thân Adobe cũng cho ra đời công cụ mang tên Wallaby cho phép chuyển
nội dung từ Flash sang HTML5.
Và mới đây, chính Adobe đã tuyên bố sẽ ngừng phát triển Flash trên các thiết bị di
động mà thay vào đó là tập trung phát triển HTML5. Với giới công nghệ, đây có thể là
một bước ngoặt quan trọng. Adobe cho biết họ vẫn sẽ tải lên các bản sửa lỗi, nhưng sẽ
không phát triển Flash trên các thiết bị di động nữa, và Flash Player 11.1 sẽ là phiên
bản nâng cấp cuối cùng. Adobe cũng có thông báo: “Hiện tại HTML5 đã được triển
khai rộng rãi trên nhiều nền tảng khác nhau, nó sẽ trở thành giải pháp tốt nhất cho việc
phát triển nội dung trên trình duyệt của thiết bị di động”.
Hiện nay, nhiều trang web và dịch vụ lớn đã chuyển sang dùng HTML5, có thể kể
ra tiêu biểu trong số đó là Youtube, Nokia Máp,…Ngoài ra, rất nhiều game được xây
dựng bằng HTMl5 đã xuất hiện, trong đó có các games nối tiếng như Angry Bird,
Fieldrunners…
Như vậy với HTML5, người dùng Web sẽ có được một trải nghiệm hoàn toàn mới,
có thể thoải mái xem video, chơi games trên trình duyệt với mọi thiết bị mà không cần
11
quan tâm đến các thành phần bổ sung cần phải cài thêm. Với các thiết bị di động như

Smartphone, Tablet, người dùng sẽ không cần phải lo lắng về hiệu năng cũng như thời
lương sử dụng Pin nữa, vì HTML5 đã tối ưu hóa những lo ngại đó.
2.1.2.2. Tính năng bảo mật
Mỗi trình duyệt có một plug-in riêng được lập ra với những tiêu chuẩn khác nhau,
được đưa ra vào thời điểm khác nhau và kiểu bảo mật cũng khác nhau. Thông thường,
một số phiên bản plug-in có tính bảo mật hơn so với loại khác. Khi số lượng plug-in
gia tăng, chúng làm tăng độ phức tạp trong kiểm tra các lỗi an ninh.
Thay thế nhiều loại plug-in với các đặc điểm được tích hợp với HTML5 sẽ bỏ đi
được những khuyết điểm có trong các plug-in trước đó. Những khuyết điểm có thể bị
lợi dụng để thiết lập mã độc.
2.1.2.3. Đơn giản hóa việc phát triển web
Bill Mill – chuyên viên thiết kế cho Lookingglass Cyber Solutions giải thích ngắn
gọn về sự thay đổi này: “Tôi thực sự thích HTML5 vì nó cho phép tôi làm việc trong
một môi trường thích hợp, trình duyệt kiết hợp với Javascipt, DOM mà không phải bật
đi bật lại Flash. Nó vừa là một ngôn ngữ lại vừa là một công cụ, không khác biết lắm
so với các plug-in khác”.
HTML5 cung cấp một ngôn ngữ lập trình JavaScript, một kiểu dữ liệu (XML hoặc
DOM) và một phần nguyên tắc thiết lập (CSS) để kết nối văn bản, audio, video và đồ
họa.
2.1.3. Các tính năng mới có trong HTML5
2.1.3.2. HTML5 hỗ trợ các phần tử định nghĩa mới
Ta có thể liệt kê các phần tử định nghĩa mới trong HTML5 và các chức năng của
chúng trong bảng sau đây.
12
Bảng 1: Các phần tử định nghĩa mới trong HTML5.
<header (tiêu đề)>
Định nghĩa 1 tiêu đề cho 1 số phần tử của trang web, có
thể là toàn bộ trang, 1 phần tử <article>, hay <section>
<footer (chân
trang)>

Giống như phần tử <header>, nó định nghĩa một chân trang
cho 1 số phần của 1 trang.
<nav (chuyển
hướng)>
Chứa các lien kết chuyển hướng ban đầu trên 1 trang web, chỉ
nên dùng cho các khối chuyển hướng, nhóm các liên kết lớn.
<article (bài viết)>
Định nghĩa một mục độc lập trên trang có thể dùng riêng cho
nó, như mục tin tức, bài viết trên blog, hoặc nhận xét.
<section (phần)>
Đại diện cho 1 phần của một tài liệu hoặc ứng dụng, chẳng hạn
như 1 chương hoặc 1 phần của 1 bài viết hoặc hướng dẫn.
<aside (nhận xét)>
Đánh dấu 1 thanh phụ hoặc 1 số nội dung khác có phần tách rời
với nội dung xung quanh nó. Ví dụ các khối quảng cáo.
<hgroup>
Bọc 1 tiêu đề và 1 phụ đề. Ví dụ trong trường hợp, 1 trang, 1
phần có nhiều hơn 1 tiêu đề ( có 1 tiêu đề, 1 phụ đề ).
2.1.3.3. HTML5 hỗ trợ đồ họa tương tác với phần tử <canvas>
Chuẩn Web cũ tải hình ảnh bằng cách tải file GIF hay JPG. Chuẩn Web mới có thể
xây dựng hình ảnh trên Canvas. Một loạt thư viện đồ họa đẹp được đưa ra, giúp cho đồ
họa của Website trở nên tương tác hơn.
Phần tử <canvas> định nghĩa chiều rộng, chiều cao, và mã định danh (ID) duy nhất
cho đối tượng. Sau đó khi trang Web đã hoàn tất dựng hình, lập trình viên sử dụng một
loạt các JavaScript API để thực sự vẽ các đối tượng trên khung nền ảnh (canvas).
Những API này cho phép vẽ hình dạng và các đường kẻ, phết màu, độ mờ đục và các
gradient (độ dốc), tạo văn bản, chuyển đổi các đối tượng khung nền ảnh, và thể hiện
hình ảnh động. Các API cũng cho phép phần tử <canvas> tương tác và đáp ứng với đầu
13
vào của người dùng như các sự kiện click chuột và các sự kiện bàn phím, tạo điều kiện

thuận lợi cho việc sản xuất các trò chơi và các ứng dụng Web trên khung nền ảnh.
2.1.3.4. HTML5 cho phép các ứng dụng lưu trữ cục bộ với local storage
Các nhà phát triên Web có truyền thống sử dụng các cookie để lưu trữ thông tin
trên máy cục bộ của khách truy cập, cho phép một trang Web đọc lại thông tin này tại
một điểm sau đó mà không mất nhiều thời gian tải lại. Trong khi các cookie rất có ích
để lưu trữ dữ liệu cơ bản, thì chúng lại bị hạn chế bởi thực tế các trình duyệt Web
thường không cần thiết giữ lại hơn 20 cookie cho mỗi máy chủ hoặc nhiều hơn 4KB dữ
liệu cho mỗi cookie. Ngoài ra, chúng được gửi đến máy chủ Web với mọi yêu cầu
HTTP, gây ra lãng phí tài nguyên.
HTML5 cũng cấp một giải pháp cho các vấn đề này bằng các Local Storage API
(API lưu trữ cục bộ). Nó cho phép các nhà phát triển lưu trữ thông tin trên máy của
khách truy cập. Ngoài ra, thông tin có thể truy cập ở bất kỳ điểm nào (ngay cả sau khi
trang đã được đưa ra) và không được tải tự động với mỗi yêu cầu HTTP, điều nay giúp
ngăn cản các trang Web khỏi bị các trang Web khác đọc hay thay đổi dữ liệu đã lưu.
Hầu hết các trình duyệt lưu trữ các trang Web trong bộ nhớ nhanh cục bộ, cho phép
xem chúng ngay cả khi người dùng không nối mạng. Việc này hoạt động tốt với các
trang tĩnh, nhưng nó không có sẵn cho nội dung động thường dựa vào cơ sở dữ liệu
như Gmail, Facebook, Twitter. HTML5 cung cấp sự hỗ trợ cho các ứng dụng không nối
mạng, ở đây trình duyệt tải tất cả các tệp cần thiết để sử dụng ứng dụng không cần nối
mạng, khi đó trình duyệt có thể cho phép các thay đổi bất kỳ được thực hiện trong quá
trình được tải lên máy chủ khi chúng kết nối lại vào mạng Internet.
2.1.3.5. HTML5 hỗ trợ phát <audio> và <video>
HTML5 bao gồm cả sựu hỗ trợ cho 2 phần tử mới, <audio> và <video>, cho phép các nhà
phát triển Web bao gồm các nội dung đa phương tiện mà không cần người dùng cài đặt
các trình cắm thêm của trình duyệt. Một số trình duyệt như Firefox, Google Chrome đã
bắt đầu hỗ trợ các phần tử mới này và cung cấp các nút điều khiển phát lại của trình duyệt
14
chuẩn. Điều này đã và sẽ dần được thay thế cho các nền tảng Adobe Flash, hay định dạng
tệp Flash Video (.flv).
2.1.3.6. HTML5 cải tiến biểu mẫu Web

Bên cạnh những nút điều khiển biều mẫu đã có: button, checkbox, file, hidden, image,
password, reset, radio,submit, text,…HTML5 đã cải tiến và thêm vào các nút biểu mẫu
hữu ích thiết thực như:
• Color (màu)
• Date (ngày)
• Datetime (ngày giờ)
• Datetiem-local (ngày giờ địa phương)
• Email (thư điện tử)
• Month (tháng)
• Number (số)
• Range (phạm vi)
• Search (tìm kiếm)
• Tel (điện thoại)
• Time (thời gian)
• url (địa chỉ)
• week (tuần)
Điều này đã giúp ích rất nhiều cho các nhà phát triển web khi không còn phải sử dụng thư
viện JavaScript bên ngoài để cung cấp các thành phần giao diện người dùng (UI), hoặc sử
dụng một khung công tác phát triển thay thế khác như Adobe Flex, để tạo ra các kiểu nút
điều khiển tinh vi này.
2.1.3.7. HTML5 hỗ trợ khả năng truy cập tới hệ thống file system
HTML5 cung cấp các hàm APIs hết sức mạnh mẽ để tương tác với dữ liệu kiểu nhị phân
và hệ thống file system của người sử dụng. Các hàm này cho phép các ứng dụng web có
khả năng làm những việc như đọc các files dữ liệu một cách đồng bộ hoặc không đồng
bộ, tạo ra các dữ liệu nhị phân một cách tùy ý, viết các files, cho phép thực hiện xử lý trên
file khi kéo thả nó từ desktop vào trong trình duyệt và tải lên dữ liệu kiểu nhị phân bằng
cách sử dụng XMLHttpRequest2.
Ví dụ minh họa như các hàm File APIs này có thể sử dụng để tạo ra 1 hình ảnh thu nhỏ
dành cho việc xem trước của các bức ảnh khi chúng đang được gửi tới sever, hay cho
phép 1 ứng dụng lưu lại trong 1 file mà file này được sử dụng để tham chiếu tới khi người

15
dùng sử dụng ứng dụng trong trạng thái offline. Hay hơn thế, bằng cách sử dụng Web
Audio API thì ứng dụng có thể đọc đượ các file .mp3 và hiển thị 1 cách trực quan bản
nhạc khi nó đang được chạy, thêm vào đó, người dùng có thể sử dụng các điều kiện logic
từ phía client để kiểm tra lại dạng mimetype của dữ liệu được tải lên xem có tương ứng
với đuôi mở rộng của file hay giới hạn kích thước của dữ liệu được tải lên.
2.1.3.8. HTML5 tăng tốc hiệu năng xử lý với Web Worker và Application Cache
“Web” và “offline” là 2 từ mà rất nhiều người dùng nhận thấy chúng không bao giờ song
hành cùng nhau. Tuy nhiên trong HTML5 thì mọi chuyện lại khác, trang Web vẫn có thể
hoạt động ngay cả khi chúng không được kết nối trực tuyến. Người dùng có thể tải về các
files dữ liệu rất lớn (hơn 1GB) để sau đó có thể duyệt xem 1 cách offline.
Application Cache mang lại cho ứng dụng 3 lợi ích:
1. Duyệt xem ngay cả khi offline
2. Tăng tốc hiệu năng xử lý bởi các nguồn tài nguyên được Cache lại do đó sẽ được
nạp nhanh hơn
3. Giảm tải cho máy chủ - trình duyệt sẽ chỉ tải về các nguồn tài nguyên được cập
nhật hay được thay đổi từ phía máy chủ
Một Web Worker (các trình làm việc trên nền Web) là một mã javascript mà có thể chạy
thực thi trong nền web, hay thực thi một cách độc lập với các mã khác mà không hề gây
ảnh hưởng tới hiệu năng xử lý của trang page. Người dùng vẫn có thể tương tác với trang
page như nhấn chuột, lựa chọn, cuộn trang hay gõ văn bản,…
2.1.3.9. HTML5 hỗ trợ định vị người dùng
HTML5 có một API định vị địa lý cho phép một ứng dụng Web xác định vị trí địa lý hiện
tại của người dùng, giả sử thiết bị mà ứng dụng đang nhắm tới cung cấp các tính năng để
tìm kiếm các thông tin như vậy (ví dụ, GPS trên điện thoại di động). Nếu người dùng
không có một thiết bị hỗ trợ tính năng này (chẳng hạn như một chiếc điện thoại thông
minh iPhone hoặc Android 2.0) , thì người dùng có thể sử dụng Firefox và tải về một trình
cắm thêm để cho phép thiết lập vị trí của họ bằng tay.
2.1.3.10. HTML5 hỗ trợ khả năng cộng tác và giao tiếp thời gian thực
Các tính năng trong HTML5 được chia làm 2 nhóm: một là nhóm các tính năng dùng để

thúc đẩy các ứng dụng web đạt thế cân bằng với các ứng dụng nền desktop, hai là nhóm
các tính năng đem tới cho các ứng dụng web những lợi thế vượt lên trên cả các ứng dụng
16
desktop truyền thống. khả năng cộng tác theo thời gian thực là dạng tính năng điển hình
thuộc nhóm 2, nó đem tới lợi thế cự kỳ to lớn cho các ứng dụng web.
WebSockets và WebRTC có thể thực sự làm thay đổi các trò chơi games trong sự giao tiếp
theo thời gian thực bởi nó khiến việc lập trình phát triển dễ dàng hơn và nâng cao trải
nghiệm của người dùng.
WebSockets là công nghệ hỗ trợ giao tiếp hai chiều giữa client và server bằng cách sử
dụng một TCP socket để tạo một kết nối hiệu quả và ít tốn kém. Mặc dù được thiết kế để
chuyên sử dụng cho các ứng dụng web, lập trình viên vẫn có thể đưa chúng vào bất kì loại
ứng dụng nào.
Dữ liệu truyền tải thông qua giao thức HTTP chứa nhiều dữ liệu không cần thiết trong
phần header. Một header request/response của HTTP có kích thước khoảng 871 byte,
trong khi với WebSocket, kích thước này chỉ là 2 byte (sau khi đã kết nối).
Vậy giả sử trong một ứng dụng game có thể tới 10,000 người chơi đăng nhập cùng lúc, và
mỗi giây họ sẽ gửi/nhận dữ liệu từ server. Hãy so sánh lượng dữ liệu header mà giao thức
HTTP và WebSocket trong mỗi giây:
- HTTP: 871 x 10,000 = 8,710,000 bytes = 69,680,000 bits per second (66 Mbps)
- WebSocket: 2 x 10,000 = 20,000 bytes = 160,000 bits per second (0.153 Kbps)
Chỉ riêng phần header thôi cũng đã chiếm một phần lưu lượng đáng kể với giao thức
HTTP truyền thống.
WebRTC đem đến khả năng hỗ trợ cho video và audio trong hội thảo trực tuyến hay trong
truyền phát video trực tuyến.
2.1.3.11. HTML5 hỗ trợ tiếp nhận các sự kiện events được gửi từ máy chủ
HTML5 Server-Sent Events cho phép một trang page tiếp nhận các cập nhật liên tục, tức
thời từ phía máy chủ, bất cứ khi nào có 1 sự kiện event mới xảy ra trên máy chủ thì 1
thông báo sẽ được gửi tới client. Để thực sự hiểu về Server-Sent Events, thì trước hết phải
hiểu rõ về giới hạn mà công nghệ AJAX đi trước bị hạn chế:
- Kiểm soát vòng Polling là 1 kĩ thuật cổ điển được sử dụng bởi hầu hết đa số các

ứng dụng AJAX. Ý tưởng cốt yếu là ứng dụng sẽ gọi lặp đi lặp lại tới máy chủ để
thu nhận về dữ liệu. Điều này tương tự với giao thức HTTP, xét cho cùng thì việc
nhận về dữ liệu cũng quay quanh 1 định dạng request/response (yêu cầu/ hồi đáp).
Client tạo ra 1 yêu cầu request và chờ đợi máy chủ hồi đáp và trả về dữ liệu. Vấn
17
đề rắc rối lớn gặp phải ở đây là với những kiểm soát vòng polling rất lớn sẽ tạo ra
chi phí phụ cho giao thức HTTP rất lớn.
- Kiểm soát vòng long polling trong thời gian kéo dài trong khi máy chủ chưa sẵn
sàng trả về dữ liệu thì nó sẽ giữ yêu cầu này cho tới khi dữ liệu được sẵn sàng trả
về. Do vậy, kĩ thuật này thường được trích dẫn như 1 việc làm treo phương thức
GET. Khi dữ liệu đã được sẵn sàng thì máy chủ sẽ hồi đáp trả về và đóng kết nối,
quá trình xử lý này sẽ được lặp đi lặp lại.
Theo cách khác thì Server-Sent Events (SSEs) được thiết kế để mang lại hiệu quả tốt hơn.
Khi giao tiếp bằng SSEs, thì máy chủ có thể đẩy dữ liệu về client bất cứ khi nào nó muốn
mà không cần phải tạo ra 1 yêu cầu request. Hay hiểu theo cách khác, thì các cập nhật ở
máy chủ có thể được truyền phát 1 cách liên tục, tự động, tức thời tới client. SSEs chỉ mở
ra 1 kênh giao tiếp 1 chiều giữa máy chủ và client. Điểm khác biệt chính giữa SSEs và
long-polling là SSEs được kiểm soát trực tiếp từ trình duyệt và người dùng chỉ đơn giản
là lắng nghe các thông điệp mà thôi.
Sở dĩ tôi đi tìm hiểu sâu về HTML5 là vì nó là công nghệ chủ chốt trên nền web trong
tương lai và hơn nữa, HTML5 chính là công nghệ chủ chốt trong việc xây dựng ứng dụng
dựa trên nền tảng framework Phonegap để có thể biên dịch qua cloud và chạy trên nhiều
nền tảng di động khác nhau. Ngoài ra các công nghệ khác như CSS3, Javascript và Jquery
Mobile cũng rất cần thiết. Nhưng do khuôn khổ không cho phép của khóa luận, tôi sẽ chỉ
giới thiệu Jquery Mobile trong việc tìm hiểu mã nguồn mở Phonegap ở phần tiếp theo.
2.2. Giới thiệu về Framework mã nguồn mở Phonegap
2.2.1. Phonegap là gì?
Phonegap là một nền tảng (framework) mã nguồn mở dùng để phát triển ứng dụng mobile
(native Applications) cho cả iOS, Android, Windows Phone, BlackBerry, webOS, Bada và
Symbian cùng lúc, viết một lần, biên dịch qua cloud và chạy trên nhiều nền tảng

smartphone khác nhau. Đây là một dự án mã nguồn mở miễn phí của Nitobi giúp việc
phát triển ứng dụng di động dễ dàng hơn đối với mọi hệ điều hành. Cho phép nhà phát
triển sử dụng HTML, CSS và Javascript để viết và triển khai ứng dụng. Kiểu ứng dụng
mobile dạng này được gọi là hybrid application (ứng dụng lai).
18
Hình 1: Sơ đồ tổng quan hóa về cách thức hoạt động của Phonegap
So sánh giữa 3 dạng ứng dụng mobile: web apps, hybrid apps và native apps
Bảng 2: Bảng so sánh các dạng ứng dụng mobile
19
Có thể tóm lược tổng quan về 3 dạng ứng dụng này như sau:
1. Navtive Application: Là những ứng dụng được xây dựng theo cách chính thống với
các ngôn ngữ lập trình/nền tảng do các nhà sản xuất di động quy định (ví dụ:
Objective-C cho iOS và Java cho Android, .Net cho Windows Phone,…). Ưu điểm
của dạng ứng dụng này là nhà phát triển có thể thoải mái truy cập vào hệ thống,
phần cứng của thiết bị (như hệ thống file, camera, microphone, accelerometer,…).
Nhược điểm là bị bó buộc với công nghệ và nền tảng mà nhà sản xuất đưa ra.
2. Web Application: Là các ứng dụng được xây dựng trên nền tảng web (mà điển hình
là HTML5), chỉ hoạt động trên trình duyệt của điện thoại. Tiền thân của ý tưởng
này là những trang web có giao diện tùy biến cao, chạy được trên nhiều độ phân
giải màn hình, về sau phát triển mạnh và hình thành nên một hướng đi mới cho
việc phát triển ứng dụng di động. Ưu điểm là có thể thoải mái phát triển ứng dụng
20
mà không cần quan tâm tới nền tảng vì nó cross-platform. Nhược điểm là không có
được sức mạnh truy cập sâu vào hệ thống và thiết bị như native app.
3. Hybrid Application: Là con lai của 2 dạng ứng dụng trên. Có thể hiểu nôm na ứng
dụng này là: một native application chỉ có một đối tượng webview trên màn hình,
dùng để hiển thị nội dung trang web app, và web app giao tiếp với native app
thông qua một cầu nối (bridge) để mang lại sức mạnh của native app cho web app.
Như vậy với việc phát triển ứng dụng theo kiểu Hybrid Application là tối ưu hơn rất
nhiều.

2.2.2. Đôi nét về lịch sử của Phonegap
Phonegap là một dự án mã nguồn mở hoàn toàn miễn phí của Nitobi giúp việc phát triển
ứng dụng dễ dàng hơn đối với mọi hệ điều hành. Phát triển đầu tiên tại một sự kiện
iPhoneDevCamp ở San Francisco, Phonegap tiếp tục giành chiến thắng giải thưởng
Choice Award tại O’Reilly Media 2009 ở hội nghị Web 2.0 tháng 4 năm 2009. Điều đó đã
mở ra hướng đi mới cho các nhà phát triển ứng dụng web. Kể từ đó có hơn 600,000 lượt
tải về và hàng ngàn ứng dụng được phát triển dựa trên Phonegap. Apple đã xác nhận rằng
Framework này đã được phê duyệt.
Tuy được tạo ra bởi Nitobi nhưng đằng sau Phonegap là sự đóng góp của rất nhiều người
trong những tổ chức lớn như IBM, RIM và Microsoft. Phonegap cũng khẳng định rằng:
Họ có một cộng đồng phát triển hấp dẫn, hoạt động mở, minh bạch và hợp tác.
Framework Phonegap được sử dụng bởi một số nền tảng ứng dụng di động như
Worklight, Convertigo và appMobi như là xương sống của động cơ phát triển điện thoại
di động dành cho khách hàng của họ. Adobe chính thức công bố việc mua lại của Nitobi
Sofware – nhà phát triển ban đầu, vào tháng 10 năm 2011. Từ đó các mã Phonegap đã
được sử dụng cho Apache Software Foundation để bắt đầu một dự án mới gọi là Apache
Cordova.
Ở các phiên bản Phonegap về trước, luôn bắt buộc các nhà lập trình khi tạo ra các ứng
dụng iOS thì cần phải có 1 máy tính chạy trên hệ điều hành Mac của Apple, hay nhà lập
trình muốn tạo ra các ứng dụng cho Window Phone thì phải có máy tính chạy Windows.
Tuy nhiên từ sau tháng 9 năm 2012, thì dịch vụ “Phonegap Build” đã được ra mắt và cho
phép các nhà lập trình tải lên mã nguồn của họ tới 1 hệ thống biên dịch đám mây, và nhớ
đó biên dịch ra các ứng dụng tương ứng cho từng nền tảng, chạy được trên nhiều loại
smartphone khác nhau.
21
2.2.3. Tại sao lại sử dụng Phonegap?
Nếu là một lập trình viên hay những người làm việc trong lĩnh vực tin học chắc hẳn còn
nhớ đến thuật ngữ: “Write one, run any where” xuất hiện và trở thành một cơn sốt vào
ngày 23/05/1995. Ngày mà công ty máy tính Sun Microsystems đã giới thiệu một công cụ
lập trình mới – ngôn ngữ Java. Java ra đời với một xứ mệnh khắc phục khó khăn trong

việc chuyển đổi các ứng dụng viết trên các hệ điều hành OS và các hệ xử lý CPU khác
nhau. Do vậy, người lập trình chỉ cần viết ứng dụng bằng Java đúng một lần, sau đó có thể
sử dụng ứng dụng này trên các hệ điều hành khác nhau như Windows XP, WindowsNT,
Mac OS, Unix,… theo phương châm: “viết một lân, chạy ở bất kỳ đâu”.
Như vậy trước tiên, Phonegap chính là truyền nhân suất sắc của Java khi hoàn thiện và
đẩy tiêu chí “Write one, run any Where” lên một tầm cao mới.
2.2.3.2. Những ưu điểm khi sử dụng Phonegap?
• Phonegap cho phép chúng ta “write once, run everywhere” (viết một lần nhưng
chạy trên mọi thiết bị).
• Chỉ cần có kiến thức về HTML5, CSS3, Javascript là có thể làm được.
• Ta có được các file cài đặt trên mỗi nền tảng khác nhau thông qua các application
stores (App Store, Android Market,…).
• Cung cấp nhiều API cho phép thao tác tốt với các tính năng của thiết bị (camera,
GPS, Files, Contacts,…)
2.2.3.3. Những hạn chế của Phonegap?
• Khó hoạt động trên các mobile browser cũ không hỗ trợ javascript và tốc độ chậm.
• Việc quản lý các tài nguyên của thiết bị không thực hiện được như: quản lý các
tiến trình (đồng bộ, bất đồng bộ), khả năng đồ họa hạn chế (3D).
• Layout ứng dụng sẽ không phù hợp khi chạy trên các màn hình thiết bị có độ phân
giải khác nhau, và tùy thuộc vào độ hỗ trợ HTML của trình duyệt của thiết bị. Ví
dụ: các apps cho android trên các thiết bị khác nhau thì sẽ không rõ nét vì trên
android hỗ trợ các bộ icon cho các độ phân giải khác nhau trên từng loai thiết bị.
• Khả năng đáp ứng các tính năng còn hạn chế ở một số nền tảng. Khi chúng ta phát
triển ứng dụng trên Android hoặc iPhone thì hầu hết các tính năng đều có thể áp
dụng được. Nhưng trên các nền tảng khác thì có thể một vài tính năng bị lỗi.
Nhưng trên hết, với các ưu điểm của Phonegap thì có thể thấy đây là một framework đang
có đà phát triển rất tốt và chúng ta không nên lo lắng vì Phonegap luôn cập nhật nhưng
phiên bản mới để khắc phục nhưng hạn chế của nó.
Sau đây ta sẽ tìm hiểu cách thức Phonegap hoạt động và các APIs mà nó hỗ trợ.
22

2.2.4. Cách thức Phonegap hoạt động
Hình 2: Kiến trúc bên trong 1 ứng dụng Phonegap
Trong phạm vi của ứng dụng native application, thì giao diện làm việc của ứng dụng về
bản chất bao gồm duy nhất một màn hình và nó cũng giống như một khung nhìn web
view chiếm dụng toàn bộ không gian màn hình của thiết bị. Khi ứng dụng được khởi chạy
thì nó sẽ tải trang page khởi tạo của ứng dụng (thông thường là trang index.html nhưng
lập trình viên có thể dễ dàng thay đổi thành trang khác) vào trong khung nhìn web view
và sau đó chuyển điều khiển tới web view để cho phép người dùng tương tác với ứng
dụng web application. Khi người dùng tương tác với nội dung (content) của ứng dụng, thì
các liên kết links hay các mã JavaScript trong phạm vi ứng dụng đó co thể tải các nội
dung khác từ các files tài nguyên được đóng gói trong ứng dụng này, hay có thể truy cập
thông qua mạng network và tải các nội dung content từ một website hay từ một server về.
Đối với một vài nền tảng mobile như bada, Symbian hay webOS thì ứng dụng native
application về bản chất chính là 1 ứng dụng web application.
23
Định nghĩa về web view
1 web view là 1 thành phần của ứng dụng native application mà được sử dụng để biểu
diễn nội dung web content (thông thường là các trang HTML) trong phạm vi 1 cửa sổ hay
1 màn hình của ứng dụng native application. Về bản chất thì nó giống như 1 thành phần
có khả năng tiếp cận theo hướng lập trình, được đóng gói vào bên trong trình duyệt web
browser có sẵn trong các thiết bị mobile.
Ứng dụng web application chạy trong phạm vi 1 webview cũng giống như bất kì những
ứng dụng web application khác mà chúng được chạy bên trong 1 trình duyệt web của
mobile. Nó có thể mở các trang HTML khác (theo cả 2 cách: 1 cách địa phương trực tiếp
trên thiết bị hay theo cách mở từ 1 web server). JavaScript nhúng vào bên trong các files
mã nguồn của ứng dụng chịu trách nhiệm thực thi xử lý các điều kiện logic, ẩn hiện nội
dung content nếu cần, chơi các media files, mở các trang pages mới, thực thi các tính
toán, và nhận về nội dung content từ sever hay gửi nội dung content tới server. Giao diện
của ứng dụng được tạo thành từ HTML và CSS.
Một trình duyệt web mobile thông thường không có khả năng truy cập vào các thành phần

sâu bên trong thiết bị giống như những ứng dụng chạy trực tiếp trên thiết bị (như
Contacts, Accelerometer, Camera, Compass, Microphone,…). Để có thể xây dựng 1 ứng
dụng mobile thú vị thì ứng dụng đó cần phải có khả năng truy cập vào các thành phần bên
trong của thiết bị, vượt ra ngoài 1 trình duyệt web thông thường. Phonegap trợ giúp cho
điều cần thiết này bằng cách cung cấp ra 1 bộ các hàm JavaScript APIs, cho phép các nhà
phát triển phần mềm có thể sử dụng để tạo nên ứng dụng web application chạy trong môi
trường ứng dụng của Phonegap có khả năng truy cập vào các thành phần của thiết bị vượt
quá giới hạn ngữ cảnh trình duyệt web.
Khi 1 lập trình viên xử lý 1 tính năng trong 1 ứng dụng mà nó có sử dụng 1 trong các hàm
Phonegap APIs, thì ứng dụng gọi tới API bằng cách sử dụng Javascript và sau đó 1 lớp
layer đặc biệt trong ứng dụng sẽ dịch hàm Phonegap API này, để gọi tới hàm native API
thích hợp với tính năng tương ứng.
Tất cả các lý thuyết nói trong phần trên được minh họa trong Hình 3 bên dưới. Sau đó ta
sẽ xem xét đến các hàm APIs mà hiện tại Phonegap hỗ trợ trên các nền tảng mobile.
24
Hình 3: Cách thức 1 ứng dụng Phonegap tương tác với thiết bị
2.2.5. Các hàm APIs mà Phonegap hiện đang hỗ trợ trên các nền
tảng mobile
25

×