• Thứ Ba, 25/10/2011 11:00 (GMT+7)

    Cơ hội rộng mở cho ứng dụng di động

    Phương Nga
    Kho ứng dụng App Store hay Android Market đã mang đến nhiều cơ hội cho nhà phát triển và người dùng có nhiều cơ hội sử dụng các ứng dụng trên thiết bị di động.
     

    Ứng dụng di động (mobile app) được xem là phần mềm dành cho điện thoại thông minh (smartphone), máy tính bảng (tablet) để thực hiện những tác vụ như chơi trò chơi (game), lập lịch, nghe nhạc, xem bản đồ… Ứng dụng di động là một khái niệm chung cho mọi ứng dụng, bao gồm cả ứng dụng native app (là một ứng dụng được thiết kế đặc biệt chỉ chạy trên một hệ điều hành của một thiết bị nào đó và thường phải điều chỉnh để chạy được trên các thiết bị khác nhau) và web app (là ứng dụng web chạy trên trình duyệt; hay là một phần cũng như toàn bộ ứng dụng được tải về từ web cho mỗi lần chạy); xem "Một số khác biệt giữa native app và web app".

    Trong vài năm nay trở lại đây, ứng dụng di động vẫn là cách tiếp cận được ưa thích trong việc cung cấp các dịch vụ hay nội dung mới trên các thiết bị di động. Và có lẽ một ngày không xa nữa, thay vì phải ghé vào kho ứng dụng App Store hay Android Market, người dùng chỉ cần nhấn một đường liên kết (link) ở màn hình chính để thực thi ứng dụng ngay trên trình duyệt.

    Khi phát triển các ứng dụng cho thiết bị di động, các nhà phát triển thường xây dựng một native app – là loại ứng dụng mà người dùng sẽ mua tại kho ứng dụng trực tuyến và cài đặt vào bộ nhớ điện thoại. Hầu hết các nhà phát triển đều đồng tình rằng native app có vẻ tốt và cho hiệu quả tốt hơn so với ứng dụng web. Đa số người dùng vẫn còn ngại sử dụng ứng dụng web dựa trên trình duyệt, đặc biệt ở khâu nhập dữ liệu. Ngoài ra, một thuận lợi nữa của native app là ít dựa vào mạng: bởi vì native app lưu trữ hầu hết nội dung của điện thoại, chứ không dựa vào mạng kết nối như các ứng dụng web trên trình duyệt.

    Tuy nhiên, việc tiếp thị native app trong kho ứng dụng sẽ trở nên khó khăn đối với các nhà phát triển vì có thể ứng dụng của họ chẳng bao giờ được chú ý. Đơn cử, dù ứng dụng có thể nằm trong kho ứng dụng Android Market, nhưng nó cũng có nguy cơ bị "mất hút" trong hàng ngàn ứng dụng khác. Một vấn đề khác đối với các nhà phát triển ứng dụng là họ phải tạo ra nhiều phiên bản native app khác nhau cho các hệ điều hành di động khác nhau (iOS, Android…). Do đó, các nhà wphát triển phải chi nhiều tiền và tốn thời gian để tạo ra các phiên bản tương ứng thay vì nâng cấp hay tạo mới.

    Dấu ấn của HTML5

    Những chuyên gia trong lĩnh vực thiết bị di động tin rằng các nhà phát triển có thể khắc phục những khó khăn đề cập ở trên nếu họ dùng HTML5 để phát triển ứng dụng web trên trình duyệt. 

     
    HTML5 là nâng cấp đầu tiên cho ngôn ngữ đánh dấu siêu văn bản từ năm 1999. Mặc dù tiêu chuẩn HTML5 chính thức có thể không được W3C (Worldwide Web Consortium) hoàn thiện cho đến năm 2014, nhưng hầu hết các trình duyệt di động hiện nay đều hỗ trợ cho ngôn ngữ này.

    HTML5 cho phép các trình duyệt cả ở máy tính để bàn lẫn thiết bị di động có thể tạo ra những tính năng mới như dò tìm vị trí, phát lại âm thanh hay video mà không cần chương trình nhúng (plug-in). Thuận lợi lớn nhất mà HTML5 mang lại là giúp nhà phát triển có thể tập trung tạo một phiên bản cho một ứng dụng và có thể chạy "êm" trên nhiều loại trình duyệt, dễ dàng tiếp cận vào thị trường hơn. Tham khảo bài: "HTML5-Tương lai web" (A1001_88), "Sẽ có chuẩn chung HTML5" (A1011_32).

    Mạng cũng là yếu tố quan trọng. Với sự xuất hiện của mạng 4G, có thể giúp chuyển nội dung nhanh gấp 10 lần mạng 3G, từ đó người dùng có thể lấy thông tin nhanh hơn trước đây. Các ứng dụng web dựa trên trình duyệt sẽ có cơ hội kết hợp tốt hơn với hoạt động của native app.

    Thực tế, trong những trường hợp cụ thể thì kho ứng dụng trực tuyến trên iPhone/iPad có thể thỏa mãn nhu cầu của người dùng. Tuy nhiên, ứng dụng web có thể cung cấp một số điểm thuận lợi hơn so với native app như có thể tương thích với nhiều nền tảng khác nhau, có tính linh hoạt và chi phí vừa phải, tuy nhiên nó cũng phải đối mặt với những khó khăn trong khâu thiết kế, phát triển, triển khai.

    Dù cuộc tranh luận về native app và ứng dụng web dựa trên trình duyệt vẫn diễn ra sôi nổi, nhưng các nhà phát triển cũng chưa đưa ra quyết định cụ thể nào vì thực tế đang tồn tại cả 2 dạng ứng dụng này. Ví dụ, một nhà phát triển có thể tạo ra một phiên bản ứng dụng web dạng "rút gọn" trên trình duyệt, cho phép người dùng có thể dùng thử mà không cần phải ghé vào kho ứng dụng trực tuyến. Nếu người dùng thích ứng dụng này, họ có thể quyết định mua phiên bản hoàn chỉnh như một native app. Ngoài ra, nhà phát triển cũng có thể xây dựng nhiều native app theo giống cách họ làm với ứng dụng web trên trình duyệt, bằng cách dùng cùng công cụ, sau đó "gói' chúng vào trong một native app.

    Một ý kiến khác từ các chuyên gia, nếu nhà phát triển có kế hoạch xây dựng ứng dụng trên thiết bị di động thì nên cân nhắc việc phát triển ứng dụng web hay native app. Để quyết định xây dựng theo hướng nào, có thể theo các tiêu chí gồm các yêu cầu tính năng cụ thể về hệ điều hành/phần cứng; Ngân sách; Mốc thời gian; Đối tượng người dùng.

    Như vậy, các nhà phát triển có thể quyết định tạo ứng dụng web dựa trên trình duyệt hay native app là phụ thuộc vào mục đích phân phối ứng dụng như thế nào. Nhà phát triển nên tự trả lời câu hỏi là có muốn quảng bá ứng dụng qua kho ứng dụng trực tuyến hay đưa lên Internet, chẳng hạn lên mạng xã hội, nhằm hấp dẫn người sử dụng chú ý đến ứng dụng đó.

    Nhiều người vẫn nghĩ rằng khi các smartphone được nhà sản xuất xây dựng sẵn kho ứng dụng sẽ là cách tốt nhất để native app cung cấp các tác vụ trên thiết bị. Tuy nhiên, tình huống này có thể thay đổi kể từ khi các trình duyệt web trên thiết bị di động được cải thiện nhiều hơn, tốc độ của các mạng di động nhanh hơn và có sự xuất hiện của HTML5. Vì vậy, nhiều người trong cộng đồng không dây cho rằng có thể sau này native app sẽ là cách tốt nhất để cung cấp nội dung và các dịch vụ cho người dùng thiết bị di động. Các chuyên gia cho rằng, nếu HTML5 hoàn thiện, có thể ứng dụng web trên trình duyệt tốt hơn và mang đến nhiều thứ thú vị hơn.

    Một số công cụ lập trình web di động

    Để chọn công cụ lập trình web chạy trên thiết bị di động là điều không hề dễ dàng. Nhưng sự xuất hiện đầy hứa hẹn của HTML5 đã giúp các nhà phát triển có thể khai thác tối đa những ưu thế của ứng dụng web trên thiết bị di động so với việc phải cài đặt phần mềm nào đó trên thiết bị.

    HTML5 đang dần trở nên đáng tin cậy đối với các nhà phát triển và cũng có nhiều tính năng phong phú hơn. HTML5 cho phép bạn lưu dữ liệu ở máy khách (client) và có thể thực hiện hầu hết những thứ mà một ứng dụng native app có thể thực hiện.

    Các ứng dụng dùng HTML5 dễ dàng tương thích với các nền tảng khác. Dù việc tương thích này không phải dễ, nhưng có thể sẽ đơn giản hơn là việc phải biên dịch ứng dụng từ Objective C sang ngôn ngữ Java. Tuy nhiên, hạn chế của HTML 5 là vấn đề kết nối, thường tốc độ khá chậm, do đó, nhiều nhà phát triển native app đã chọn cách sử dụng thời gian trì hoãn theo miligiây trong lệnh delay.

    Dưới đây là một số dự án tiềm năng liên quan đến công cụ lập trình web để giúp việc xây dựng ứng dụng web trên thiết bị di động được thuận lợi hơn.

    ChocolateChip-UI

    http://www.chocolatechip-ui.com/downloads.html

    Robert Biggs, nhà phát triển web ở Bắc California, Mỹ đã xây dựng ChocolateChip-UI là một khung tổ chức (framework), qua đó thể hiện được những nỗ lực về mặt giao diện trên thiết bị di động dùng ngôn ngữ HTML. 

    Về mặt kỹ thuật, mã nguồn nằm bên dưới là WAML (Web Application Markup Language) - một ngôn ngữ đánh dấu dựa trên HTML5, sử dụng các thẻ như <slider> hay <stack>. Ngôn ngữ JavaScript tích hợp cùng với WAML và đổi thành HMTL5 thuần túy dành cho smartphone. Đây là sự kết hợp giúp mọi thứ trơn tru và hiệu quả. Bạn có thể "trộn" HTML, CSS và JavaScript vào trong WAML và tiến trình biên dịch có thể diễn ra suôn sẻ.

    Bộ sưu tập các ứng dụng nhỏ (widget) dạng WAML của ChocolateChip-UI khá toàn diện và tất cả trông giống giao diện người dùng theo chuẩn của thiết bị iPhone.

    Mobl

    http://www.mobl-lang.org/get/

    Nhóm Mobl quyết định xây dựng một framework để tạo các ứng dụng trên thiết bị di động, có thể chạy trên các trình duyệt WebKit. Bạn có thể viết bằng HTML, JavaScript và CSS ngay trong Mobl, sau đó trình biên dịch chúng trên trình duyệt di động. Mobl là một ngôn ngữ mã nguồn mở mới miễn phí, được thiết kế để giúp tăng tốc các ứng dụng trên thiết bị di động, có sử dụng công nghệ HTML5.

    Cách tiếp cận của Mobl có thể khắc phục một số vấn đề có trên JavaScript, chẳng hạn như làm thế nào để theo dõi tất cả các dấu ngoặc đơn lồng vào nhau trong JavaScript mà có thể giảm thiểu khả năng xảy ra lỗi. Mobl có thể loại bỏ sự phức tạp trong JavaScript bằng cách khai báo nhiều cú pháp hơn. Ví dụ, nếu bạn muốn tạm ngưng 1.000 miligiây, bạn có thể viết:
    sleep(1000); doNext();

    Mobl biên dịch đoạn trên vào trong JavaScript cùng với hàm setTimeout và hàm trả về thực thi doNext().

    Các nhà phát triển có thể không thích cách tiếp cận này nếu như họ vẫn cảm thấy thuận tiện hơn khi viết bằng Objective C hay JavaScript. Lý do là các chuyên gia lập trình cho rằng cú pháp Mobl chỉ khác biệt chút ít so với cú pháp của các ngôn ngữ khác, mà kết quả cuối cùng cũng không khác biệt gì so với Objective-C hay JavaScript. Tuy nhiên, đối với những người yêu thích ngôn ngữ mới thì đây sẽ là một sự khám phá, có thể giúp họ tạo ra những ý tưởng mới đáng giá.

    jQuery Mobile

    http://jquerymobile.com/download/

    Framework của jQuery hướng đến việc xây dựng bộ công cụ giao diện người dùng đơn giản dành cho smartphone. Tiêu chí này đã giúp jQuery trở nên hấp dẫn hơn và được nhiều nhà sản xuất phần cứng hỗ trợ tốt và tương đối đạt thành công trên các thiết bị di động.

    Phần đơn giản nhất của jQuery Mobile là bố cục dựa trên HTML. Các trang được xây dựng trên thẻ DIV và những thành phần chuẩn khác như thẻ <LI>. Kết quả, jQuery Mobile dễ dàng tích hợp với trang web động. Ví dụ, có một số theme Drupal và mô-đun được xây dựng dựa vào jQuery Mobile, tuy nhiên, sự tích hợp chặt chẽ với jQuery, không có nghĩa là nhiều tiện ích plug-in dành cho máy tính để bàn sẽ có thể hoạt động trên các trang web dành cho thiết bị di động. Chỉ có một số plug-in được xây dựng để mở rộng framework trên thiết bị di động.

    The-M-Project

    http://the-m-project.net/

    Nếu bộ phương thức và kiểu (style) của jQuery Mobile vẫn chưa đủ đa dạng, thì M-Project sẽ cung cấp một bộ widget được biên dịch vào trong các đối tượng jQuery Mobile. M-Project có thể xử lý nhiều chi tiết thiết kế cốt lõi hơn.

    Mã nguồn dựa theo cấu trúc của mô hình Model-View-Controller. Bên cạnh đó, một số dự án cũng đang xây dựng theo cấu trúc JSON, là một định dạng hoán vị dữ liệu nhanh giúp dễ dàng đọc và viết, cũng là cơ sở dựa trên tập hợp của ngôn ngữ lập trình JavaScript.

    Touchqode

    http://www.touchqode.com/download.htm

    Touchqode là môi trường phát triển web nhỏ gọn, nhưng điều gây ngạc nhiên là nó có thể chứa một số lượng lớn các tính năng nhưng chỉ nằm vỏn vẹn trong màn hình nhỏ. Mã nguồn của Touchqode thì nổi bật, đoạn script có thể chạy cục bộ và bạn có thể đồng bộ mã nguồn mới thông qua giao thức FTP. Giả sử nếu sếp yêu cầu sửa mã nguồn gấp trong lúc bạn đang ở bên ngoài, bạn vẫn có thể chỉnh sửa mã nguồn chỉ với vài thao tác bấm phím. Các chuyên viên phần mềm nhận định còn quá sớm để giả định rằng người dùng sử dụng Touchqode chỉ để tạo một vài dòng mã nguồn. Nhưng dù sao sự có mặt của Touchqode cũng đáng ghi nhận.

    LimeJS

    https://github.com/digitalfruit/limejs

    DigitalFruit đã tạo ra LimeJS để hỗ trợ cho các nhà phát triển muốn sử dụng các đối tượng WebGL là một phần của HTML5. Các kết quả trước đây của LimeJS tỏ ra hiệu quả với trình duyệt WebKit. Về mặt kỹ thuật, mã nguồn là JavaScript, nhưng cấu trúc trông tương tự như ngôn ngữ C kết nối đến thư viện OpenGL.

    LimeJS cung cấp một số tính năng đáng giá để đơn giản hóa việc phát triển game. LimeJS sẽ hấp dẫn bất cứ ai đã từng trải qua thời gian phát triển game dành cho framework OpenGL ở các môi trường khác nhau.

     Jdrop

    http://jdrop.org/

    Trong thực tế, Jdrop là nguồn tài nguyên web để giúp các nhà phát triển di động có thể phân bố dữ liệu hợp lý giữa các màn hình nhỏ trên thiết bị di động và màn hình máy tính, giúp việc phân tích tốt hơn.

    Để giảm bớt khó khăn trong việc trích xuất thông tin phản hồi từ các thiết bị di động, Jdrop cung cấp Mobile Perf - là một đoạn mã JavaScript có tích hợp một bộ các bookmarklet, gồm Firebug Lite, Page Resources, DOM Monster, SpriteMe, CSSess và Zoompf. Thông qua Mobile Perf, bạn có thể sửa lỗi ứng dụng trên điện thọai và lưu kết quả dữ liệu một cách tự động vào trong đám mây Jdrop, để có thể phân tích sau đó trên máy tính của bạn. Đây cũng là cách hay giúp sửa lỗi và trải nghiệm với HTML của các trang web di động mà bạn thích.

    XUI, Zepto

     
    http://xuijs.com/downloads

    http://zeptojs.com/

    Hầu hết các framework được mô tả trong bài này thường được viết theo ngôn ngữ riêng. Nhưng với XUI và Zepto thì rất khác biệt, cả 2 xuất phát từ ý tưởng dùng HTML và CSS có thể giúp việc hiển thị trông tốt hơn.
    Bạn sẽ có được những gì HTML cung cấp, sau đó sẽ kiểm soát "vẻ ngoài" qua CSS. Thư viện sẽ giúp bạn tận dụng mô hình đối tượng dữ liệu (DOM - Document Object Model) qua việc cung cấp các tính năng như cho phép tìm thấy các thành phần, kèm các lớp (class) và các sự kiện (event).

    Phiên bản hiện tại của Zeptop cỡ khoảng 2.300 byte, chỉ bằng 1/10 kích cỡ của jQuery. XUI thì lớn hơn một chút. XUI có vẻ na ná với jQuery khi cả 2 công cụ này đều vay mượn nhiều cú pháp.

    Jo và Sencha Touch

    http://www.sencha.com/products/touch/download/

    https://github.com/davebalmer/jo/downloads

    Jo và Sencha là 2 "bộ sưu tập" các ứng dụng nhỏ, có thể tạo ra các ứng dụng di động theo hướng thẻ trong JavaScript. Cấu trúc của cả 2 được định nghĩa bởi một tập hợp các hàm trong JavaScript để tạo widget, được sắp xếp bởi các thư viện, trông giao diện thân thiện khi hiển thị trên màn hình điện thoại. Jo là một dự án mã nguồn mở miễn phí, được cấp giấy phép OpenBSD.

    Khi tạo một đối tượng widget mới, framework Touch của Sencha Touch sẽ "nhúng" widget mới vào trong một trang. Kết quả là một số ứng dụng hoạt động tốt trên cả iPad và iPhone dù kích cỡ màn hình của 2 thiết bị này có khác biệt. Tuy nhiên, hiện cả Jo và Sencha Touch đều cần viết nhiều mã nguồn, nhưng nhà phát triển của Sencha Touch cho biết sẽ khắc phục lỗ hổng này trong thời gian sớm.

    jQTouch

    http://jqtouch.com/

    jQTouch là một trong những framework tuyệt vời đầu tiên dành cho các ứng dụng web trên thiết bị di động. Người phát triển jQTouch là David Kaneda đã rời khỏi dự án này sang làm việc cho công ty Sencha, tuy nhiên sau đó Jonathan Stark đã tiếp quản dự án này và tiếp tục đưa vào những tinh chỉnh đáng giá cho mã nguồn jQTouch.

    Các ứng dụng trong jQTouch được xây dựng bằng cách thêm HTML vào thẻ DIV; jQTouch phân tích những thẻ DIV để đưa vào đúng lớp, sau đó thêm mã nguồn của riêng nó để xử lý các sự kiện.

    Tạo một số ứng dụng web trên jQTouch khá đơn giản, giống như tạo một trang web. jQTouch cũng dễ dàng để tích hợp với các công cụ web động như JSP, PHP và một số framework khác dựa trên máy chủ. Vào những tình huống cụ thể, mã nguồn trông giống native app.

    PhoneGap

    http://www.phonegap.com/

    PhoneGap là một framework mã nguồn mở dành cho thiết bị động được xem là thành công nhất cho đến thời điểm này. PhoneGap cho phép bạn xây dựng các native app dành cho smartphone bằng cách sử dụng ngôn ngữ HTML, JavaScript và CSS. PhoneGap giúp các ứng dụng web của bạn có thể đơn giản và hoạt động tương đối nhanh.

    Cách thức hoạt động của PhoneGap: đầu tiên xây dựng ứng dụng của bạn nhờ vào các tiêu chuẩn web như HTML, JavaScript… Tiếp theo, "gói" mọi thứ lại nhờ vào PhoneGap, sau đó bạn có thể truy cập vào các giao diện trình ứng dụng (API). Cuối cùng, PhoneGap dùng các công nghệ dựa trên chuẩn web để làm cầu nối giữa các ứng dụng web và các thiết bị di động.

    Tham khảo PCWorld, InfoWorld, IDG News Service

    ID: A1108_62