Introducing Shandor Xul: Run Apps in Swing, Swt and GWT
For the past year Pentaho has been developing a UI framework based on XUL for writing apps that run in Swing, SWT and GWT without code modification. It's been open source from the start (LGPLv2) but not advertised. We've recently moved the project out into BitBucket.org as Shandor Xul and are looking for contributors!
Shandor allows you to write applications in a UI agnostic framework based on the Mozilla XUL declarative mark-up syntax. Shandor is not code-gen! It's a runtime framework with agnostic interfaces that you code against. There's an live DOM representing your application that you can interact with and bind your code to.
Below are some of the things Shandor can do for you:
- Built-in Binding Framework (including collections to UI)
- Includes and Overlays (overlays allow runtime changing of the UI, free plug-in framework!)
- IOC ready (Spring, Juice, etc.)
- Groovy event handler support.
- Built-in i18n
- Live DOM supporing addChild, removeChild, createElement, getElementsBy(Id|Xpath|TagName)
Being able to change a UI without recompiling is fantastic for our users as well as our graphic designers. Not having to write and maintain the same code in 3 places makes coding in a heterogeneous environment maintainable.
Pentaho employs an Agile development methodology and Shandor lends itself naturally to that environment. Refactors of the UI are very easily accomplished as there's already a natural separation between business logic and presentation. The resulting code is also much easier to follow six months after it's written making functionality changes easier as well.
Shandor has been of great use to us and we hope that it can do the same for the larger Java community. We're looking for anyone who would like to contribute to the project, from users to coders!
The code, doc (some) and a sample application can be found here:
http://bitbucket.org/codeoncoffee/shandor-xul/wiki/Home
-Nick Baker
- Login or register to post comments
- 799 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)









