Revitalize old web applications with server-side mashup techniques

by Rick Jelliffe

This week I have been watching a collegue apply mashup techniques to revitalize a quite large (25 pages, each with mulitple frames, plus various popups) old Java web application which was initially designed almost ten years ago, but its user interface has remained basically the same (except for graphics and minor changes) since about 2000, with HTML designed to work on IE 5 and quite a lot of use of JavaScript.

The application is pretty well structured three-tier-on-one-server system, backend DBMN, application logic middleware one-servlet-per-frame generating XML, then presentation level servlets one-servlet-per-frame converting the XML to HTML. My collegue's challenge has been to create an entirely new interface, more based on blogging systems but using XHTML, CSSZenGarden-ish CSS techniques, reduced JavaScript only for menus, almost no use of HTML tables (CSS positioning instead), and removing statefullness from the client end as much as possible. And no change of the Java code.

The biggest change is that the Java servlets previously corresponded to frames. Now there is effiectively one big XSLT script which potentially queries any of the servlets to produce the mashed up page. The programmer intends to refactor the big XSLT: the trouble with a single script is that it become difficult to have multiple programmers working on the code. But the project itself is fairly interesting: turning a c. 2000 state of the art HTML interface into a c. 2006 state-of-the-art XHTML interface with utterly different user interface from every aspect, but with no change to the XML-generating Java.

So even though the XML was designed with the idea "what information is needed by this frame in this application" once all the information for the application is exposed as XML by all the servlets, the information can be mashed up into an entirely new interface. It is the universal access to all the data that is the key here: that the data is exposed as a URL from a servlet using XML enables it too, but the fact the the data is open reduces the need to alter the Java "application logic": indeed the "application logic" performed by the middle no longer reflects the application logic as perceived by the user, the connection between middleware servlet and frame no longer holding.

So this is not AJAX nor mashups in the sense of client-side combination of independent data sources. But the excitement about client-side interactions often means more JavaScript in effect, and the fact that JavaScript programmers frequently are keen to reduce the amount of JavaScript in a system design speaks volumes. The option of using server-side mashups generating beautiful XHTML with aggressive use of CSS and JavaScript for minimal dynamic interface controls shouldn't be lost in the AJAX noise.

2 Comments

mohamad mokhtari
2006-05-14 00:48:44

سلام محمد جان دمت گرم که این سایت رو حک کردی

M. David Peterson
2006-05-14 03:20:18

Hey Rick,

> The option of using server-side mashups generating beautiful XHTML with aggressive use of CSS and JavaScript for minimal dynamic interface controls shouldn't be lost in the AJAX noise. <

AMEN!!! :D

Sign up today to receive special discounts, product alerts, and news from O'Reilly.