SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

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

Semelhante a Griffon demo

Behaviour Testing and Continuous Integration with Drupal
Behaviour Testing and Continuous Integration with DrupalBehaviour Testing and Continuous Integration with Drupal
Behaviour Testing and Continuous Integration with Drupal
smithmilner
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch development
Yuriy Gerasimov
 

Semelhante a Griffon demo (20)

Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Behaviour Testing and Continuous Integration with Drupal
Behaviour Testing and Continuous Integration with DrupalBehaviour Testing and Continuous Integration with Drupal
Behaviour Testing and Continuous Integration with Drupal
 
Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)
 
Evolving to Cloud-Native - Anand Rao
Evolving to Cloud-Native - Anand RaoEvolving to Cloud-Native - Anand Rao
Evolving to Cloud-Native - Anand Rao
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
 
Monitoring in the cloud with Puppet
Monitoring in the cloud with PuppetMonitoring in the cloud with Puppet
Monitoring in the cloud with Puppet
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
CI and other tools for feature branch development
CI and other tools for feature branch developmentCI and other tools for feature branch development
CI and other tools for feature branch development
 
An intro to git
An intro to gitAn intro to git
An intro to git
 
How to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipeline
 
Grails 101
Grails 101Grails 101
Grails 101
 
Multiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for PublishersMultiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for Publishers
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Plone Intranet under the hood
Plone Intranet under the hoodPlone Intranet under the hood
Plone Intranet under the hood
 
Xamarin.android memory management gotchas
Xamarin.android memory management gotchasXamarin.android memory management gotchas
Xamarin.android memory management gotchas
 
Best Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentBest Practices in PHP Application Deployment
Best Practices in PHP Application Deployment
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Griffon: Swing just got fun again
Griffon: Swing just got fun againGriffon: Swing just got fun again
Griffon: Swing just got fun again
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
 
Ext GWT - Overview and Implementation Case Study
Ext GWT - Overview and Implementation Case StudyExt GWT - Overview and Implementation Case Study
Ext GWT - Overview and Implementation Case Study
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

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