Một mô hình chỉ cần đầu tư 15.000 USD và một mô hình
cần đến 250.000 USD, bạn chọn mô hình nào? Với tình hình kinh tế hiện
nay, việc lựa chọn trở nên đơn giản. Lấy một ứng dụng web thông thường,
thêm vài lệnh kiểm tra loại trình duyệt web, vậy là chúng ta có phiên
bản đã điều chỉnh theo màn hình nhỏ của ĐTTM.
Các nhà phát triển đang xâm nhập thị trường ĐTTM
theo nhiều cách, một trong những cách được khai thác nhiều nhất là
chỉnh sửa ứng dụng web. Doanh số cao từ App Store của Apple thật hấp
dẫn, nhưng mã lệnh riêng không phải lúc nào cũng là giải pháp tốt nhất.
Thay vì viết bằng Java, C# hay C++, bạn có thể chỉnh
sửa các file CSS để định dạng cho màn hình của ĐTTM và sau đó viết
JavaScript để xử lý các sự kiện. Kết quả khá tốt. Đây không phải là
giải pháp phù hợp cho các game phức tạp cần sức mạnh đồ hoạ, nhưng mọi
công việc khác JavaScript có thể xử lý tốt. Có lẽ vì vậy mà lúc đầu
Steve Jobs chỉ cho các nhà phát triển ứng dụng trên iPhone làm việc với
"hộp cát - sandbox" chật chội này (tức ứng dụng chạy trong trình duyệt
Safari).
Có một số điều lý giải khả năng HTML làm việc tốt
trên môi trường ĐTTM. Nó được thiết kế từ đầu để đánh dấu tài liệu mà
không cần quan tâm đến kích cỡ màn hình. Tuy các nhà thiết kế web luôn
bực bội với các thẻ điều khiển hiển thị DIV "vô kỷ luật", nhưng kết quả
thường trông khá tốt trên màn hình nhỏ của ĐTTM. Những người kỹ tính có
thể cần dùng đến các file CSS riêng hay thậm chí một vài thẻ đánh dấu
riêng cho màn hình nhỏ của ĐTTM, nhưng thường thì các thiết lập mặc
định đáp ứng yêu cầu.
Ưu điểm thứ hai là sự phổ biến của WebKit, một thư
viện nguồn mở dùng để dựng trang HTML. Cả iPhone và Google Android đều
dùng WebKit và hiện Torch Mobile đang tạo 1 trình duyệt dựa trên WebKit
cho Windows Mobile. Loại trừ những điểm không tương thích giữa các
trình duyệt di động, bạn có thể phát triển các công cụ có khả năng chạy
trên nhiều hệ ĐTTM. Android có thể chạy ứng dụng Java và iPhone có thể
chạy ứng dụng viết bằng Objective C, nhưng cùng một ứng dụng có thể
chạy trên cả hai thông qua WebKit.
Lợi dụng trình duyệt
Các hãng tên tuổi đã có nhiều cải tiến bổ sung cho
trình duyệt của mình để có khả năng xử lý một số tính năng của ĐTTM. Đa
phần các bổ sung khá đặc biệt và khá mạnh. Ví dụ, iPhone của Apple giám
sát các lệnh gọi đến tên miền map.google.com để chuyển đến ứng dụng
Maps ngoài trình duyệt. Bạn có thể kết hợp ứng dụng của mình với ứng
dụng Maps bằng cách ấn định URL theo đúng định dạng.
Không chỉ dùng "lối tắt" trong HĐH, các cải tiến bổ
sung còn khai thác nhiều hàm mới trong đặc tả CSS và trong JavaScript
được tất cả trình duyệt hỗ trợ. Chẳng hạn trình duyệt BlackBerry sẽ
chia sẻ tọa độ GPS của bạn với trình biên dịch JavaScript, nhưng chỉ
sau khi thông báo cho bạn biết có 1 website tò mò muốn biết vị trí địa
lý của bạn. Nếu bạn chấp thuận, chương trình JavaScript sẽ lấy kinh độ
và vĩ độ của ĐTTM của bạn để làm việc: có nhiều khả năng, bao gồm việc
gửi dữ liệu tọa độ địa lý đến website ở xa.
Các công ty sản xuất ĐTTM tên tuổi cũng dùng web như
một kênh dẫn cho phần mềm và thông tin bằng cách cho phép dễ dàng tích
hợp các trang web vào môi trường ĐTTM. Chẳng hạn Apple cung cấp một bộ
thẻ siêu dữ liệu phong phú, có thể biến bất kỳ trang web nào thành ứng
dụng iPhone. Các thẻ này cho phép người dùng đặt địa chỉ đánh dấu
(bookmark) 1 trang web ở trang khởi đầu, bookmark này xuất hiện giống y
như bất kỳ ứng dụng iPhone nào tải về từ kho iTunes. Hình thức URL có
thể giấu đi, cho phép trang web chiếm toàn màn hình khi người dùng nhấn
lên biểu tượng. Nó trông như được viết bằng Objective C, tuy thực chất
vẫn là ứng dụng web được viết bằng JavaScript và CSS.
Các tính năng không chỉ giới hạn cho việc đánh lừa
thị giác. Trình biên dịch JavaScript trong các trình duyệt di động cũng
sẽ có thể lưu thông tin trên ĐTTM trong CSDL SQLite. Hướng đi này sẽ
làm cho ĐTTM trở thành 1 bộ máy độc lập.
Sư kết hợp này cho phép xây dựng các ứng dụng gọn
nhẹ và bớt làm nghẽn mạng không dây. ĐTTM có thể lưu phần lớn dữ liệu
làm việc cục bộ và chỉ thỉnh thoảng gửi các bản sao đến máy chủ. Đây là
mô hình lai giữa desktop độc lập và client-server triển khai đơn giản.
Đi cùng JavaScript
Quyết định của RIM dùng Google Gears phản ánh phần
nào sự chuẩn hóa đang dần hình thành. Dĩ nhiên, Google đã bắt đầu tiến
trình này bằng cách đưa Google Gears vào phiên bản Android hiện tại.
Các nhà phát triển web có thể trông chờ các thư viện mở rộng cho
JavaScript sắp ra mắt.
Một nhà phát triển Android tại Google nói rằng bộ
công cụ Gears chỉ mới là bắt đầu. Chương trình này chỉ là một chặng
trên con đường đạt đến các tính năng sẽ xuất hiện trong HTML5.
Việc WebKit được quan tâm giúp ích đôi chút cho sự
chuẩn hóa. Mặc dù trình duyệt của Google Android được xây dựng dựa trên
cùng công cụ WebKit cũng được dùng bởi Apple, nhưng nó không có đủ tất
cả các hàm. Trình duyệt của Apple có nhiều tính năng cho phép dùng CSS
để định nghĩa lại trang mỗi khi lắc điện thoại và xoay từ đứng thành
ngang hay ngược lại. Nó cũng có một số hàm JavaScript để thay đổi các
tính năng CSS bổ sung.
Có một số khác biệt làm thay đổi đặc tính then chốt
của mô hình lập trình web. Một số website được thiết kế nhận biết sự
kiện rê và di chuyển chuột nhằm tạo tính tương tác. Tính năng này không
làm việc đúng trên các màn hình cảm ứng vì ĐTTM không thể phân biệt
giữa 1 cú chạm để di chuyển chuột và 1 cú chạm để thao tác kích thước
và vị trí của trang web. Khi bạn chạm vào màn hình để di chuyển chuột
nhằm tương tác với 1 chức năng nào đó, iPhone sẽ nghĩ rằng bạn muốn kéo
trang để nhìn phần khác.
Giải pháp là bỏ các sự kiện này và chuyển sang dùng
các nút để thao tác. Bạn có thể tạo các nút để di chuyển con trỏ sang
trái và phải thay vì để con trỏ theo dõi các sự kiện di chuyển chuột.
Một giải pháp khác là dùng các sự kiện mới như những
sự kiện mà Apple đã tạo để xử lý đa chạm mà điện thoại của họ nhận
biết. Sự kiện gesturestart kích hoạt khi 2 hay nhiều ngón tay chạm màn
hình, và gesturechange kích hoạt khi các ngón tay di chuyển. Khi chỉ
còn 1 ngón tay chạm vào màn hình, sự kiện gestureend được gọi.
Một trong những điểm hấp dẫn trong phiên bản Safari
dành cho iPhone đó là khả năng thiết lập các ma trận chuyển đổi trong
lớp kiểu CSS. Qua thao tác bằng JavaScript, các ma trận này có thể mô
phỏng nhiều hiệu ứng 3-D. Nó không phải là OpenGL và sử dụng đơn giản
hơn nhiều.
Các kiểu cải tiến trên đang dần được đưa vào các nền
tảng lập trình thịnh hành. Ví dụ, WordPress có 1 theme để định dạng lại
dữ liệu cho màn hình của ĐTTM. Theme này tự động theo dõi biến
user-agent của trình duyệt và áp dụng các thay đổi HTML và CSS tuỳ biến
riêng cho người dùng iPhone. Những nỗ lực tương tự đang được thực hiện
nhằm cho phép lập trình viên dễ dàng nâng cấp các site được xây dựng
dựa trên Drupal, Ruby on Rails, Joombla...
Phần nhiều các bộ CSS+JavaScript đề cập ở trên được
phát triển dựa trên iUI framework của Joe Hewitt. Framework này là đoạn
mã JavaScript được viết một cách thông minh cho phép chuyển HTML thông
thường thành các menu đặc trưng của iPhone. Các menu này có thể được
xác định với thẻ UL, thay vì Cocoa cấp thấp hơn.
Dùng mã lệnh riêng
Tạo trang web hiển thị đúng trên điện thoại không
phải là cách duy nhất để xây dựng ứng dụng dùng HTML, JavaScript và
CSS. Còn có dạng ứng dụng lai hình thành lớp vỏ bao quanh HTML, CSS và
JavaScript. Dạng ứng dụng này cho phép bạn thực hiện hầu hết công việc
bằng các ngôn ngữ web nhưng có khả năng như ứng dụng viết bằng mã lệnh
riêng của điện thoại. Trong trường hợp Google, nhà phát triển xây dựng
ứng dụng bao quanh đối tượng WebView hành xử giống như cửa sổ trình
duyệt.
Giải pháp này tạo nên một số framework lai. Một
trong những framework hấp dẫn nhất là PhoneGap (http://phonegap.com),
đây là tập hợp các công cụ đa hệ biến 1 ứng dụng web thành ứng dụng độc
lập. Dự án này xây dựng các lớp áo bao theo mã lệnh riêng cho các ĐTTM
thịnh hành, và về lý thuyết có thể tạo nên ứng dụng chạy trên mọi ĐTTM.
Các công cụ này, được phân phối theo giấy phép
MIT(1), có đủ các mã lệnh riêng để liên kết trình biên dịch JavaScript
với các thành phần của điện thoại mà thường yêu cầu mã lệnh riêng. Dữ
liệu GPS từ điện thoại iPhone, Android phone và BlackBerry có thể truy
cập với cùng hàm JavaScript getCurrentPosition. Dữ liệu đo gia tốc cũng
có với Android và iPhone. Nhóm thực hiện dự án này hy vọng mở rộng để
hỗ trợ các hệ Symbian và Windows Mobile và điều khiển nhiều thành phần
điện thoại hơn.
Theo một chuyên gia của PhoneGap, "không nhất thiết
các ứng dụng phải viết bằng PhoneGap thay vì mã lệnh riêng. Một số chức
năng nền như lớp hiển thị OpenGL nằm ngoài khả năng của mô hình
PhoneGap vì lý do hiệu suất. Nếu bạn muốn xây dựng 1 trò chơi 3D, mã
lệnh riêng là giải pháp duy nhất. Nhưng PhoneGap giúp thực hiện dễ dàng
hơn những việc như chuyển đổi 1 ứng dụng web hiện có để chạy trên
iPhone hay tạo các ứng dụng nhỏ dạng "mashup"(2) mà sẽ tốn nhiều công
sức hơn nếu viết bằng mã lệnh riêng của iPhone. Tuy nhiên cần lưu ý khi
làm việc với PhoneGap, một tính năng thông minh có thể biến thành 1 lỗi
nguy hiểm nếu nó mở tung một vài API của iPhone cho website bất kỳ”.
Những ngôi sao của màn hình nhỏ
Nhóm thực hiện dự án PhoneGap đang nỗ lực chuyển mã
cho các hệ điện thoại khác. "Với Symbian chúng tôi hy vọng sẽ đưa ra
S60WebKit, đây là phiên bản của cùng trình duyệt WebKit dùng trên
Android và iPhone. Có hơi khó khăn một chút với các điện thoại Windows
Mobile, nhưng chúng tôi nghĩ có thể liên kết với các thư viện của
Firefox".
Tuy các dự án như PhoneGap có thể làm rất tốt việc
tạo ra hầu hết ứng dụng, nhưng chúng không thể làm cho JavaScript chạy
hiệu quả như chương trình C.
"Mô hình này có những hạn chế về khả năng", theo Ed
Burnette, tác giả của cuốn sách "Hello, Android". "Nếu bạn cần mức độ
tương tác, đa phương tiện cao hơn, hay truy cập đến các tài nguyên cục
bộ như không gian đĩa, thì bạn sẽ cần môi trường phát triển mã lệnh
riêng".
Ed Burnette nói thêm, "Nhiều ứng dụng web phổ biến
như Amazon, eBay, Facebook và Twitter đang được viết lại bằng mã lệnh
riêng cho ĐTTM. Phiên bản web làm việc ổn, nhưng ứng dụng viết riêng
cho thiết bị đem đến cho người dùng trải nghiệm tốt hơn mà ứng dụng web
hiện nay không thể đạt được". |