Rich Internet Applications MAY/JUNE 2010 1089-7801/10/$26.00 © 2010 IEEE Published by the IEEE Computer Society 13 Anantharaman P. Narayana Iyer, Arijit Chatterjee, and Jyoti Kishnani Adobe Systems India T he advent of Web 2.0 and its asso- ciated read/write Web access pat- terns places a major emphasis on the user experience. Although this was a critical need even for traditional Web applications, emerging Web 2.0 and cloud applications extend it even further. The two primary factors that impact user experience on the Web with browser-based access are • page-based metaphor, in which the page on view is refreshed while a new page gets loaded; and • the synchronous nature of com- munication between the client and server, in which the client user inter- face (UI) is blocked until it receives the server’s response, inhibiting user interactivity. The rich Internet application (RIA) 1 architecture enables signifcant com- puting dedicated to presentation to occur on the client, supported by a sophisticated client RIA runtime (see the “Rich Internet Applications Archi- tecture” sidebar for more background). The server exposes services that encap- sulate the business logic while the client handles the presentation. This approach has a more scalable architec- ture due to separation of concerns and the use of a service-oriented architec- ture (SOA). It also leverages the cli- ent system’s compute power, which Rich Internet applications (RIAs) provide an immersive experience that blends the Internet’s expansive reach with the desktop computer’s rich performance. Client applications typically connect to the server using asynchronous communication protocols, which lets users interact with the application without getting blocked due to server response latency. Although this programming model enables high user interactivity, it increases the complexity of synchronizing multiple pieces of program logic. This increased complexity can be alleviated if synchronous program execution is enabled without blocking the user interface. The authors’ technique based on compiler transformations enables synchronous execution on an asynchronous RIA programming model. Compiler Transformations to Enable Synchronous Execution in an RIA Runtime