SlideShare a Scribd company logo
The Griffon Framework
An Investigation by
Jim Kirkbride
What is this Griffon thing anyway?
What Is Griffon?
● Desktop Application Framework
● Takes after Grails
● MVC-based
● Groovy-based
● Vastly simplifies writing Swing-based
applications
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?
Getting Started
● gvm install griffon <version>
● set GRIFFON_HOME
● add GRIFFON_HOME/bin to path
● griffon create-app <app name>
● You’re in business!
Griffon Project Layout
● Application.groovy
○ App title
○ Start-up Groups
○ MVC Groups
● BuildConfig.groovy
○ Environment settings
○ Jar Signing
○ Dependency resolution
Configuration
Configuration Cont.
● Builder.groovy
○ SwingBuilder configuration
● Config.groovy
○ Log4j configuration
○ Global configuration
Application LifeCycle
● Initialize
● Startup
● Ready
● Shutdown
● Stop
About MVC...
MVC
Griffon MVC
● Nothing more than beans with “bindable”
properties
● Uses the @Bindable AST transformation
● Model != “Domain”!
● PropertyChange listeners
Model
View
● Uses the SwingBuilder library to create
layouts
● Uses model properties for two-way binding
● Converters
● Validators
Controller
● Actions defined as closures
● Manipulates model values
● Used to define threading
Services
● Just like Grails services
● Injectable
● No transactional capabilities
Application Events
● Built-in events
● Custom Events
What About Testing?
● GriffonUnitTestCase
● Access to Mock objects
● Integration and Unit testing
● Decidedly lacking in Acceptance Testing
○ FEST Plugin
Lets talk about everyone’s
favorite topic…
Threading!
Threading
● Swing uses the “Event Dispatch Thread”
● Makes you write ugly code using
SwingWorker
● Is completely simplified in Griffon!
Threading Cont.
● On the EDT:
○ execInsideUISync
○ execInsideUIAsync
● Outside the EDT:
○ execOutsideUI
● isUIThread
● execFuture
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)
Thanks!
Links
Griffon
http://griffon.codehaus.org/
Griffon Guide (Latest)
http://griffon.codehaus.org/guide/latest/guide/index.html
Jim Shingler's Presentation on Griffon
http://www.slideshare.net/jshingler/griffon-in-front-grails-in-
back-presentation
Griffon Demo
https://github.com/jameskbride/griffon-demo
Vending Machine Kata Implementation Example
https://github.com/jameskbride/vendingMachineGriffonDemo
Griffon Plugin Directory
http://artifacts.griffon-framework.org/category/all/plugins
Griffon ActiveJDBC Plugin
http://griffon.codehaus.org/Activejdbc+Plugin
Griffon GlazedLists Plugin
http://griffon.codehaus.org/Glazedlists+Plugin
Griffon FEST Plugin
http://griffon.codehaus.org/Fest+Plugin
https://github.com/griffon/griffon-fest-plugin/
Andres Almiray’s Blog
http://www.jroller.com/aalmiray/
Links Cont.
Books
Griffon In Action
http://www.amazon.com/Griffon-Action-Andres-
Almiray/dp/1935182234/ref=sr_1_1?
ie=UTF8&qid=1404053485&sr=8-1&keywords=griffon
Images
Griffon Logo
http://media.xircles.codehaus.
org/_projects/griffon/_logos/medium.png
Yarn Image
http://2.bp.blogspot.com/-
DwD6bi3l80E/TpeLW8T9XUI/AAAAAAAATi8/PiyqmV6YAEQ/
s1600/yarn.jpg

More Related Content

PDF
Continuous delivery journey - Montgomery county JUG
PDF
Continuous delivery journey at LesFurets.com
PPTX
Enterprise Microservices
PPTX
Agile coding dojo session #3 (2014 09-20)
PPTX
GWTcon 2015 - Best development practices for GWT web applications
PDF
OpenAPIを利用したPythonWebアプリケーション開発
PDF
Speed in Four Quarters :: A Technique to Compare Web Page Performance
PDF
[WSO2Con USA 2018] Chipping Away at Technical Debt with WSO2
Continuous delivery journey - Montgomery county JUG
Continuous delivery journey at LesFurets.com
Enterprise Microservices
Agile coding dojo session #3 (2014 09-20)
GWTcon 2015 - Best development practices for GWT web applications
OpenAPIを利用したPythonWebアプリケーション開発
Speed in Four Quarters :: A Technique to Compare Web Page Performance
[WSO2Con USA 2018] Chipping Away at Technical Debt with WSO2

What's hot (20)

PDF
WPE: Current Status and Future (Web Engines Hackfest 2018)
PDF
It is easy contributing to open source - JCON 2020
PPTX
45 Tools to Boost Your Front-End
PPTX
Ivan Pashko ITEM 2018
PPTX
Angular intro
PDF
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
PPT
Introduction to Grails
ODP
Avoiding common pitfalls of datetime from a webapp's perspective
PDF
The Self-Service Developer - GOTOCon CPH
PDF
Building GitLab
PDF
From a native app to a webapp using Node.js and emscripten
PPTX
BarCamp CR 2014 - Python para web
PDF
Contributing to Koha
PPT
Atwix - Ярослав Рогоза
PPTX
Introduction to DevOps with Visual Studio Team Services -.Net Conf Mx 2018
ODP
Asynchronous programming with Functional Java and comparison with Scala
PDF
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
PDF
PDF
Towards component based web UI with ReactJS
PPTX
Jump into React-Native (Class 6)
WPE: Current Status and Future (Web Engines Hackfest 2018)
It is easy contributing to open source - JCON 2020
45 Tools to Boost Your Front-End
Ivan Pashko ITEM 2018
Angular intro
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
Introduction to Grails
Avoiding common pitfalls of datetime from a webapp's perspective
The Self-Service Developer - GOTOCon CPH
Building GitLab
From a native app to a webapp using Node.js and emscripten
BarCamp CR 2014 - Python para web
Contributing to Koha
Atwix - Ярослав Рогоза
Introduction to DevOps with Visual Studio Team Services -.Net Conf Mx 2018
Asynchronous programming with Functional Java and comparison with Scala
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
Towards component based web UI with ReactJS
Jump into React-Native (Class 6)
Ad

Similar to Griffon demo (20)

ODP
Griffon: Re-imaging Desktop Java Technology
PPT
Griffon: Swing just got fun again
PPT
Griffon Presentation
ODP
JavaOne 2009 BOF-5189 Griffon In Depth
PDF
Griffon: Swing just got fun again
PPT
Griffon - Making Swing Fun Again
PDF
Griffon @ Svwjug
PDF
Porting legacy apps to Griffon
PPTX
Gr8conf - Griffon Update
PDF
Introduction to Griffon
PDF
Griffon for the Enterprise
PDF
Flying with Griffon @ CONFESS
PPTX
Devoxx - The Groovy Ecosystem
KEY
Polyglot Grails
PDF
Enterprise Griffon
PPT
Devoxx - Flying with Griffon
PPT
Groovygrails
PPT
Use Cases of #Grails in #WebApplications
PDF
Groovy and noteworthy
PDF
Groovy-er desktop applications with Griffon
Griffon: Re-imaging Desktop Java Technology
Griffon: Swing just got fun again
Griffon Presentation
JavaOne 2009 BOF-5189 Griffon In Depth
Griffon: Swing just got fun again
Griffon - Making Swing Fun Again
Griffon @ Svwjug
Porting legacy apps to Griffon
Gr8conf - Griffon Update
Introduction to Griffon
Griffon for the Enterprise
Flying with Griffon @ CONFESS
Devoxx - The Groovy Ecosystem
Polyglot Grails
Enterprise Griffon
Devoxx - Flying with Griffon
Groovygrails
Use Cases of #Grails in #WebApplications
Groovy and noteworthy
Groovy-er desktop applications with Griffon
Ad

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
A Presentation on Artificial Intelligence
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
1. Introduction to Computer Programming.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
August Patch Tuesday
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Mushroom cultivation and it's methods.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Programs and apps: productivity, graphics, security and other tools
Machine Learning_overview_presentation.pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Group 1 Presentation -Planning and Decision Making .pptx
Unlocking AI with Model Context Protocol (MCP)
A Presentation on Artificial Intelligence
OMC Textile Division Presentation 2021.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Spectroscopy.pptx food analysis technology
1. Introduction to Computer Programming.pptx
Spectral efficient network and resource selection model in 5G networks
August Patch Tuesday
MIND Revenue Release Quarter 2 2025 Press Release
Mushroom cultivation and it's methods.pdf
Machine learning based COVID-19 study performance prediction
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Weekly Chronicles - August'25-Week II
Programs and apps: productivity, graphics, security and other tools

Griffon demo

  • 1. The Griffon Framework An Investigation by Jim Kirkbride
  • 2. What is this Griffon thing anyway?
  • 3. What Is Griffon? ● Desktop Application Framework ● Takes after Grails ● MVC-based ● Groovy-based ● Vastly simplifies writing Swing-based applications
  • 4. 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?
  • 5. Getting Started ● gvm install griffon <version> ● set GRIFFON_HOME ● add GRIFFON_HOME/bin to path ● griffon create-app <app name> ● You’re in business!
  • 7. ● Application.groovy ○ App title ○ Start-up Groups ○ MVC Groups ● BuildConfig.groovy ○ Environment settings ○ Jar Signing ○ Dependency resolution Configuration
  • 8. Configuration Cont. ● Builder.groovy ○ SwingBuilder configuration ● Config.groovy ○ Log4j configuration ○ Global configuration
  • 9. Application LifeCycle ● Initialize ● Startup ● Ready ● Shutdown ● Stop
  • 11. MVC
  • 13. ● Nothing more than beans with “bindable” properties ● Uses the @Bindable AST transformation ● Model != “Domain”! ● PropertyChange listeners Model
  • 14. View ● Uses the SwingBuilder library to create layouts ● Uses model properties for two-way binding ● Converters ● Validators
  • 15. Controller ● Actions defined as closures ● Manipulates model values ● Used to define threading
  • 16. Services ● Just like Grails services ● Injectable ● No transactional capabilities
  • 17. Application Events ● Built-in events ● Custom Events
  • 18. What About Testing? ● GriffonUnitTestCase ● Access to Mock objects ● Integration and Unit testing ● Decidedly lacking in Acceptance Testing ○ FEST Plugin
  • 19. Lets talk about everyone’s favorite topic…
  • 21. Threading ● Swing uses the “Event Dispatch Thread” ● Makes you write ugly code using SwingWorker ● Is completely simplified in Griffon!
  • 22. Threading Cont. ● On the EDT: ○ execInsideUISync ○ execInsideUIAsync ● Outside the EDT: ○ execOutsideUI ● isUIThread ● execFuture
  • 23. 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)
  • 25. Links Griffon http://griffon.codehaus.org/ Griffon Guide (Latest) http://griffon.codehaus.org/guide/latest/guide/index.html Jim Shingler's Presentation on Griffon http://www.slideshare.net/jshingler/griffon-in-front-grails-in- back-presentation Griffon Demo https://github.com/jameskbride/griffon-demo Vending Machine Kata Implementation Example https://github.com/jameskbride/vendingMachineGriffonDemo Griffon Plugin Directory http://artifacts.griffon-framework.org/category/all/plugins Griffon ActiveJDBC Plugin http://griffon.codehaus.org/Activejdbc+Plugin Griffon GlazedLists Plugin http://griffon.codehaus.org/Glazedlists+Plugin Griffon FEST Plugin http://griffon.codehaus.org/Fest+Plugin https://github.com/griffon/griffon-fest-plugin/ Andres Almiray’s Blog http://www.jroller.com/aalmiray/
  • 26. Links Cont. Books Griffon In Action http://www.amazon.com/Griffon-Action-Andres- Almiray/dp/1935182234/ref=sr_1_1? ie=UTF8&qid=1404053485&sr=8-1&keywords=griffon Images Griffon Logo http://media.xircles.codehaus. org/_projects/griffon/_logos/medium.png Yarn Image http://2.bp.blogspot.com/- DwD6bi3l80E/TpeLW8T9XUI/AAAAAAAATi8/PiyqmV6YAEQ/ s1600/yarn.jpg