The Griffon team is very pleased to announce that Griffon 0.3 has been released!. This release is loaded with new features, plus a good number of bug fixes. Here's a quick tour on what 0.3 has to offer:
Addon enhancements
As you may know, addons are Griffon's runtime plugins; you can use them to extend the capabilities of an application. Addons were introduced in 0.2 however they only exposed a small set of hooks (factories, methods, props) plus their own life cycle hooks. Starting form this release addons are able to contribute application event listeners and all types of delegates that a FactoryBuilderSupport builder can handle.
Native libraries support
What do you do if your application requires a platform specific library or jar? What if you need to package several of those depending on which platform you intend to run on? What about plugins and native libraries? Well all these questions and more can now be solved by following a file placement convention that can save you lots of time. Supported platforms at the moment include: Windows, Linux, OSX and Solaris (all 32bit versions).
Packaging enhancements
Closely related to native libraries support, you're now able to specify additional settings and resources that can merged into the generated JNLP files when running on webstart and applet modes. No need to manually fumble with those files anymore. Plugins can take advantage of this feature too.
Artifacts API
Since the beginning Griffon has had basic artifacts (Model, View, Controller) but there was no easy way to query them for additional info. This is precisely what the artifacts API does for you now. Additional artifact types may be added an listed when calling 'griffon stats'. this API is further enhanced by the artifacts-plugin.
Lightweight services
Griffon 0.3 introduces services support. Services in Griffon differ from their Grails counterparts as they are not transactional. The Griffon runtime will inject an instance of a particular service to other artifatcs following a simple naming convention; this is not a replacement for a full DI solution but gets the job done without installing additional plugins.
Threading additions
While SwingBuilder's edt{}, doLater{} and doOutside{} are very handy they only work if the current toolkit is Swing. Griffon supports other toolkits via plugins (SWT, Pivot, Gtk, and JavaFX) so it makes sense to have generic threading facilities that can work with any toolkit. This is precisely what UIThreadHelper does.
In addition to this features, a new set of plugins is available too; check'em out- artifacts - further enhancements to the artifacts API. distributed as a plugin to keep core's dependency count low.
- i18n - message i18n support using Spring's MessageSources.
- erlang - support for making RPC calls to Erlang servers using Erlang's JInterface.
- flyingsaucer - an XHTML renderer component.
- processing - make 2D/3D renders and animations with the Processing Programming language and Griffon.
- serial - serial port communication libraries.
- thrift - Apache Thrift support (another serialization option).
- jmx - a straight port of the Grails JMX plugin, originally created by Ken Sipe.
- p6spy - another Grails plugin port.
- swt - relies on SWTBuilder.
- pivot - brand new UI Toolkit from VMWare labs, donated to Apache.
- gtk - GNOME integration via java-gnome.
- berkeleydb - available now!
- db4o - available now!
- couchdb - preview mode
- neo4j - preview mode
- riak - preview mode
Let us know what your impressions are of these new features and tools. We would also appreciate if you let us know if Griffon has been of use to you and how. Feedback is welcome always.
Keep on Groovying!