Web Development

Why qooxdoo falls short on its goal of simplification

Web developer Tony Patton explains why the qooxdoo JavaScript library left him feeling cold.

The days of building Web applications from scratch are over, as a variety of JavaScript libraries are freely available to provide a solid foundation. One JavaScript library that I recently learned about is qooxdoo (its Web site prescribes pronouncing the name as "cooks do"). It is an open source AJAX Framework that simplifies building Web user interfaces.

I decided to take qooxdoo for a test drive, and the results left me feeling cold. If you want to check out the library for yourself, this article provides some information that will be useful to you.

How to get qooxdoo

Qooxdoo is freely available for download in these options:

  • Quickstart: This is the easiest way to take a peek at qooxdoo. A simple application is included, along with a pre-build script, so no software is installed on your system. You can view the samples via your browser.
  • Evaluation: This allows you to view qooxdoo in action without actually installing any software. You can run all sample code to get an idea of what qooxdoo can do for you.
  • SDK: All source code is included, so you can dig into the meat of qooxdoo. It allows you to build full-blown qooxdo applications. It does require some system setup to use the integrated tools.
  • Skeleton: This is a starting point for building custom applications via qooxdoo. The build process has been pre-configured, so you can concentrate on development as opposed to system setup. This download is included with the SDK installation as well.
  • RPC backend: A number of RPC servers are available in a separate download. This allows you to setup RPC calls to the servers in your JavaScript code (via qooxdoo).

Each download option includes a link for the latest stable build as well as a link to older builds. The downloads are contained within compressed files that include release notes and a readme file to guide you through any necessary setup. You can take a look at the quickstart or evaluation downloads to get an idea of what is possible with qooxdoo.

What qooxdoo provides

I am always a bit apprehensive when approaching JavaScript libraries or any programming language add-ons; my main concern is compatibility. I avoid libraries that extend basic functionality, thus adding its own twist. A good example of such an approach is most things from Microsoft.

I am happy to report that qooxdoo does not extend native JavaScript; this makes it easy to integrate with other libraries or custom code that you may be using on a project. The JavaScript within qooxdoo is completely object-oriented and based on namespaces. There are currently about 350 classes in the library.

The code has been tweaked and tested to eliminate any memory leaks, and popular browsers (Internet Explorer, Firefox, Opera, and Safari) are supported.

Along with the base JavaScript framework, qooxdoo includes a GUI toolkit and is AJAX enabled. Qooxdoo provides these features through its JavaScript code:

  • Event-based programming: It fully supports events-based programming to handle user interaction within the UI. In addition, you can use AJAX functionality to communicate with the Web server.
  • Layout manager: Qooxdoo provides various ways to lay out a UI, including the Canvas, Box, and Grid. The concept of a layout manager will be familiar to Java developers. The layout managers are flexible and provide support for auto-sizing UI elements.
  • Widgets: Various UI elements or widgets are available to quickly build a Web interface. This includes building a menu, toolbar, text fields, and so forth.
  • Themes: Qooxdoo allows you to set up and use consistent presentation or themes for a Web application. This includes such things as colors, fonts, borders, and icons.
  • Communication: Qooxdoo embraces AJAX. You can easily achieve server-based communication using the XMLRequest object.
  • Internationalization: Qooxdoo has built-in support for both internationalization and localization, which provides support for all languages and locales across the world.
  • Build system: UNIX-style make commands supposedly hide complexity. Class dependencies are automatically resolved, and JavaScript compression is employed.
  • Optimized code: The code has been designed for high performance applications with no memory leaks present.

Licensing

Current and future qooxdoo releases are made available under the GNU Lesser General Public License (LGPL) and the Eclipse Public License (EPL). You choose which license to follow, so review both licensing options before using qooxdoo in an application.

My thoughts on qooxdoo

My very first impression of the qooxdoo library was positive, but this quickly went south as I dug deeper into actually using it. First, it has been developed on UNIX with UNIX in mind. This is painfully clear to non-UNIX developers when qooxdoo requires usage of many UNIX-based tools like make. The setup requirements for Windows are complicated, and the process of actually building and rolling out an application is confusing and not worth the time. However, you may have a different opinion when or if you give it a try.

You decide

The abundance of free code both simplifies and muddles the life of a developer. The code available via libraries such as qooxdoo is well-tested and rock solid, but deciding on which library to use (if any) can be an arduous process.

If you are looking to build power Web interfaces that employ AJAX functionality, qooxdoo may be a good choice. The key is that you need to spend time learning about it in order to make a well-informed choice.

Have you used qooxdoo in past or present development projects? Do you prefer other libraries? Share your thoughts and experience with the Web development community by posting to the article discussion.

Tony Patton began his professional career as an application developer earning Java, VB, Lotus, and XML certifications to bolster his knowledge.

---------------------------------------------------------------------------------------

Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Development Zone newsletter, delivered each Tuesday. Automatically subscribe today!

About

Tony Patton has worn many hats over his 15+ years in the IT industry while witnessing many technologies come and go. He currently focuses on .NET and Web Development while trying to grasp the many facets of supporting such technologies in a productio...

8 comments
Ajax4Hire
Ajax4Hire

emulation platform on windows. Windows command line tools are like the little brother trying to play in the big game. You smile and say that is cute but the Unix/Linux command line tools are soooo much better. Cygwin gives you real "make", awk/sed/grep and bash environment that windows eschews for a cottoncandy GUI.

Justin James
Justin James

Tony - I am not sure if I follow the technical details of this. Why would you need make for a JavaScript library? Or is that for a server side piece? If it is for a server side peice, what are the requirements for installing it? Thanks! J.Ja

SnoopDougEDoug
SnoopDougEDoug

I use both Cygwin and WSU, and I actually prefer the Microsoft product (they farmed out the development to Interix anyway). One issue has been I could never get the termcap set quite right and my bash shell on cygwin was problematic. I haven't looked at this JS lib, but if they are assuming Unix skills, they should put that up front. My experience has been that some (most?) Windows developers, especially the VB-types, have a difficult time adapting to command-line utilities, such as make. I would recommend a step-by-step tutorial to setting up a cygwin environment, installing the correct packages, etc. I just happen to know a kick-ass programmer/writer who could bang this out in just a week or so, 8-). doug

rpitera
rpitera

Essentially, qooxdoo implements an advanced class system on top of JavaScript?s built-in OO facilities. This is mainly used for the internal workings of qooxdoo itself, and instantiating and using qooxdoo objects is straightforward in JavaScript code. So the JScript itself does not necessitate a build environment; you need it to compile the external qooxdoo libraries...at least I think this is the reason. I'm guessing this is why Tony found it less than spectacular when he delved into the details, though I don't see this as a big deal to most Java devs, it would be a bit of a barrier to someone like me.

Justin James
Justin James

You know, I've never touched WSU, but it seems like 99% of people forget that it's there. Indeed, I forget that it is there 99% of the time. It is stuff like that, or the fact that IE used to be availble on *Nix, or the fact that the NT/2000 codebase used to run on PPC, SPARC, MIPS, and Alpha CPUs (indeed, the original XBox OS was a modification of the Windows 2000 PPC codebase, mostly just removing the unneeded stuff and upgrading Direct X), that leads me to beleive that Microsoft is not nearly as closed as a lot of people claim that they are. I am just always picking up too many undercurrents of them doing things at odds with what most people think of when they hear "Microsoft". Indeed, much of what comes out of Microsoft Research is a good example of that... J.Ja

aspatton
aspatton

The build process is described as a special feature of Qooxdoo that "does a lot of optimizing and packaging while creating a self-contained build version of your application." This requires setting up a Unix-like environment on Windows (via cygwin) to utilize the process, or you are okay if using Unix. I agree that a Java developer wouldn't have a problem with the process, but most Web developers are not Java developers. Using a JavaScript library should be as easy as including it within the page, but that is only my opinion.

okoehler1
okoehler1

Hi, I'd like to bring up another quite interesting feature about qooxdoo. Maybe you've heared of the Eclipse Rich Ajax Platform. This project will give you the possibility to create Ajax Web-applications with java. You can use almost any known class provided by the SWT stack. At the first glance it looks like GWT, allthough it does not come with a cross compiler but it dynamically renders your java classes into javascript, which is in this case the qooxdoo framework! That means your business logic stays where it belongs to - inside java. Ref http://www.eclipse.org/rap

Justin James
Justin James

This all makes more sense now, thanks! So really, there are a LOT more requirements on the server side. After all, whatever is getting compiled server side needs to be run on *something* and have some sort of access. So if I am reading this right, there is this mess of server code plus an HTTP handler in the mix (or a CGI or ISAPI plugin for IIS). Has anyone looked at this from the security angle? No way would I just blindly install a new HTTP handler on a server without some pretty rigorous inspection. J.Ja