After over a year of poking and prodding at the various parts of desktop Java the Groovy swing developers are proud to announce the first release of Griffon, a Grails-like tool for Swing development. While not yet industrial strength we felt it was important to put out a release so people can get a feel for what Griffon is and where it will be going. And since all good computer scientists start counting from zero, 0.0 seemed to be the perfect release number.
What are some of the highlights of Griffon?
- A Grails like build system for desktop apps, including targets to run the application.
- A directory structure that rewards MVC separation of code.
- Use of Groovy programming language features to reinforce MVC separation (builders, @Bindable annotation, metaclass method injection, scripts, etc).
- A view layer based on Groovy's SwingBuilder, allowing for a declarative layout of GUI code.
- An infrastructure to allow seamless injection of other widget libraries. JIDE and SwingX are supported out of the box.
- Automatic packaging and signing for WebStart, Applet, and traditional application deployment.
Why call it Grails-like instead of rails-like? The structure of the directories and some of the design idioms do have a heritage back to Ruby on Rails, but Griffon is more inspired by Grails than it was by Rails. And by "inspired" I mean "taking large chunks of Grails code to bootstrap the codebase" (thanks to the ASL 2.0 this is permissible). Not all Grails features have been brought over yet. Plugins and GORM are two notable standouts that we would like to add in future releases.
The distribution also comes with three demo apps developed in Griffon: Greet, a Twitter client; GrailsSnoop, a swing wrapper around the Grails docs; and WidgetKitchenSink, a demo app of various widgets supported by Griffon. These applications live in the samples directory and can be run directly by "griffon run-app".
There is clearly much more that can be done, and this is just the beginning. Future releases hope to bring in client side GORM, pack200 support, plugin support, and more GUI libraries. Like most open source projects external contributions and participation are always welcome. For questions and comments there is a firstname.lastname@example.org mailing list set up.