Web, nền tảng ban đầu
chỉ nhằm mục đích phân phát tài liệu trực tuyến, giờ đây có vai trò
quan trọng trong việc phân phối ứng dụng. Ứng dụng dựa trên web đem lại
nhiều lợi ích như: giải phóng người dùng khỏi gánh nặng cấu hình phần
mềm và quản lý các phiên bản cập nhật, cho phép họ truy cập ứng dụng và
dữ liệu từ nhiều máy tính khác nhau; cho phép nhà cung cấp ứng dụng
quản lý tập trung và tiết kiệm đáng kể chi phí triển khai.
“Java applet” là bước đi đầu tiên nhằm
cải thiện tốc độ đáp ứng của các ứng dụng web. Applet có khả năng thực
hiện nhiều tác vụ phức tạp phía client nhưng ứng dụng Java (phía
client) chạy chậm “có tiếng” và làm việc không ổn định trên các hệ điều
hành khác nhau – triết lý “viết một lần, chạy mọi nơi” vẫn chỉ là lý
thuyết.
Tiếp theo, Netscape và Microsoft đưa ra “plug-in” và
“ActiveX control” mở rộng trình duyệt web, cho phép bổ sung nhiều tính
năng phía client. Thế nhưng người dùng tỏ ra do dự trong việc cài đặt
các phần bổ sung này (bảo mật là một trong nhiều lý do), và đến nay,
ngoại trừ Flash Player và Java Runtime Environment (JRE), không có
thành phần bổ sung trình duyệt nào được cài đặt rộng rãi.
Ajax đem đến cho
người dùng những trải nghiệm mới mẻ với ứng dụng web: ít yêu cầu “động
tay” (nhấn), đáp ứng nhanh hơn, có những hiệu ứng giao diện giống như
ứng dụng desktop kể cả thao tác “kéo thả”... Những ứng dụng như Google
Maps và GMail tạo suy nghĩ có thể làm được mọi việc (những gì làm được
trên desktop) trên web, và sự thành công của những site như YouTube và
Flickr làm cho người ta thêm kỳ vọng về nội dung đa phương tiện trên
web - và một loạt công nghệ web mới đã được đưa ra đáp ứng mong đợi
này, hầu hết đều có thể làm việc với Ajax hay như Ajax (và tốt hơn), và
đặc biệt làm việc tốt với hình ảnh và video - mảng nội dung đang ngày
càng “hot” và được cho là xu hướng tương lai của web nhưng lại là mảng
“không chuyên” của Ajax. Các công nghệ mới hứa hẹn tạo nên thế hệ ứng
dụng web có thể cạnh tranh với các ứng dụng desktop, cả về tính năng
lẫn giao diện người dùng, và có khả năng chạy trên bất kỳ hệ thống nào.
NHỮNG CÁI TÊN ĐÁNG GỜM
Các
ứng dụng web mạnh cả về tính năng và giao diện người dùng được gọi với
thuật ngữ RIA (Rich Internet Application, hay Rich Interactive
Application với Microsoft). RIA được Macromedia giới thiệu lần đầu tiên
trong một tài liệu vào tháng 3/2002, có trước Ajax (được Jesse James
Garrett giới thiệu đầu tiên trong tài liệu “Ajax: A new Approach to web
Applications” vào tháng 2/2005), nhưng mãi đến gần đây mới được chú ý
nhờ những cái tên đáng gờm mới xuất hiện: Flex và AIR của Adobe,
Silverlight của Microsoft và JavaFX của Sun Microsystems.
Flex và AIR của Adobe
Cho
đến hiện nay, Adobe Systems là "tay chơi" lớn nhất và trưởng thành nhất
trong lĩnh vực RIA. Mua lại Macromedia cách đây hơn 3 năm (tháng
4/2005), Adobe được kế thừa gia sản để đi từ Shockwave đến Flash, Flex
và AIR (tên gọi ban đầu là Apollo).
Flash là công nghệ thể
hiện nổi tiếng về khả năng xử lý đồ họa vector và ảnh động, cho phép
tạo nội dung đa phương tiện tương tác với người dùng thông qua
ActionScript. Flex dựa trên Flash, dùng ngôn ngữ khai báo dựa trên xml
(MXML) kết hợp với ActionScript, cung cấp sự tách biệt giữa phần giao
diện người dùng và phần luận lý ứng dụng rõ ràng hơn so Flash. Ứng dụng
Flex được biên dịch thành file .SWF và chạy với Flash player – chạy
trên bất kỳ hệ thống nào hỗ trợ Flash, có khả năng chạy trên cả thiết
bị di động (với Flash Lite) (Hình 2).
Ứng dụng Flash/Flex cũng
có thể chạy trên desktop với thư viện thực thi AIR. AIR (Adobe
Integrated Runtime) là công nghệ triển khai để chạy các ứng dụng
Flash/Flex và cả Ajax mà không cần trình duyệt, tương tự ClickOnce của
Microsoft – công nghệ triển khai ứng dụng dựa trên Windows, nhưng AIR
chạy trên cả Windows và Mac (phiên bản chạy trên Linux đang trong quá
trình thử nghiệm).
Silverlight
(2.0) có thể xem là tập con của Windows Presentation Foundation (WPF),
cũng sử dụng XAML (eXxtensible Application Markup Language) – ngôn ngữ
khai báo dựa trên xml để định nghĩa giao diện người dùng (bao gồm đồ
hoạ vector, hiệu ứng động và tương tác dữ liệu trong giao diện). Các
tác vụ xử lý phức tạp được tách khỏi định nghĩa giao diện người dùng và
có thể viết với mã lệnh “được quản lý” (managed code) dùng các ngôn ngữ
.NET hay JavaScript và Python/Ruby (Hình 3).
Silverlight yêu cầu
cài đặt thư viện bổ sung trình duyệt để thực thi phía client. Hiện tại
ứng dụng Silverlight có thể chạy với trình duyệt Internet Explorer và
Firefox trên Windows, Safari và Firefox trên Mac OS X; chưa hỗ trợ
trình duyệt nào trên Linux (tuy nhiên hiện đã có dự án nguồn mở
Moonlight cho phép chạy ứng dụng Silverlight trên Linux). Hỗ trợ cho
thiết bị di động, Microsoft có Silverlight for Mobile chạy trên hệ điều
hành Nokia S60 và Windows Mobile 6.
JavaFX của Sun Microsystems
Ở mức độ ít phổ biến
hơn, còn có những cái tên đáng chú ý khác ngoài những cái tên “đáng
gờm” kể trên: OpenLaszlo, Appcelerator, Curl, Google GWT, Mozilla Prism
(cho phép chạy ứng dụng web trên desktop, tương tự Adobe AIR).
HIỆN THỰC RIA
Như
đã đề cập ở phần đầu, hai thư viện bổ sung trình duyệt thực thi Flash
và Java được cài đặt hầu như trên mọi máy tính (ước tính Flash hiện
diện trên 95%, Java trên 85% máy tính trên toàn thế giới). Với hệ điều
hành Windows ngự trị trên 90% máy tính và “vũ khí” Windows Updates,
Microsoft cũng sẽ không khó khăn gì trong việc làm cho Silverlight trở
nên phổ biến.
Phát triển
Microsoft
đã từ lâu nổi tiếng trong việc xây dựng các công cụ phát triển ngoại
hạng cho các công nghệ của mình, và xu hướng này được tiếp tục với
Silverlight. Bạn có xây dựng ứng dụng Silverlight trong Visual Studio
(hướng đến nhà phát triển) hay Expression Studio (hướng đến nhà thiết
kế)? Công cụ nào cũng có trình soạn thảo XAML cho phép xây dựng giao
diện người dùng phức tạp, nhưng Expression Studio cung cấp các tính
năng hoàn chỉnh hơn để tạo hình ảnh động và hiệu ứng đồ họa. Ngược lại,
Visual Studio cung cấp các tính năng phát triển và bẫy lỗi tiên tiến mà
mọi nhà phát triển đều mong muốn.
Adobe cung cấp 3 con
đường khác nhau để tạo ứng dụng RIA. Tiện nhất, với HTML và JavaScript
có thể phát triển ứng dụng RIA trực tiếp trong môi trường phát triển
Dreamweaver CS3 sử dụng AIR SDK. Ứng dụng RIA có thể tạo trong Flash
sau khi tải về một bản cập nhật cho Flash CS3 (Adobe có kế hoạch tích
hợp sẵn trong phiên bản tương lai). Flash rất thích hợp cho việc xây
dựng nội dung đa phương tiện hấp dẫn mà không nhất thiết làm phình to
ứng dụng, đây là nơi Flex thể hiện vai trò của mình. Flex cung cấp hỗ
trợ việc phát triển ứng dụng tốt hơn Flash, mặc dù vẫn dựa trên
ActionScript cho phần luận lý ứng dụng. ActionScript là ngôn ngữ tuân
theo đặc tả ECMAScript tương tự như JavaScript, hỗ trợ lập trình hướng
đối tượng cơ bản. Flex Builder 3 cung cấp môi trường phát triển dựa
trên Eclipse để xây dựng ứng dụng RIA dùng Flex 3 SDK (thư viện nguồn
mở) và giao diện kéo-thả để tạo giao diện người dùng dựa trên MXML
(Hình 5).
Hỗ trợ về mặt phát triển của JavaFX khá khiêm tốn, chủ
yếu gồm thư viện OpenJFX cho NetBeans, cung cấp hỗ trợ cơ bản cho việc
tạo và biên dịch mã lệnh (script) JavaFX. NetBeans hiện là môi trường
phát triển tích hợp (IDE) duy nhất hỗ trợ JavaFX. Có hai công cụ của
hãng thứ ba hỗ trợ phần hiển thị trong JavaFX: công cụ soạn thảo
JavaFXPad cho phép viết mã lệnh JavaFX và nhìn thấy kết quả hiển thị
trong một cửa sổ xem trước, nhưng không cung cấp bất kỳ hỗ trợ kéo-thả
nào cho các phần tử trên màn hình; và công cụ đồ hoạ JFXBuilder của
ReportMill cung cấp giao diện kéo-thả cho việc xây dựng giao diện người
dùng. Là ngôn ngữ khai báo không dựa trên xml, mã lệnh JavaFX giống như
sự trộn lẫn giữa Java và CSS (Hình 6).
Triển khai
Việc
xây dựng ứng dụng RIA chỉ là một phần của chặng đường, phần thứ hai là
đưa ứng dụng đến người dùng và đảm bảo nó chạy đúng. Cả Flex,
Silverlight và JavaFX đều không yêu cầu cài đặt bất cứ thành phần gì
trên server, đây cũng là điểm chung của các giải pháp RIA.
Riêng các ứng dụng
Adobe AIR lại được đóng gói thành file .AIR và được tải về chứ không
nhúng trong trang web. Người dùng không cài AIR trên hệ thống sẽ “bị”
hỏi dùng chương trình nào để chạy file này, vì vậy việc triển khai AIR
sẽ yêu cầu hướng dẫn nhiều hơn để đảm bảo người dùng biết cách chạy ứng
dụng AIR.
Mã lệnh JavaFX nhất thiết phải biên dịch thành Java
byte code và chạy trên máy ảo Java (JVM) như các Java applet thông
thường, không yêu cầu thư viện bổ sung trình duyệt nào khác. Miễn là hệ
thống có JVM là có thể chạy JavaFX. Mac OS có tích hợp sẵn JVM, vì vậy
không cần tải về thêm bất kỳ thứ gì để chạy JavaFX trên Mac. Trên các
hệ thống Windows, cả Firefox và IE đều hiển thị thông báo nếu chưa cài
JVM. Firefox sau đó đưa ra một thư viện để giúp cài đặt JVM, còn IE
chuyển hướng đến 1 trang web có các hướng dẫn để người dùng tải về và
cài đặt JVM thủ công.
THAY THẾ AJAX?
Mặc
dù có nhiều ứng dụng hấp dẫn nhưng Ajax có những hạn chế về bảo mật,
tương thích trình duyệt, ghi dữ liệu cục bộ ... và nền tảng Ajax “thuần
tuý” không hỗ trợ những tính năng đồ hoạ cao cấp (như “vector”) và
video. Nhiều thư viện Ajax đã được phát triển (hiện có trên 200 thư
viện được liệt kê tại AjaxPatterns.org) khắc phục những khiếm khuyết
này, nhưng không nền tảng dựa trên Ajax nào (kể cả Yahoo! UI Library
hay Dojo) có được những tính năng như Flex, Silverlight và JavaFX. Các
giải pháp RIA không giới hạn trong giao diện người dùng, trình xử lý
văn bản xây dựng trên Flex – BuzzWord là minh chứng về ứng dụng RIA
hoàn chỉnh không thua kém ứng dụng Ajax nổi tiếng là Google Docs.
• Các giải pháp RIA đều yêu cầu cài đặt thư viện bổ sung trình duyệt, trong khi Ajax được hỗ trợ sẵn.
•
Các giải pháp RIA dựa trên Flash thường có dung lượng lớn hơn so với
giải pháp dựa trên Ajax. Dung lượng tải về lớn sẽ làm chậm việc khởi
chạy ứng dụng.
• Không giống các giải pháp RIA (ngoại trừ Flex SDK và JavaFX Script), Ajax được xây dựng trên các chuẩn mở.
•
Flex, Silverlight và JavaFX đều dùng ngôn ngữ riêng, ngược lại Ajax dựa
trên JavaScript quen thuộc với hầu hết các nhà phát triển web và sẵn
sàng “hợp tác” với các công nghệ phổ biến khác như Ruby-on-Rails, PHP,
Java và .NET.
Thật may, các yếu tố hạn chế của Ajax và RIA nói
chung không trùng nhau. Vì vậy Ajax và các công nghệ RIA có thể kết hợp
để tạo nên ứng dụng mạnh như YouTube và SlideShare. Cả Adobe Flex
(thông qua Flex-Ajax Bridge), Microsoft Silverligh và JavaFX đều cung
cấp khả năng làm việc với Ajax.
 |
| Hình 4. Toàn cảnh JavaFX. |
JavaFX
(tên mã F3) được xây dựng dựa trên nền tảng công nghệ Java, bao gồm 2
phần: JavaFX Script và Java Mobile. JavaFX Script là ngôn ngữ khai báo
không dựa trên xml giúp cất đi gánh nặng xây dựng giao diện người dùng
vốn trước đây yêu cầu khá nhiều mã lệnh Swing. JavaFX Script phải biên
dịch thành Java byte code để chạy trên máy ảo Java (JVM). JavaFX Mobile
là hệ điều hành cho thiết bị di động được thiết kế để triển khai ứng
dụng RIA trên các thiết bị này (Hình 4).
 |
| Hình 6 |
Microsoft
Silverlight và Adobe Flash đều là thư viện dựa trên trình duyệt với
cách thức triển khai tương tự. Khi người dùng viếng thăm trang web có
nhúng thành phần Flash hay Silverlight, nếu chưa cài đặt thư viện phù
hợp, trang web sẽ hiển thị thông báo để người dùng tải về. Người dùng
có thể chuyển đến website Microsoft hay Adobe và làm theo các hướng dẫn
để tải về thư viện Silverlight hay Flash.
 |
| Hình 2. Nền tảng công nghệ RIA của Adobe. |
Rồi
Ajax (Asynchronous JavaScript And XML) xuất hiện, cho phép việc trao
đổi giữa client và server diễn ra không theo quy trình đồng bộ thông
thường, tương tác giữa người dùng và ứng dụng web không bị ngắt quãng
bởi việc nạp lại trang web mỗi khi yêu cầu server xử lý gì đó. Dựa trên
những nền tảng sẵn có (JavaScript, Document Object Model,
XmlHttpRequest, Cascading Style Sheets) được hầu hết trình duyệt hỗ trợ
nên không yêu cầu cài đặt thêm bất cứ gì ở client và hầu hết các nhà
phát triển đều có thể dễ dàng vận dụng, Ajax đã nhanh chóng “thống
lĩnh” thế giới Web 2.0 – thế hệ (ứng dụng) web tiện lợi hơn, có tính
tương tác cao hơn thế hệ web trước đó (Hình 1).
 |
| Hình 7 |
Tuy nhiên, các giải pháp RIA hiện tại vẫn chưa đủ sức thay thế hoàn toàn Ajax. Dưới đây là một số lý do:
 |
| Hình 5 |
Một
lợi ích quan trọng khác là Silverlight (2.0) hỗ trợ mã lệnh được quản
lý của .NET để viết luận lý ứng dụng, cho phép sử dụng nền tảng phát
triển mạnh hỗ trợ các khái niệm lập trình hướng đối tượng như kế thừa
và đa hình, và các tính năng ngôn ngữ tiên tiến như lớp chung và lớp
riêng. Với .NET CLR (Common Language Runtime) trong trình duyệt, mã
lệnh được quản lý sẽ được biên dịch thành nhị phân trên client và chạy
cực nhanh. Mã lệnh được quản lý có trong nhiều ngôn ngữ, ứng dụng
Silverlight có thể viết bằng C#, VB, IronPython và IronRuby. Với khả
năng hỗ trợ thêm nhiều ngôn ngữ nữa, Silverlight sẽ hấp dẫn nhiều nhà
phát triển với nền tảng khác nhau (Hình 5).
 |
| Hình 3 |
Silverlight của Microsoft
 |
Hình 1. Tuy có những ứng dụng đồ họa ấn tượng như Google
Maps, nhưng đây không phải là sở trường của Ajax. |
Mô
hình ứng dụng trên nền web truyền thống theo kiến trúc máy khách-máy
chủ (client-server) với trình ứng dụng chạy trên máy tính của người
dùng thiết kế “nhỏ gọn” (thin client): mọi tác vụ xử lý thực hiện trên
server, còn client chỉ có vai trò hiển thị nội dung tĩnh (HTML). Hạn
chế lớn nhất của kiến trúc này là mọi tương tác với ứng dụng đều phải
gửi (yêu cầu dữ liệu) đến server, server xử lý và đáp trả, phía client
nạp lại trang web với thông tin cập nhật - chu trình đồng bộ này làm
cho các ứng dụng web tương tác với người dùng chậm chạp, chậm hơn nhiều
so với các ứng dụng truyền thống (ứng dụng desktop) cài đặt và chạy
trên máy tính người dùng.
| |
Flex |
Silverlight |
JavaFX |
| Phiên bản mới nhất |
3.0 |
2.0 Beta |
1.0 |
| Công cụ phát triển (IDE) |
Flex Builder 3.0
(Eclipse platform) |
Visual Studio 2008
.NET Platform 3.5
Silverlight Visual
Studio 2008 Template |
Eclipse hay NetBean 6.01
JavaFX plugin |
| Chi phí cho công cụ phát triển |
249-699 USD
(Giải pháp nguồn mở thay thế: FlashDevelop, www.osflash.org) |
289-799 USD |
Miễn phí
(nguồn mở) |
| Ngôn ngữ |
MXML
ActionScript |
XAML
JavaScript
(C#, VB.Net, ASP.Net) |
JavaFX Script
Java |
| Thư viện bổ sung trình duyệt (plug-in) |
Adobe Flash Player 9 |
Silverlight 2.0 Beta |
Java Plugin with JavaFX extension |
| Dung lượng tải về client (Windows) |
1.1 MB
(AIR Runtime: 11MB) |
4-6 MB |
15MB |
PCWorld