Wouldn't it be nice if you could write your application once and then reuse the code in both a) a "fat client" for high interactivity and offline usage, and b) a "thin client" inside a web browser for ubiquitous access with zero install? The Eclipse Rich Ajax Platform (RAP) library provides one way to do just that.
RAP version 1.0 was released today. According to the project site,
The RAP project aims to enable developers to build rich, Ajax-enabled Web applications by using the Eclipse development model, plug-ins and a Java-only API.
At its core, RAP provides a port of the Standard Widget Library (SWT) for web applications. The SWT API is pretty general, with implementations running on desktops (on Swing or native windowing APIs), smart phones, and now the web.
RAP lets many existing Eclipse RCP applications based on Java and OSGi standard technologies to be used on the web with minor code changes. For obvious performance reasons, RAP doesn't go back to the server for every keystroke, and the interactivity isn't quite the same as you could get with a SWT or Swing fat client. However it works surprising well, especially if you're deploying on a low-latency intranet system. See this site for a live demo, or download it and judge for yourself.
Inevitably, RAP will be compared to other toolkits like the Google Web Toolkit (GWT), Open Laszlo, Adobe AIR, Backbase, Echo2, and many, many more. There isn't a single best framework for all applications. AIR (formerly Apollo) is perhaps its closest competitor because both AIR and RAP have a goal of letting you deploy applications on both the desktop and the Web. Both frameworks approach the problem from a different angle - AIR from the point of view of moving Web apps to the desktop, and RAP from the point of view of moving desktop apps to the Web. RAP has the advantage of being completely open source, while AIR has the advantage of a top-tier, well established and funded backer.
I'm still rather fond of GWT, though. GWT lets you split your application into client and server side parts that are written in the same language (Java). One thing that GWT is missing is a fat-client incarnation. While you can support some offline activity using Google Gears, it's a stretch from there to having a shortcut on your desktop that will launch a local application that doesn't require any net access.