26
The Griffon Framework An Investigation by Jim Kirkbride

Griffon demo

Embed Size (px)

Citation preview

Page 1: Griffon demo

The Griffon FrameworkAn Investigation by

Jim Kirkbride

Page 2: Griffon demo

What is this Griffon thing anyway?

Page 3: Griffon demo

What Is Griffon?

● Desktop Application Framework● Takes after Grails● MVC-based● Groovy-based● Vastly simplifies writing Swing-based

applications

Page 4: Griffon demo

Why Not Just Use Swing?

● Complex widget hierarchy● Difficult to separate out business logic from

view logic● Difficult to properly manage threading● Difficult to test● Wouldn’t you rather write Groovy?

Page 5: Griffon demo

Getting Started

● gvm install griffon <version>● set GRIFFON_HOME● add GRIFFON_HOME/bin to path● griffon create-app <app name>● You’re in business!

Page 6: Griffon demo

Griffon Project Layout

Page 7: Griffon demo

● Application.groovy○ App title○ Start-up Groups○ MVC Groups

● BuildConfig.groovy○ Environment settings○ Jar Signing○ Dependency resolution

Configuration

Page 8: Griffon demo

Configuration Cont.

● Builder.groovy○ SwingBuilder configuration

● Config.groovy○ Log4j configuration○ Global configuration

Page 9: Griffon demo

Application LifeCycle

● Initialize● Startup● Ready● Shutdown● Stop

Page 10: Griffon demo

About MVC...

Page 11: Griffon demo

MVC

Page 12: Griffon demo

Griffon MVC

Page 13: Griffon demo

● Nothing more than beans with “bindable” properties

● Uses the @Bindable AST transformation● Model != “Domain”!● PropertyChange listeners

Model

Page 14: Griffon demo

View

● Uses the SwingBuilder library to create layouts

● Uses model properties for two-way binding● Converters● Validators

Page 15: Griffon demo

Controller

● Actions defined as closures● Manipulates model values● Used to define threading

Page 16: Griffon demo

Services

● Just like Grails services● Injectable● No transactional capabilities

Page 17: Griffon demo

Application Events

● Built-in events● Custom Events

Page 18: Griffon demo

What About Testing?

● GriffonUnitTestCase● Access to Mock objects● Integration and Unit testing● Decidedly lacking in Acceptance Testing

○ FEST Plugin

Page 19: Griffon demo

Lets talk about everyone’s favorite topic…

Page 20: Griffon demo

Threading!

Page 21: Griffon demo

Threading

● Swing uses the “Event Dispatch Thread”● Makes you write ugly code using

SwingWorker● Is completely simplified in Griffon!

Page 22: Griffon demo

Threading Cont.

● On the EDT:○ execInsideUISync○ execInsideUIAsync

● Outside the EDT:○ execOutsideUI

● isUIThread● execFuture

Page 23: Griffon demo

Eco System

● Griffon still in development● Documentation is spotty at best, downright

wrong at worst● Andres is very active ● Griffon team is really responsive● Tons of plugins (very hit or miss)

Page 24: Griffon demo

Thanks!

Page 25: Griffon demo

LinksGriffonhttp://griffon.codehaus.org/

Griffon Guide (Latest)http://griffon.codehaus.org/guide/latest/guide/index.html

Jim Shingler's Presentation on Griffonhttp://www.slideshare.net/jshingler/griffon-in-front-grails-in-back-presentation

Griffon Demohttps://github.com/jameskbride/griffon-demo

Vending Machine Kata Implementation Examplehttps://github.com/jameskbride/vendingMachineGriffonDemo

Griffon Plugin Directoryhttp://artifacts.griffon-framework.org/category/all/plugins

Griffon ActiveJDBC Pluginhttp://griffon.codehaus.org/Activejdbc+Plugin

Griffon GlazedLists Pluginhttp://griffon.codehaus.org/Glazedlists+Plugin

Griffon FEST Pluginhttp://griffon.codehaus.org/Fest+Pluginhttps://github.com/griffon/griffon-fest-plugin/

Andres Almiray’s Bloghttp://www.jroller.com/aalmiray/