3rd Generation outsourcing is here! 1st Generation was “your mess for less”; 2nd Generation is strategic or selective sourcing, including hosting. 3rd Generation Outsourcing, as a result of the emergence of Cloud Computi...| By Victor Rasputnis, Anatole Tartakovsky, Igor Nys | Article Rating: |
|
| February 19, 2006 05:45 PM EST | Reads: |
78,733 |
Browser-based applications are widely used and we like the fact that we can access them from anywhere. But from the users' perspective, the productivity level of Web applications still doesn't approximate the productivity of desktop programs. The good news is the gap is closing: the accumulated potential of multiple technologies has boosted a whole new breed of HTML-based apps that are as powerful as the desktop ones. Meet AJAX.
What Is AJAX?
The name stands for Asynchronous JavaScript + XMLHTTPRequest and means you can establish socket communication between browser-based JavaScript and the server. AJAX isn't a new technology. It's a successful branding of possibilities implanted in several technologies available in modern browsers. All AJAX applications deliver a rich UI via extensive JavaScript manipulation of the HTML Document Object Model based on the precision-pointed data retrieval via XMLHttpRequest. Typical examples of AJAX applications are Google Maps and Google Suggest from Google Labs (http://labs.google.com). These applications actively monitor user input and provide real-time page updates. Most importantly, this happens without a page refresh while the user navigates through the map or types a search string.
In fact, the technologies behind these wonders have been around for a while, although they require sophisticated skills in using browser-specific tricks. Proprietary offerings with similar capabilities - Macromedia Flash plug-in, Java Applets or .NET runtime - have been available for quite some time too. The idea of integrating a scriptable transport component talking to the server into the browser was pioneered by IE 5.0. Then Firefox and other popular browsers joined the club of browsers in supporting XMLHTTPRequest as a built-in object. With cross-browser availability, these technologies gained visibility and in March of 2004 a company called Adaptive Path introduced AJAX.
In short, backing from Google and having the right browser technologies available out-of-the-box tipped the scale: these days everyone is adding client-side technologies to Web applications for a "better user experience."
AJAX vs. Classical Applications
A classic Web application model is literally a triumph of form over substance: users are forced to submit forms in exchange for pages. That said, the form submission and page delivery aren't guaranteed: worse case the user clicks again though some pages specifically warn against that. It's quite different with AJAX, where the data travels across the wire instead of entire HTML pages. This data exchange is scripted via a specific browser object - XMLHttpRequest; the appropriate logic handles the outcome of each data request, the specific region of the page is updated instead of the entire page. The results are more speed, less traffic, and better control of information delivery.
Traditional "click-refresh" Web applications force users to interrupt the work process while waiting for the page to reload. With AJAX, a client-side script can asynchronously talk to the server while the user keeps entering data. Besides being transparent to the user, such asynchrony means more time for the server to process the request.
Classic Web applications delegate all processing to the server and force the server to manage the state. AJAX allows flexible partitioning of the application logic and state management between the client and the server. This eliminates a "click-refresh" dependency and provides better server scalability. When the state is stored on the client-side you don't have to maintain sessions across the servers or save/expire state: the lifespan is defined by client.
AJAX: Distributed MVC
Although AJAX applications rely on JavaScript for the presentation layer, the processing power and knowledge base remain on the server. For that matter, AJAX applications talk heavily to J2EE servers, feeding data to and from Web Services and servlets. The difference between J2EE applications with an AJAX-based presentation tier and standard J2EE application is that in the first case MVC is distributed over the wire. With AJAX, View is local, while Model and Controller are distributed giving the developer the flexibility to decide which components will be client-based. Specifically, a local View renders graphics by manipulating with HTML DOM; the controller handles user input locally and at the developer's discretion extends the processing to the server via HTTP requests (Web Services, XML/RPC or others); the remote part of the Model is downloaded as needed to the client achieving in-place real-time updates of the client page; and state is collected on the client.
In future AJAX articles we'll talk about each of these components in depth and provide examples of how they came to play together. Now, without further ado, let's dive into a simple AJAX example.
Zip Codes Validation and Lookup
We'll create an HTML page containing three INPUT fields: Zip, City, and State. We'll make sure that as soon as the user enters the first three digits of the zip code, the state will get populated with the first matching state value. Once the user types in all five zip digits, we'll instantly determine and populate the appropriate city. If the zip code isn't valid (not found in the server's database), we'll turn the zip's border color to red. Such visual clues are helpful to users and have become standard in modern browsers (as an example, Firefox finds matching words in an HTML page by highlighting them in the browser search field while you type).
Let's start with a simple HTML containing three input fields: zip, city, and state. Please note that the method zipChanged() is called as soon as a character is entered in the zip field. In turn, the JavaScript function zipChanged() (see below) calls the function updateState() when the zip length is three and up-dateCity() when the length of the zip is five. Both updateCity() and updateState() delegate most of the work to another function - ask().
Zip:<input id="zipcode" type="text" maxlength="5" onKeyUp="zipChanged()"
style="width:60"/>
City: <input id="city" disabled maxlength="32" style="width:160"/>
State:<input id="state" disabled maxlength="2" style="width:30"/>
<script src="xmlhttp.js"></script>
<script>
var zipField = null;
function zipChanged(){
zipField = document.getElementById("zipcode")
var zip = zipField.value;
zip.length == 3?updateState(zip):zip.length == 5?updateCity(zip):"";
}
function updateState(zip) {
var stateField = document.getElementById("state");
ask("resolveZip.jsp?lookupType=state&zip="+zip, stateField, zipField);
}
function updateCity(zip) {
var cityField = document.getElementById("city");
ask("resolveZip.jsp? lookupType=city&zip="+zip, cityField, zipField);
}
</script>
Published February 19, 2006 Reads 78,733
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Victor Rasputnis
Dr. Victor Rasputnis is a Managing Principal of Farata Systems. He's responsible for providing architectural design, implementation management and mentoring to companies migrating to XML Internet technologies. He holds a PhD in computer science from the Moscow Institute of Robotics. You can reach him at vrasputnis@faratasystems.com
More Stories By Anatole Tartakovsky
Anatole Tartakovsky is a Managing Principal of Farata Systems. He's responsible for creation of frameworks and reusable components. Anatole authored number of books and articles on AJAX, XML, Internet and client-server technologies. He holds an MS in mathematics. You can reach him at atartakovsky@faratasystems.com
More Stories By Igor Nys
Igor Nys is a Director of Technology Solutions at EPAM Systems, Inc, a company combining IT consulting expertise with advanced onshore-offshore software development practices. Igor has been working on many different computer platforms and languages including Java, C++, PowerBuilder, Lisp, Assembler since the mid 80's. Igor is currently managing a number of large distributed projects between US and Europe. In addition Igor is the author of the award-winning freeware system-management tools, and he was closely involved in the development of XMLSP technology - one of the AJAX pioneers.
![]() |
SYS-CON India News Desk 02/19/06 07:05:30 PM EST | |||
Browser-based applications are widely used and we like the fact that we can access them from anywhere. But from the users' perspective, the productivity level of Web applications still doesn't approximate the productivity of desktop programs. The good news is the gap is closing: the accumulated potential of multiple technologies has boosted a whole new breed of HTML-based apps that are as powerful as the desktop ones. Meet AJAX. |
||||
![]() |
Anatole Tartakovsky 12/26/05 06:15:32 PM EST | |||
I received number of questions on the future of the AJAX recently - tried to give my personal view on the possible development in the blog - http://anatolet.blogspot.com |
||||
![]() |
Frank 12/19/05 07:04:50 PM EST | |||
You mention the need to destroy the request and callback objects, but my O'Reilly reference says there is no need to clean up in javascript. Which is correct. How do you destroy the request and especially the callback objects (can I destroy the callback in the callback!!!)? |
||||
![]() |
Halans 10/15/05 06:25:27 PM EDT | |||
Nice, to the point, Ajax article. |
||||
![]() |
Victor Rasputnis 10/04/05 08:04:22 AM EDT | |||
Anand, you are right. The example was meant to be the most obvious, to avoid problems with getRealPath() or explanation around getResourseAsStream() etc. You have a good eye :), thanks again. |
||||
![]() |
Anand 10/03/05 01:42:54 PM EDT | |||
Thanks Victor. I had figured out application instead of using getServletContext() on BEA. However my problem was with the properties.load(new java.io.FileInputStream(key + ".property")); I had the file in the same folder and thought that I did not need to provide it with an explicit path such as c:\\ but I guess that is not the case. Also one more change to the html file that I figured in the line: should be zip.length == 3 ? updateState(zip) : zip.length == 5 ? updateCity(zip):""; |
||||
![]() |
Victor Rasputnis 09/30/05 10:31:34 PM EDT | |||
Anand, getServletContext() is available in Tomcat JSP, but not in WebLogic (WL -getServletConfig().getServletContext()). Anyway, I replaced gSC() to _application_ for simplicity. Please download again. Most importantly, please also download the DATA files or ZIP will remain red, no matter what :). Kind Regards, |
||||
![]() |
Anand 09/29/05 08:42:16 AM EDT | |||
I tried doing this sample using both IE 6 and Firefox. Everytime I type in 3 digits (valid zip code) it paints the box red. It does not populate the city and state. Using BEA I got an error on the JSP page saying that getServletContext() was not recognized. On Tomcat I did not get any error but the program won't work. |
||||
3rd Generation outsourcing is here! 1st Generation was “your mess for less”; 2nd Generation is strategic or selective sourcing, including hosting. 3rd Generation Outsourcing, as a result of the emergence of Cloud Computi...Mar. 21, 2010 05:53 AM EDT |
By Pat Romanski NaviCloud is a next-generation platform that combines the economic efficiencies of cloud computing with true enterprise-class reliability and security. With built-in high-availability, a state of the art operations cente...Mar. 20, 2010 08:45 AM EDT Reads: 506 |
By Pat Romanski SYS-CON Events announced today that VirtuDataCenter, a cloud computing network infrastructure company, will offer a complete turnkey alternative to today’s cloud computing solutions. They will exhibit at SYS-CON's 5th In...Mar. 20, 2010 07:00 AM EDT Reads: 308 |
By Liz McMillan You are interested in cloud computing, but where do you start? How are vendors defining Cloud Computing? What do you need to know to figure out which applications make sense in the cloud? And is any of this real today?
...Mar. 20, 2010 05:45 AM EDT Reads: 379 |
By Roger Strukhoff Organizations embracing Cloud Computing are quickly realizing how Data Grid technology can solve many of the challenges associated from running applications on distributed shared infrastructure across the globe. From hos...Mar. 20, 2010 01:40 AM EDT Reads: 101 |
- An Exclusive Interview with Adaptivity, Cloud Expo 2010 Platinum Plus Sponsor
- The End of IT 1.0 As We Know It Has Begun
- Six Enterprise Megatrends to Watch in 2010
- Stealth Cloud Computing Startup To Launch at Cloud Expo
- Cloud Expo New York, Prague, and San Francisco Sponsors
- Can You Fire a Team?
- Cloud Economics – Amazon, Microsoft, Google Compared
- SYS-CON Projects All-Time High Revenue
- iPad on Ulitzer - I’ll Buy iPad. But What For?
- The Cloud Storage Wars: Windows Azure vs. Google
- Einstein, Sharks and Clouds: IT Security in the Cloud
- Cloud Expo Keynoter Undertakes New Role as CIO of NRO
- An Exclusive Interview with Oracle, Cloud Expo 2010 Diamond Sponsor
- An Exclusive Interview with Adaptivity, Cloud Expo 2010 Platinum Plus Sponsor
- The End of IT 1.0 As We Know It Has Begun
- Six Enterprise Megatrends to Watch in 2010
- Cloud Expo New York Call for Papers to Expire January 15, 2010
- The Importance of Abstraction in Cloud Computing
- Virtualization Expo New York Call for Papers to Expire January 15, 2010
- Microsoft’s First Step Toward Cloud Computing
- View Cloud Expo Europe 2009 Keynote on SYS-CON.TV
- What is Enterprise Cloud Computing?
- Free Virtual Appliance for Cloud Computing
- Cloud Expo Europe 2009: Where Are Europe's Cloud Providers?
- The Top 150 Players in Cloud Computing
- What is Cloud Computing?
- Virtualization Conference Keynote Webcast Live on SYS-CON.TV
- SOA 2 Point Oh No!
- Cloud Expo Europe 2009 in Prague: Themes & Topics
- IBM's Got Its Head in the Clouds
- Cloud Computing Expo 2009 West: Call for Papers Now Closed
- Red Hat Named "Platinum Sponsor" of Virtualization Conference & Expo
- As Google's SaaS Assault Begins, Move Over Microsoft Office?
- Twenty-One Experts Define Cloud Computing
- Merrill Lynch Estimates "Cloud Computing" To Be $100 Billion Market
- From Enterprise to Cloud, Virtualization Today on SYS-CON.TV









NaviCloud is a next-generation platform that combines the economic efficiencies of cloud computing with true enterprise-class reliability and security. With built-in high-availability, a state of the art operations cente...
SYS-CON Events announced today that VirtuDataCenter, a cloud computing network infrastructure company, will offer a complete turnkey alternative to today’s cloud computing solutions. They will exhibit at SYS-CON's 5th In...
You are interested in cloud computing, but where do you start? How are vendors defining Cloud Computing? What do you need to know to figure out which applications make sense in the cloud? And is any of this real today?
...
Organizations embracing Cloud Computing are quickly realizing how Data Grid technology can solve many of the challenges associated from running applications on distributed shared infrastructure across the globe. From hos...
Cloud Computing Journal caught up with the CEO of a major new player in the fast-emerging Cloud ecosystem - a CEO who has taken an interesting and unusual decision. While signing up as the Platinum Plus Sponsor of the 5th International Cloud Expo, he and his company have decided to remain completely...
Enterprises continue to expand the use of cloud computing, and particularly software-as-a-service applications (SaaS), to achieve operational performance enhancements and efficiencies. Implementation of these technologies introduces several challenges related to identity management, such as administ...
But, as much as I like developing nations and the potential of cloud for them, the Big Kahuna is still found in the Big Apple, with Cloud Expo, opening April 19 at the Javits Center in New York. This is not an event with a single track, or a few tracks. There are, in fact, eight of them, as follows:...
Is your website available to end users 99.8% or more of the time? If not, then count yourself in the “laggard” category, according to standards set by The Aberdeen Group, in its 2008 report “The Performance of Web Applications: Customers are Won or Lost in One Second.” In that study, laggards had we...
















