SourceForge Logo

West of j : WUI : Overview

WUI (Web User Interface) is an MVC framework for writing web UIs in a single language: Java. Write web apps with components, widgets & events, not JSPs. Runs in any servlet 2.3 container. Similar to Model 2 / Struts, only better. Apache-style license.

Why we like the WUI:

JSP development sucks
Let's face it: no two browsers support HTML, XHML, CSS or JavaScript consistently. Wasn't Java supposed to let you "write once, run everywhere"? Well today you can, and you don't have to use applets.

JSPs were great in the infancy of Web development in Java. Today, it's clear that they're the wrong tool for the job. They promote model-1 programming and offer very little reuse potential for the application programmer. Sure there's TAGLIBs. They're no silver bullet: they're performance hogs, they add new dependencies, new semantics and offer very poor reuse capabilities unless you're the author of the tag library itself.

Use the right abstractions, the right API
Most of JSP programming is tied to HTTP. As a programmer, you want to code in terms of buttons, lists, events , etc. not in terms of cookies, requests, session variables etc.

XML config files suck
First, XML config files were a good idea. Today, they've become a plague: the Ant script, server.xml, web.xml, the log4j config file, deployment descriptors of all sorts, etc. Botch one of these files and nothing works. The WUI doesn't make learn yet another config file syntax. Configure your app anyway you like. Most likely, a few lines of Java code will suffice.

RAD is cool
If you've ever coded with a 4GL or a good scripting language, you know that you should be able to do simple things simply and complicated things simply as well. You know that build cycles should be short. Using the WUI with Eclipse, you can rebuild and restart your app in seconds. You may not even need Ant to build your app. Want even shorter cycles? Embed Jython (example provided) and don't even restart your application while you're changing code and testing it. It fits with the WUI perfectly.

Divide and conquer, use Java to its fullest
Partition and organize your code any way you want. Implement your favorite patterns as you wish: the application is written 100% in Java, you have complete control over it. Want to create factories for your components? You don't have to, but you can. Want to create deep object hierarchies? Shallow ones? Want to cache widgets? pre-allocate them? serialize their state to disk? Do whatever you want. The WUI doesn't force you into a particular style of programming.

Keep it simple. Really.
How many jars do you want to keep track of? How many other libraries does your framework require? The WUI only has a dependency on log4j. That's it. Deploy your app with as little as 3 jar files: wui.jar, log4j.jar, yourcode.jar.