3.12 Rich Internet Applications
(RIAs)
Rich Internet Applications (RIAs)
are web applications that offer the responsiveness, “rich”
features and functionality approaching that of desktop applications.
Early Internet applications supported only a basic HTML graphical user interface (GUI).
Though they could serve simple functions, these applications did not
have the look or feel of a desktop application. The relatively slow
Internet connections these applications relied on led to the term “World Wide Wait.”
RIAs are a result of today’s more advanced technologies that allow
greater responsiveness and advanced GUIs.
Ajax
The term Ajax
(Asynchronous JavaScript and XML)
was coined by Adaptive Path’s Jesse James Garrett in February
2005. Ajax (see
Chapter 15, Ajax-Enabled Rich Internet Applications)
allows partial page updates—meaning updates of individual pieces
of a web page without having to reload the entire page. This creates
a more responsive GUI, allowing users to continue interacting with the
page as the server processes requests.
The technologies
that make up Ajax—XHTML, CSS, JavaScript, the DOM, XML, and the XMLHttpRequest object—are
not new. In fact, in the 1990s, Netscape used asynchronous page
updates in LiveScript, which evolved into
JavaScript. However, the popularity of Ajax has dramatically increased
since its naming. Ajax performs a vital role in Web 2.0, particularly
in building webtop applications and enhancing
the user’s overall experience. The following toolkits and frameworks
(environments with standard components that make development faster
and easier) provide libraries and tools for convenient Ajax-enabled
application development.
Dojo
Dojo
is an open source JavaScript toolkit—it is a library, not a framework.
Dojo development began in late 2004.1 Dojo helps standardize JavaScript by providing a variety of packages
for cross-browser compatibility, rich GUI controls, event handling and
more. (See
the Dojo section in Chapter 15.)
Flex
Adobe
Flex
(see
Chapter 18) is an RIA framework that allows you to build
scalable, cross-platform, multimedia-rich applications that can be delivered
over the Internet. It uses the Flash Player 9 runtime environment,
which is installed on over 97% of computers, allowing for almost universal
compatibility.2 Flash Player 9 is backed by ActionScript 3, Adobe’s
object-oriented scripting language—this uses an asynchronous programming
model, which allows for partial page updates similar to Ajax. Flash
CS3 (the development tool for creating Flash movies) is discussed in
Chapters 16–17.
Silverlight
Microsoft’s Silverlight
(see
Chapter 19), formerly known as Windows Presentation Foundation
Everywhere (WPF/E) and released in May 2007, is Microsoft’s new competitor
to Flex and Flash. Silverlight 1.1 uses a compact version of the .NET
framework. Silverlight applications have
user interfaces built in Extensible Application Markup
Language (XAML)—Microsoft’s XML-based format for describing
user interfaces. The new framework allows quick and easy development
of RIAs and is designed to run on major browsers and operating systems.3 Moonlight, an open source version
of Silverlight for Linux operating systems, is being developed.
JavaFX
JavaFX
is Sun Microsystems’ counterpart
to Flex and Silverlight, also designed for building Rich Internet Applications.
It consists of the JavaFX Script and JavaFX Mobile (for mobile devices).
The JavaFX Script, which takes advantage of the fact Java is installed
on most computers, will be available under open source licences (see
https://open
jfx.dev.java.net/).4
Ruby on Rails
Ruby
on Rails (see
Chapter 24), developed by 37Signals’ David Heinemeier Hansson, is
an open source framework based on the Ruby scripting language that allows
you to build database-intensive applications quickly, easily, and with
less code. Ruby on Rails was designed to build 37Signals’ Basecamp (a project management
and collaboration tool) and other SaaS products.
Script.aculo.us
The Script.aculo.us library
for creating “eye candy” effects is built on the Prototype
JavaScript framework. Prototype encapsulates the DOM (Document
Object Model, Chapter 12) and provides cross-browser
processing capabilities.5 Script.aculo.us uses this framework and adds capabilities for
rich user interfaces. Its core effects include opacity, scale, morph,
move, highlight and parallel (for combining multiple effects).6 Script.aculo.us is used on many popular websites and is incorporated
into other frameworks (such as Ruby on Rails). We discuss Script.aculo.us
and present examples in Chapter 24,
Ruby on Rails.
JavaServer Faces
JavaServer Faces (JSF) is
a Java-based web application framework. JSF separates design elements
from business logic and provides a set of user-interface components
(JSF components) that make developing RIAs simple. One of the Java
BluePrints projects provides additional resources and libraries
for building Ajax-enabled applications. We build RIAs with JSF in Chapters 26–27.
ASP.NET Ajax
ASP.NET
Ajax (Chapter 25)
is an extension of the .NET framework for creating Ajax-enabled applications.
It includes an open source Ajax Control Toolkit for implementing asynchronous
functionality. ASP.NET Ajax is easily used in Microsoft Visual Web Developer or Microsoft Visual Studio to quickly
create Rich Internet Applications.
Adobe Integrated Runtime and Google Gears
Though web application use has been increasing, many feel
these programs cannot truly compete with desktop applications until
the “Offline Problem” (not being
able to access web applications and data when not connected to the Internet)
has been solved.7 Businesses can lose valuable time and money when Internet issues
occur such as a slow or broken Internet connection.
Adobe released its Adobe Integrated
Runtime (AIR; previously called
Apollo) in beta form in June
2007. AIR allows users to run Flex web applications on their desktops
even when they are not connected to the
Internet, thus allowing users to remain efficient when they are unable
to access the Internet or when an SaaS application server goes down.
Users can continue their work and synchronize it with the servers again
later.
Google Gears, also in beta,
is a similar product, allowing use of web applications while offline.
Google Gears was created out of a Google engineer’s 20% project,
inspired by wanting to use Google Reader on a bus with “flaky”
Internet access.8 (Google engineers devote 20% of their time to projects other than
their usual work and 10% of their time to projects that are “truly
new.”)9 Dojo Offline (using the
Dojo library) is built on top of Google Gears, creating an easy-to-use
interface for using web applications offline.10