(Post 12/08/2008) Những công nghệ mới hứa hẹn
đem đến những trải nghiệm hấp dẫn hơn và có khả năng làm lu mờ ngôi sao
hiện nay trên bầu trời Web 2.0.
Hình 1:
Nền tảng công nghệ RIA của Adobe |
|
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.
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.
“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.
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).
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 1).
Ứ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).
Hình 2 |
|
Silverlight của Microsoft
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 2).
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.
Hình 3. Toàn cảnh JavaFX. |
|
JavaFX của Sun Microsystems
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 3).
Ở 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.
Hình 4 |
|
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 4).
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 4).
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 5).
Hình 5 |
|
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.
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.
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.
Hình 6 |
|
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:
- 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.
|
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 |
Phương Uyên
(theo PC World VN)
|