When should I use an Java applet instead of AJAX?
Applets provide a rich experience on the client side and
there are many things they can do that an AJAX
application cannot do, such as custom data streaming,
graphic manipulation, threading, and advanced GUIs.
While DHTML with the use of AJAX has been able to push
the boundaries on what you can do on the client, there
are some things that it just cannot do. The reason AJAX
is so popular is that it only requires functionality
built into the browser (namely DHTML and AJAX
capabilities). The user does not need to download and/or
configure plugins. It is easy to incrementally update
functionality and know that that functionality will
readily available, and there are not any complicated
deployment issues. That said, AJAX-based functionality
does need to take browser differences into
consideration. This is why we recommend using a
JavaScript library such as Dojo which abstracts browser
differences. So the "bottom line" is: If you are
creating advanced UIs where you need more advanced
features on the client where you want UI accuracy down
to the pixel, to do complex computations on the client,
use specialized networking techniques, and where you
know that the applet plugin is available for your target
audience, applets are the way to go. AJAX/DHTML works
well for applications where you know the users are using
the latest generation of browsers, where DHTML/AJAX
"good enough" for you, and where your developers have
JavaScript/DHTML/AJAX skills. Many amazing things can be
done with AJAX/DHTML but there are limitations. AJAX and
applets can be used together in the same UIs with AJAX
providing the basic structure and applets providing more
advanced functionality. The Java can communicate to
JavaScript using the Live-Connect APIs. The question
should not be should framed as do I use AJAX or applets,
but rather which technology makes the best sense for
what you are doing. AJAX and applets do not have to be
mutually exclusive.
What kinds of applications is Ajax best suited for?
We don’t know yet. Because this is a relatively new
approach, our understanding of where Ajax can best be
applied is still in its infancy. Sometimes the
traditional web application model is the most
appropriate solution to a problem.
Does this mean Adaptive Path is anti-Flash?
Not at all. Macromedia is an Adaptive Path client, and
we’ve long been supporters of Flash technology. As Ajax
matures, we expect that sometimes Ajax will be the
better solution to a particular problem, and sometimes
Flash will be the better solution. We’re also interested
in exploring ways the technologies can be mixed (as in
the case of Flickr, which uses both).
Where can I find examples of AJAX?
While components of AJAX have been around for some time
(for instance, 1999 for XMLHttpRequest), it really
didn't become that popular until Google took...
What is the XMLHttpRequest object?
It offers a non-blocking way for JavaScript to
communicate back to the web server to update only part
of the web page.
Does Ajax have significant accessibility or browser
compatibility limitations? Do Ajax applications break
the back button? Is Ajax compatible with REST? Are there
security considerations with Ajax development? Can Ajax
applications be made to work for users who have
JavaScript turned off?
The answer to all of these questions is “maybe”. Many
developers are already working on ways to address these
concerns. We think there’s more work to be done to
determine all the limitations of Ajax, and we expect the
Ajax development community to uncover more issues like
these along the way.
How do I access data from other domains to create a
mashup with Java?
From your JavaScript clients you can access data in
other domains if the return data is provide in JSON
format. In essence you can create a JavaScript client
that runs operates using data from a different server.
This technique is know as JSON with Padding or JSONP.
There are questions as to whether this method is secure
as you are retrieving data from outside your domain and
allowing it to be excuted in the context of your domain.
Not all data from third parties is accessible as JSON
and in some cases you may want an extra level of
protection. With Java you can provide a proxy to third
party services using a web component such as a servlet.
This proxy can manage the communication with a third
party service and provide the data to your clients in a
format of your choosing. You can also cache data at your
proxy and reduce trips to service. For more on using a
Java proxy to create mashups see The XmlHttpProxy Client
for Java.
Does Java have support for Comet style server-side push?
Current AJAX applications use polling to communicate
changes data between the server and client. Some
applications, such as chat applications, stock tickers,
or score boards require more immediate notifications of
updates to the client. Comet is an event based low
latency server side push for AJAX applications. Comet
communication keeps one of the two connections available
to the browser open to continously communicate events
from the server to the client. A Java based solution for
Comet is being developed for Glassfish on top of the
Grizzly HTTP connector. See Enabling Grizzly by
Jean-Francois Arcand for more details.
How do I create a thread to do AJAX polling?
JavaScript does not have threads. JavaScript functions
are called when an event happens in a page such as the
page is loaded, a mouse click, or a form element gains
focus. You can create a timer using the setTimeout which
takes a function name and time in milliseconds as
arguments. You can then loop by calling the same
function as can be seen in the JavaScript example below.
function checkForMessage() {
// start AJAX interaction with processCallback as the
callback function
}
// callback for the request
function processCallback() {
// do post processing
setTimeout("checkForMessage()", 10000);
}
Notice that the checkForMessage will continue to loop
indefinitely. You may want to vary the increment the
interval based on activity in the page or your use
cases. You may also choose to have logic that would
break out of the loop based on some AJAX response
processing condition.
Is the XMLHttpRequest object part of a W3C standard?
No. Or not yet. It is part of the DOM Level 3 Load and
Save Specification proposal.