Today marks the 9th anniversary of Danno’s announcement of Griffon 0.0. It’s been quite the ride since then, and lots of fun if I may say so. As Danno noted, Griffon began life as a fork of the Grails codebase at the time. He literally copied the Grails source, removed everything that was related to HTTP and Servlets and added Swing on top. This allowed Griffon to bootstrap itself very quickly and begin its own journey. The feedback we’ve got was very positive and we happily continued adding more features, letting Griffon to have it’s own identity.
Plugin support was added in 0.1 as announced here, a mere 2 months after the initial release. New widget builders appeared, such as JideBuilder and FlamingoBuilder, updates to SwingPad and GfxPad were posted, as well as other sample applications. In March 2009, a deal was struck with Manning Publications to write Griffon in Action. More plugins kept popping into existence, including multi-language support. It was now possible to build Griffon applications using 5 different programming languages: Groovy, Java, Scala, Clojure, and JavaFX Script. We also ran a contest for a logo, which has been in use since: the recognizable winged G on a red backdrop.
Almost a year later some of the Griffon plugins were ported to Grails, such as the REST plugin. A few other features found in the Griffon CLI tool were also ported to Grails, like the auto completion of commands, inspired by the same feature found in the Gradle CLI tool. The Groovy ecosystem was buzzing with lots of cross-pollination and chatter among all projects. Griffon 0.2 was released one month after its first anniversary, with a host of remoting plugins targeting Grails as a source, this meant it was now much easier to create a desktop front-end for a Grails powered application.
The year 2010 rolled in with support for a group of UI toolkits: Apache Pivot, SWT, and GTK, adding them to the existing Swing and JavaFX for a total of 5 officially supported UI toolkits. Lanterna would join at a later date for a total of six UI toolkits, more than any other Desktop application framework known at the time. The first (of what has become a tradition) Griffon announcement made at Gr8conf Copenhagen was the immediate availability of Griffon 0.3. The framework was so close to being mature after almost 2 years in development that the team decided to push forward and agree 1.0.0 as soon as we had the last showstoppers in the bag. Griffon 0.9 brought new command line updates and the concept of archetypes (a feature inspired by Maven archetypes). Griffon’s second birthday arrived with some gifts such as the capability to introspect artifacts and obtain metadata that could be used to dynamically generate views and other interesting features. Alas the 1.0.0 release did not occur in 2010, nor in 2011 for that matter. The plugin system and the whole CLI was overhauled in 0.9.5 during 2011, a major undertaking but it meant working with plugins was much easier than before. Griffon 0.9.3 was released live on stage at Gr8conf Copenhaguen. More plugins appeared, specially those dealing with persistence. We were looking forward to a standalone version of GORM but that sadly took more time so the team built their own versions without GORM capabilities.
After some quiet periods of no news regarding the book, on May 21st 2012 the news came through: Griffon in Action is done! The following month, another announcement made at Gr8conf Copenhagen: Griffon 1.0.0! YES! We were done with the golden release! The team turned to a predictable release cycle of 3 months per release. This allowed users of the framework to plan their upgrades accordingly. This pace continued until Griffon 1.5.0, the last release of the 1.x series. Birthday #4 and #5 passed by; we saw the framework reaching a level of stability when no new features were added to core. The team took some time off to rethink where the framework could go from its current position. The project was well established in the Groovy community, and despite its great capabilities for building Java and JavaFX applications not that many developers outside the Groovy community used the framework.
A plan was hatched to make the framework even more versatile, reducing the amount of dependencies and streamlining the API. Groovy was moved to its own plugin; JavaFX support was added to core from the beginning; JSR-330 and JSR-305 became an important part of the core API; there was no need to have a proprietary build system, instead Gradle and/or Maven would be used. The first beta of the 2.x series arrived a few days after Gr8Conf Copenhagen which meant we missed the chance to make a big splash on stage. However we celebrated Griffon’s 6th birthday with the release of 2.0.0! The cadence of 3 months per release has been observed since as you can observe at the framework’s news page, with the latest release, 2.12.0, posted just 10 days ago. The rise of mobile as a viable platform targeted by Java and JavaFX prompted the appearance of Basilisk, a fork of Griffon that specifically targets this space with a smaller codebase and other features custom tailored for mobile devices. It’s worth mentioning that during all these years Griffon has been present as a topic in many Java/Groovy conferences all across the world. Desktop is not dead! 😉
A lot has happened since 0.0 broke out of its shell. The framework started as carbon copy of Grails, leveraging Groovy and Swing. Today it can be used to bootstrap a 100% Java and JavaFX application with no penalties. You can continue to mix Groovy and Java as shown in tutorial #4 or use different MVC design patterns as shown in tutorial #5. More plugins continue to appear, and since two releases ago all artifacts are now available from both Bintray’s JCenter and Maven Central. The team is quite excited by all these achievements and all the feedback we have received across the years; many features have been added to the framework thanks to community involvement. Looking forward to the next 9 years.
Happy Birthday Griffon!
PS: Browse to for a view of Griffon announcements and other posts across the years.