Metawidget 1.0 Coming Soon
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.