Mitch Pronschinske is a Senior Content Analyst at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often eats peanut butter and bananas, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone Zone Leader and has posted 2569 posts at DZone. You can read more from them at their website. View Full User Profile

Metawidget 1.0 Coming Soon

06.04.2010
| 7688 views |
  • submit to reddit
Metawidget is a UI tool that circumvents many of the disadvantages in code generators, visual tools, or UI languages while still avoiding much of the manual coding.  Currently at version 0.95, Metawidget will be showcased at this month's JBoss World conference, and we could finally see the release of version 1.0.

Developing data entry forms for applications is becoming a common task for a lot of developers. Visual tools and UI languages become somewhat tedious when you have to drag-and-drop or write declarations for every single widget and label.  If one of the widgets doesn't exactly match a definition (names and types in your POJOs, field lengths in database schema, etc.) at the back-end, errors occur.  This is especially problematic because our back-end business objects need to change as the requirements of the application change (new fields, types, etc.).  You have to modify your UI every time a definition changes.  Code generators don't have most of these problems, but they tend to end up building bland, generic-looking UIs (usually CRUD UIs).  Also, some will only work for a specific set of technologies that the generator targets.

Metawidget espouses a different strategy.  Metawidget is a "smart User Interface widget" that makes the necessary changes at runtime to match the UI components to the properties of your back-end business objects.  Without introducing new technologies into your application, Metawidget examines your back-end architecture (Java/Scala/GroovyBeans, annotations, XML config) and creates widgets that are native to your front-end framework (Swing, Struts, JSF, Android).  These widgets are subcomponents that are meant to slide into your existing UI and not hide or replace the existing UI framework. 

Several Metawidgets Embedded in a GWT Application


The goal of Metawidget is to provide a general purpose architecture for automatic UI generation that leaves plenty of room for customization so that your UI doesn't have the bland, generated look.  Developers should be able to use their various existing back-end technologies and front-end frameworks to automate UI generation.  Metawidget is successful at this because it only generates the forms, not your entire UI.

The Metawidget project has been doing its version releases in small, incremental launches.  Version 0.95 was released just last month with SWT support.  Here's a list of the front-ends and back-ends that Metawidget already supports:



Metawidget is distributed under the LGPL license.