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

Framework phát triển ứng dụng di động đa nền tảng

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 (947.59 KB, 57 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐÀO TẠO SAU ĐẠI HỌC
============

FRAMEWORK PHÁT TRIỂN ỨNG
DỤNG DI ĐỘNG ĐA NỀN TẢNG

Giảng Viên

: TS. Nguyễn Thanh Hùng

Học viên

: Nguyễn Tuấn Anh

Lớp

: CNTT1 2013B

Hà Nội – 2015

1


LỜI CAM ĐOAN
Tôi xin cam đoan luận văn được thực hiện là quá trình nghiên cứu khoa học của
bản thân được đúc kết từ quá trình nghiên cứu từ việc tập hợp các nguồn tài liệu, các kiến
thức đã học đến việc tự thu thập các thông tin liên quan và liên hệ thực tế tại đơn vị công
tác. Mọi sự giúp đỡ cho việc thực hiện luận văn này đã được tác giả cảm ơn và các thông
tin đã được trích dẫn trong luận văn đều đã được chỉ rõ nguồn gốc.


Tác giả

Nguyễn Tuấn Anh

2


LỜI CẢM ƠN
Luận văn được hoàn thành tại trường Đại học bách khoa Hà Nội, là kết quả của khoá cao
học CH2013B.
Đầu tiên cho phép tôi chân thành cám ơn tới Thầy giáo TS. Nguyễn Thanh Hùng đã trực
tiếp hướng dẫn và sửa chữa trong suốt thời gian nghiên cứu hoàn thành luận văn này
Tôi cũng xin bày tỏ lòng biết ơn sâu sắc tới các thầy cô giáo Viện đào tạo sau đại học đã
tham gia giảng dạy lớp Cao học ngành công nghệ thông tin khóa 2013B. Tôi xin cảm ơn
gia đình, các đồng nghiệp, các phòng ban chức năng và bạn bè đã giúp đỡ động viên tôi
trong suốt thời gian học tập và hoàn thiện luận văn.
Xin chân thành cảm ơn!

Người thực hiện

Nguyễn Tuấn Anh

3


MỤC LỤC
LỜI CAM ĐOAN ................................................................................................................ 2
LỜI CẢM ƠN ...................................................................................................................... 3
MỤC LỤC ........................................................................................................................... 4
DANH SÁCH HÌNH VẼ..................................................................................................... 7

DANH SÁCH BẢNG .......................................................................................................... 9
TÓM TẮT.......................................................................................................................... 10
CHƯƠNG 1 MỞ ĐẦU ...................................................................................................... 11
1.1. Giới thiệu ................................................................................................................ 11
1.2. Những thách thức trước khi phát triển ứng dụng đa nền tảng ra đời ..................... 14
1.3. Kết luận................................................................................................................... 17
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ................................................................................... 18
2.1. Phân loại các ứng dụng di động.............................................................................. 18
2.2. So sánh các Framework phát triển di động đa nền tảng ......................................... 19
2.2.1. Xamarin Tools ..................................................................................................... 20
2.2.2. Appcelerator Titanium......................................................................................... 21
2.2.3. Phonegap ............................................................................................................. 22
2.2. Giới thiệu về Framework mã nguồn mở Phonegap ................................................ 23
2.2.1. Phonegap là gì? .................................................................................................... 23
2.1.3. Đôi nét về lịch sử của Phonegap ......................................................................... 23
2.1.4. Tại sao lại sử dụng Phonegap? ............................................................................ 24
2.1.5. Cách thức Phonegap hoạt động ........................................................................... 25
2.1.6. Các hàm APIs mà Phonegap hiện đang hỗ trợ trên các nền tảng mobile............ 28
4


CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG .......................................... 30
3.1. Mô hình phát triển ứng dụng đa nền tảng............................................................... 30
3.2. Môi trường và quy trình phát triển ......................................................................... 31
3.2.1. Môi trường phát triển........................................................................................... 31
3.2.2. Quy trình phát triển.............................................................................................. 31
3.3. Phân tích thiết kế và xây dựng chương trình ứng dụng .......................................... 34
3.3.1. Giới thiệu chung về chương trình ứng dụng ....................................................... 34
3.3.2. Phân tích chức năng của chương trình ................................................................ 36
3.3.2.1. Biểu đồ phân rã chức năng ............................................................................... 36

3.3.2.2. Đặc tả chức năng của chương trình .................................................................. 37
3.3.3. Phân tích chương trình ứng dụng về biểu đồ Use Case....................................... 41
3.3.3.1. Biểu đồ phân rã use case thể hiện chức năng Đăng nhập ................................. 42
3.3.3.2. Biểu đồ phân rã use case thể hiện chức năng Đăng xuất.................................. 42
3.3.3.3. Biểu đồ phân rã use case thể hiện chức năng Quản lý bảng tin ....................... 43
3.3.3.4. Biểu đồ phân rã use case thể hiện chức năng Quản lý bảng lương .................. 43
3.3.3.5. Biểu đồ phân rã use case thể hiện chức năng Tìm kiếm cán bộ ....................... 44
3.3.3.6. Biểu đồ phân rã use case thể hiện chức năng Xem thông tin cán bộ ............... 44
3.3.3.7. Biểu đồ phân rã use case thể hiện chức năng Liên lạc nhanh .......................... 45
3.4. Thiết kế cơ sở dữ liệu ............................................................................................. 45
3.4.1. Thiết kế cơ sở dữ liệu bảng Account ................................................................... 46
3.4.2. Thiết kế cơ sở dữ liệu bảng Employee ................................................................ 46
3.4.3. Thiết kế cơ sở dữ liệu bảng Employee_News ..................................................... 47
3.4.4. Thiết kế cơ sở dữ liệu bảng News ....................................................................... 47
3.4.5. Thiết kế cơ sở dữ liệu bảng Salary ...................................................................... 47
5


3.4.6. Thiết kế cơ sở dữ liệu bảng Cat_Salary............................................................... 48
3.5. Thiết kế giao diện ................................................................................................... 48
3.5.1. Màn hình Đăng nhập ........................................................................................... 49
3.5.2. Màn hình Trang chủ ............................................................................................ 49
3.5.3. Màn hình Danh sách tin tức ................................................................................. 50
3.5.4. Màn hình Danh sách lương.................................................................................. 50
3.5.5. Màn hình danh sách cán bộ ................................................................................. 51
3.5.6. Màn hình Xem thông tin cán bộ .......................................................................... 52
3.6. Đánh giá mức độ phù hợp khi sử dụng Phonegap để phát triển ứng dụng ............ 53
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................... 55
4.1. Kết quả, đánh giá chương trình phần mềm ............................................................ 55
4.2. Kết luận và hướng phát triển .................................................................................. 55

TÀI LIỆU THAM KHẢO ................................................................................................. 57

6


DANH SÁCH HÌNH VẼ
Hình I - 1 Tổng quan về Mobile Application
Hình I - 2 Sự khách nhau về phương thức giao tiếp
Hình I - 3 Sự phân mảnh phát triển song song với số lượng hệ điều hành
Hình I - 4 Sự gia tăng nguồn nhân lực cho các nền tảng phát triển
Hình I - 5 Phát triển ứng dụng riêng biệt trên các nền tảng
Hình II - 1 Kiến trúc bên trong 1 ứng dụng Phonegap
Hình II - 2 Cách thức 1 ứng dụng Phonegap tương tác với thiết bị
Hình III - 1 Tổng quan ứng dụng
Hình III - 2 Quy trình phát triển phần mềm đa nền tảng sử dụng Phonegap
Hình III - 3 Biểu đồ phân rã chức năng
Hình III - 4 Biểu đồ Use Case tổng quát
Hình III - 5 Biểu đồ Use case chức năng Đăng nhập
Hình III - 6 Biểu dồ Use case chức năng Đăng xuất
Hình III - 7 Biểu đồ Use case chức năng Quản lý bảng tin
Hình III - 8 Biểu đồ Use case chức năng Quản lý bảng lương
Hình III - 9 Biểu đồ Use case chức năng Tìm kiếm cán bộ
Hình III - 10 Biểu đồ Use case chức năng Xem thông tin cán bộ
Hình III - 11 Biểu đồ Use case chức năng Liên lạc nhanh
Hình III - 12 Cơ sở dữ liệu
Hình III - 13 Màn hình chức năng Đăng nhập
Hình III - 14 Màn hình Trang chủ
Hình III - 15 Màn hình Danh sách tin tức

Hình III - 16 Màn hình Chi tiết tin tức

Hình III - 17 Màn hình Danh sách lương
Hình III - 18 Màn hìn chi tiết lương

7


Hình III - 19 Màn hình Danh sách cán bộ
Hình III - 20 Màn hình thông tin cán bộ
Hình III - 21 Màn hình danh sách cán bộ dưới quyền

8


DANH SÁCH BẢNG
Bảng 1 Phân mảnh theo tính năng
Bảng 2 Bảng so sánh các dạng ứng dụng Mobile
Bảng 3 Bảng so sánh các dạng ứng dụng Mobile
Bảng 4 Bảng các hàm APIs được hỗ trợ cho từng nền tảng trong Phonegap
Bảng 5 Bảng đặc tả chức năng của chương trình
Bảng 6 Thiết kế cơ sở dữ liệu bảng Account
Bảng 7 Thiết kế cơ sở dữ liệu bảng Employee

Bảng 8 Thiết kế cơ sở dữ liệu bảng Employee_News
Bảng 9 Thiết kế cơ sở dữ liệu bảng News
Bảng 10 Thiết kế cơ sở dữ liệu bảng Salary
Bảng 11 Thiết kế cơ sở dữ liệu bảng Cat_Salary

9



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 luận vă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

10


CHƯƠNG 1 MỞ ĐẦU
1.1. Giới thiệ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. 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
sâu về một công nghệ duy nhất, đó là công nghệ nền Web(bao gồm HTML5, Javascript,
CSS3, Jquery Mobile,..).
11


Nội dung đề tài: “Framework phát triển ứng dụng di động trên đa nền tảng” sẽ nêu
lên thực trạng phân mảnh của ứng dụng di động hiện tại sau đó đưa ra giải pháp sử dụng
Phonegap, các công nghệ nền Web liên quan để giải quyết vấn đề, ngoài ra còn xây dựng
một chương trình phần mềm ứng dụng sử dụng Phonegap, JqueryMoible có thể chạy trên
các nền tảng di động khác nhau.
Nội dung Luận văn này gồm 4 chương:
Chương 1 – Mở đầu: Nêu thực trạng, các khó khăn hiện tại, đặt ra bài toán công nghệ
cần giải quyết.
Chương 2 – Cơ sở lý thuyết: So sánh đánh giá một số framework phát triển đa nền tảng.

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: Trình bày mô hình và quy trình phát triển ứng
dụng đa nền tảng, phân tích thiết kế và xây dựng, kiểm thử chương trình phần mềm sử
dụng framework Phonegap và JqueryMobile
Chương 4 – Kết luận và hướng phát triển: Tóm lược những kết quả của Luận văn,
những đạt được và hạn chế, triển vọng và hướng phát triển trong tương lai.
Cho đến hiện nay, trên thị trường có rất nhiều nền tảng điện thoại thông minh như:
Android, iPhone, BlackBerry, Nokia, Windows Phone, và WebOS. Gần đây với sự ra mắt
của các nền tảng mới hơn như Samsung Bada và Meego, cũng đang có xu hướng phát
triển mạnh và ngày càng có thế trên thị trường. Với một số lượng lớn các nền tảng điện
thoại thông minh như vậy, đã tác động đáng kể và đòi hỏi quan điểm vững chắc của các
nhà phát triển ứng dụng trên di động.
Trong năm 2000, chúng ta đã từng biết một hiện tượng tương tự trong thế giới
máy tính để bàn (Desktop), với sự có mặt của các nền tảng như Windows (Microsoft),
Mac (Apple) cùng nhiều phiên bản khác nhau của Linux và UNIX. Vào thời điểm đó, rất
khó để xây dựng một sản phẩm mà có thể chạy trên mọi nền tảng. Kết quả hướng giải
12


quyết được thực hiện trong nội bộ bằng cách xây dựng các Framework C++ và tích hợp
sẳn các mô-đun. Đi cùng với đó, Sun đã xây dựng một nền tảng chung (Java Platform) và
vấn đề đã dần được làm nhẹ đi.
Từ những năm 2004 đến năm 2008, cộng đồng các nhà phát triển đã nhìn thấy một
loại phân mảnh khác đang diễn ra trong thế giới tình duyệt. Và dễ dàng nhìn thấy hơn ở
đây đó là giữa Internet Explorer 6 với Firefox và Safari. Sau đó, cùng với sự ra đời của
Chrome và các trình duyệt khác thì sự phân mảnh này ngày càng diễn ra mạnh, cụ thể
hơn nữa. Bản chất của sự phân mảnh này chủ yếu là do một số trình duyệt không tuân thủ
theo một số thông số kỹ thuật được đặt sẳn của W3C (World Wide Web Consortium). Và
vì vậy, điều này không quá khó để giải quyết. Rất nhiều thư viện JavaScript đã giúp và

giải thoát tình trạng Cross-Browser trên.
Sự phân mảnh trong thế giới điện thoại thông minh Mobile OS lại phức tạp hơn,
bởi vì không có một đặc điểm kỹ thuật hay một chuẩn nhất định nào trong lĩnh vực phát
triển này. Năm 2007, Apple và Google đều tung ra những nền tảng di động của thế hệ
điện thoại thông minh. Và cho đến năm 2008 thì cả hai công ty này đều có thị trường
phát triển riêng với số lượng người dùng tăng dần theo cấp số mũ.
Các nhà phát triển ứng dụng di động nhanh chóng tiếp cận với các nền tảng mới và
xây dựng lại những ứng dụng tương tự trên iPhone, Android, BlackBerry, WebOS,
Symbia và giờ đây lại phải thêm Samsung Bada, Window Phone vào danh sách này. Sự
thách thức cũng được làm rõ như khi chúng ta phát triển ứng dụng cho iPhone thì cần
Mac, cho BlackBerry thì lại cần Windows.

13


1.2. Những thách thức trước khi phát triển ứng dụng đa nền tảng ra đời

Mobile
Application



Web
Application

Hình I - 1 Tổng quan về Mobile Application

Điều đầu tiên cần lưu ý mobile application không phải là web application. Sự khác
biệt được thể hiện trong cả bản chất và các tính năng được cung cấp.
Cách người dùng tương tác với web application và mobile application cũng hoàn

toàn khác nhau. Người dùng tương tác với điện thoại thông minh thông qua màn hình
cảm ứng sinh động hơn và với nhiều phương thức khác.

Mobile
Application








Touch Screen
DPad
TrackBall
Keyboard
Accelerometer
Compass

Web
Application





Keyboard
Mouse
Trackpad


Hình I - 2 Sự khách nhau về phương thức giao tiếp

Sự khác biệt đó còn thể hiện ở trong việc nhận dạng vị trí thiết bị khả năng Push
Notification (thông báo).
Trong khi phát triển ứng dụng di động đang là xu hướng hiện nay, với số lượng ngày
càng tăng của các hệ điều hành (OS) di động, có rất nhiều thách thức liên quan đến việc
phát triển các ứng dụng di động.
14


Sự phân mảnh của các nền tảng hệ điều hành: Xu hướng phân mảnh với số lượng
ngày càng tăng của các nền tảng di động. Đầu tiên, đó là BlackBerry và điện thoại thông
minh Symbian, sau đó đến sự phát triển mạnh mẽ của iPhone, Android. Chắc chắn rằng,
nền tảng di động không dừng lại ở đó khi HP đến với WebOS, Microsoft đã giới thiệu
Windows Phone, và giờ đây, lại đến Samsung với Bada.

Hình I - 3 Sự phân mảnh phát triển song song với số lượng hệ điều hành

Tiêu hao nguồn nhân lực: Nếu chúng ta chọn việc xây dựng một ứng dụng di động trên
từng nền tảng thì chúng ta phải đối mặt với nhiều vấn đề nan giải. Cần một số lượng đội
(Team) phát triển ứng dụng tương ứng với mỗi nền tảng di động đó, đi kèm với đó sẽ là
các mức chi phí, người quản lý (Team Leader) với nhiều rủi ro có thể xãy ra.

Hình I - 4 Sự gia tăng nguồn nhân lực cho các nền tảng phát triển

Yêu cầu về kinh nghiệm với một nền tảng di động nhất định: Sự đòi hỏi kinh nghiệm
chuyên môn của một nhà phát triển ứng dụng di động là điều bắt buộc. Điều đó đảm bảo
mức độ chuyên nghiệp trong việc xây dựng ứng dụng di động ở một nền tảng nào đó.
15



Hình I - 5 Phát triển ứng dụng riêng biệt trên các nền tảng

Sự phân mảnh theo tính năng: Khả năng phân mảnh theo tính năng của các mobile
application cũng xãy ra cao, khi khả năng đáp ứng các chức năng cơ bản của hệ điều
hành lẫn phần cứng tương thích.
iOS

Android

BlackBerry

Palm

Accelerometer
Camera









Windows
Phone









x



Compass





x

x

x

Contacts








x



File

x







x

Geolocation











Media






x

x

x

Notification(Sound)









x

Notification(Vibration)











x



x

Storage

Bảng 1 Phân mảnh theo tính năng

Phân mảnh trong môi trường phát triển ứng dụng: Môi trường phát triển ứng dụng là
một trong những phân mảnh quan trọng. Chúng ta phải cần ít nhất hai hệ điều hành
Windows và Mac để phát triển ứng dụng cho các nều tảng sau đây.
o iOS
16


o Android
o BlackBerry
o WebOS
o Symbian
o Windows Phone
Hơn thế nữa, chúng ta sẽ phải sử dụng một loạt các ngôn ngữ lập trình, chẳng hạn
như Java, C++ và Objective C. Ngoài ra, ta còn phải sử dụng một số IDE, chẳng hạn như
Xcode, Eclipse.
Loại ứng dụng


Hệ điều hành

Tool phát triển

Ngôn ngữ lập trình

iOS

Mac

Xcode

Objective C

Android

Windows/Mac/Linux

Eclipse/Java/Android
Development
Tool(ADT)

Java

BlackBerry

Windows

Eclipse/JDE,Java


Java

Symbian

Windows/Mac/Linux

Carbide, C++

C++

WebOS

Windows/Mac/Linux

Eclipse/WebOS plugin

HTML/JavaScript/C++

Windows Phone

Windows

Visual Studio

C#, .NET, Silverlight

Bảng 2 Bảng so sánh các dạng ứng dụng Mobile

1.3. Kết luận
Như vậy ta có thể thấy trước sự phân mảnh của các ứng dụng di động, các nhà

phát triển đang phải đứng trước rất nhiều khó khăn. Bài toán đặt ra ở đây là làm sao lựa
chọn được công nghệ phù hợp để rút ngắn thời gian phát triển, giảm tiêu hao nguồn nhân
lực, ngoài ra việc nâng cấp, chỉnh sửa về sau cũng dễ dàng hơn. Vậy làm sao để giải
quyết bài toán này, giải pháp công nghệ sẽ được trình bày tại Chương 2. Cơ sở lý thuyết.

17


CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1. Phân loại các ứng dụng di động
Trước tiên ta tìm hiểu các loại ứng dụng di động. Ngày nay, lĩnh vực phát triển
ứng dụng di động tồn tại ba khái niệm là: Native Application, Web Application và
Hybird Application.
Native 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, Java cho Android, .NET cho Windows Phone,… ).
• Ưu điểm của Native Application 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 tập tin, camera, microphone, cảm biến
gia tốc,… ).
• 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.
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 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 application.
Hybird Application: Là con lai giữa hai khái niệm Native Application và Web

Application kia. Có thể hiểu nôm na các ứ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 application,
18


và web application giao tiếp với native application thông qua một cầu nối (bridge) để
mang lại sức mạnh của native application cho web application.
Sau dây là bảng so sánh đánh giá ba loại ứng dụng di động trên
Web

Hybrid

Native

Hợp lý

Hợp lý

Tốn kém

Thời gian phát triển

Ngắn

Ngắn

Dài

Tính khả chuyển của ứng
dụng


Cao

Cao

Không có

Nhanh

Có tốc độ xử lý giống ứng
dụng native

Rất nhanh

Các tính năng bản địa

Không có



Tất cả

Phát hành qua kho ứng
dụng

Không có






Khả năng mở rộng

Không có





Chi phí phát triển

Hiệu năng xử lý

Bảng 3 Bảng so sánh các dạng ứng dụng Mobile

Hybrid có thể kết hợp điểm mạnh của cả ứng dụng native và ứng dụng web và
khai thác được trải nghiệm cao nhất của nền tảng.Ví dụ như: Hiển thị nội dung trên tất cả
các thiết bị di động, tận dụng tối đa các tính năng của thiết bị di động như GPS, Camera,
cảm biến gia tốc… điều này không thể làm được trên ứng dụng web, sử dụng ứng dụng
ngay cả khi không có kết nối internet. Những ứng dụng di động của một số trang tin tức
hiện nay như Vnexpress, Dantri v.v.. đều là những ứng dụng lai. Nhìn vào bảng so sánh
trên, ta có thể thấy ứng dụng Hybrid là lựa chọn để giải quyết vấn đề phân mảnh của các
ứng dụng di động hiện nay
2.2. So sánh các Framework phát triển di động đa nền tảng
Hiện nay trên thị trường có khá nhiều framework phát triển di động đa nền tảng,
trong đó ba framework phổ biến hơn cả là Xamarin, Appcelerator Titanium và Phonegap.
19


Để lựa chọn được framework phù hợp, sau đây ta sẽ đánh giá ưu nhược điểm của từng

framework trên.
2.2.1. Xamarin Tools
Xamarin là công cụ về cơ bản sẽ cho phép phát triển các ứng dụng Android hoặc
iOS bằng ngôn ngữ C# và có thể chia sẻ rất nhiều phần code giữa các ứng dụng với nhau.
Xamarin cho cung cấp bộ công cụ cho phép người dùng sử dụng một lớp trừu
tượng phía trên các API của các thiết bị iOS, Android và Windows Phone. Lớp trừu
tượng này có thể truy cập vào tài nguyên của thiết bị, nhờ đó Xamarin có thể xây dựng
một ứng dụng native hoàn toàn cũng với giao diện người dùng native trên mỗi nền tảng.
Nhưng điều này cũng có nghĩa là ta sẽ bị giới hạn tới một mức độ nào đó việc chia
sẻ code giữa các nền tảng này. Điển hình là khi phát triển một ứng dụng sử dụng công cụ
của Xamarin, lập trình viên sẽ xây dựng một phần lõi của ứng dụng mà code của nó có
thể chia sẻ giữa hai nền tảng iOS và Android, và thậm chí là cả phiên bản trên Windows
Phone của ứng dụng cũng dựa trên thư viện lõi này. Với hướng tiếp cận này thì đội ngũ
lập trình viên có khả năng sử dụng lại khoảng từ 60-70% code của ứng dụng mà không
phải vất vả.
Ngoài ra để có thể tiến xa hơn bằng cách tự phát triển các lớp trừu tượng
(abstractions) của riêng mình sử dụng một kiến trúc kiểu như MVC hay MVVM, với
hướng tiếp cận này, dĩ nhiên là sẽ khó hơn một chút để bắt đầu nhưng có thể sử dụng
được lại nhiều code hơn, có lẽ lên đến khoảng 80-90%.
Nếu đánh giá về công cụ thì các công cụ của Xamarin có thể nói là rất tuyệt vời.
Xamarin cũng có một IDE của riêng nó gọi là Xamarin Studio. IDE này thì đa nền tảng,
nó được thiết kế rất tốt và dễ dàng sử dụng. Công cụ Xamarin này cũng có một plugin
cho Visual Studio, nó sẽ cho phép phát triển ứng dụng đa nền tảng trong Visual Studio.
Plugin này thậm chí cho phép phát triển một ứng dụng iOS từ Visual Studio, nhưng sẽ

20


cần một máy Mac để thực hiện công việc build ứng dụng. (Công cụ này sử dụng một
triệu gọi từ xa tới máy Mac để thực hiện công việc build đó.)

Mặc dù có những ưu điểm như trên, tuy nhiên Xamarin cũng có những nhược
điểm. Thứ nhất Xamarin là framework thu phí, và để sử dụng đầy đủ tính năng của
framework doanh nghiệp sẽ phải bỏ ra một khoản chi phí không hề nhỏ. Một nhược điểm
nữa của Xamarin là hiện tại framework này chưa hỗ trợ nhiều nền tảng mà chỉ dừng lại ở
iOS, Android và Windows Phone.
2.2.2. Appcelerator Titanium
Titanium là công cụ cho phép lập trình viên viết tất cả code của mình dựa trên
SDK của nhà sản xuất bao gồm các thành phần giao diện UI. Điều này có nghĩa là khi
viết một ứng dụng Titanium đồng nghĩa với việc ta đang viết một giao diện người dùng
đa nền tảng.
Các ứng dụng Appcelerator Titanium được biên dịch thành các ứng dụng gốc hoàn
toàn và sử dụng những control gốc thực sự trên nền tảng đó.Ví dụ, trong Titanium việc
lập trình khai báo một button và layout xác định cũng như một số thuộc tính cho button
đó, khi ta biên dịch ứng dụng, thì button này sẽ xuất hiện như là một button gốc của
Android khi chạy trên thiết bị Android và như là một button gốc của iOS khi nó chạy trên
iOS. Điều này có nghĩa là ta có thể xây dựng một ứng dụng đa nền tảng hoàn chỉnh bao
gồm giao diện gốc với 100% code được sử dụng lại và thực hiện nó trong JavaScript. Tuy
nhiên, các hệ điều hành có nhiều thành phần UI và mô hình tương tác là đa nền tảng vẫn
tồn tại nhiều phần không giống nhau. Ví dụ, trong iOS có một control rất lý tưởng là
Navigation Controller, nó sẽ lưu vết các screen nào mà người dùng đã lướt qua và cho
phép họ quay trở lại một cách dễ dàng; trong Android thì không có control như vậy. Mặc
dù Titanium cũng hỗ trợ các control theo nền tảng xác định, nhưng điều này có nghĩa là
lập trình viên phải viết thêm một vài đoạn code điều kiện dựa trên nền tảng cụ thể.

21


Như vậy, mặc dù đội ngũ lập trình có thể lập trình với mẫu số chung nhỏ nhất giữa
các nền tảng và thu được một ứng dụng đa nền tảng đầy đủ và bộ source code có thể sử
dụng lại nhưng việc sử dụng các control trong Titanium hơi phức tạp và việc phát triển,

bảo dưỡng trở nên vất vả hơn.
2.2.3. Phonegap
PhoneGap về cơ bản là một tập các hàm JavaScript API, nó cho phép ứng dụng có
thể truy cập những tài nguyên gốc trong thiết bị di động. Nó cũng là một wrapper và cho
phép xây dựng một ứng dụng web được cài đặt cục bộ trên thiết bị.
Khi xây dựng một ứng dụng sử dụng PhoneGap, về cơ bản là đang xây dựng một
trang web di động sử dụng HTML5 và JavaScript, cũng giống như việc xây dựng những
trang web khác hiện nay, sau đó đặt mã HTML và JavaScript đó trên thiết bị di động. Các
ứng dụng PhoneGap chạy trên trình duyệt cục bộ trên điện thoại và có một số cơ chế để
triệu gọi vào các thư viện gốc thông qua các giao diện lập trình ứng dụng JavaScript API.
Điều này có nghĩa là nếu ta đang phát triển một ứng dụng PhoneGap, thì ta có thể phát
triển nó giống như một trang web di động đa nền tảng và có thể sử dụng bất kỳ mobile
framework nào mà ta muốn, như Sencha Touch, hoặc JQuery Mobile, v.v…Vì tất cả code
trong ứng dụng là HTML và JavaScript nên phần lớn sẽ có thể chia sẻ được. Công cụ để
phát triển PhoneGap rất dễ dàng để xây dựng, lập trình viên có thể xây dựng môi trường
trên nhiều hệ điều hành khác nhau, đây là một ưu điểm của Phonegap. Phonegap cũng
cung cấp các Plugin cho nhiều IDE vì vậy lập trình viên sẽ không mất thời gian làm quen
với các IDE mới. Một ưu điểm nữa của PhoneGap là cho phép triển khai dự án vào bất cứ
môi trường nào khác môi trường đang phát triển, và có thể build một cách tự động cho
những nền tảng khác.
Như vậy, mặc dù Phonegap cũng có những hạn chế, nhưng so với các framework
khác thì Phonegap là lựa chọn phù hợp nhất. Doanh nghiệp sẽ không phải trả phí, đội ngũ
phát triển sẽ dễ dàng tiếp cận với việc phát triển ứng dụng di động bởi yêu cầu về công
nghệ chỉ là những ngôn ngữ phổ biến như HTML, Javascript.
22


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).
2.1.3. Đô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.
23


Ở 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.
2.1.4. 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.
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,…)
24


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ợ.
2.1.5. Cách thức Phonegap hoạt động
Ứng dụng Web

Ứng dụng Native
WebView

HTML

Java
Script

CSS

Đóng gói
Nội dung khác

Phonegap Interface

Hình II - 1 Kiến trúc bên trong 1 ứng dụng Phonegap


25


×