spring io 2012: the walking dead - desktop applications with spring rcp
TRANSCRIPT
![Page 1: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/1.jpg)
The Walking Dead: Aplicaciones de Escritorio con Spring
Julio ArgüelloDirector of Software Architecture @B2B2000
@julioarguellohttp://es.linkedin.com/in/julioarguello
![Page 2: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/2.jpg)
Table Of Contents
• Why “The Walking Dead” ?!?!• Full Cast• A Brief History• Architecture• The Big Deal• Prototyping• How To• Related Links
WALKING DEAD
THE
![Page 3: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/3.jpg)
Why “The Walking Dead” ?!?!
http://java.dzone.com/why-desktop-not-webapphttps://blogs.oracle.com/geertjan/entry/james_gosling_the_massive_popularity
Is Desktop Really Dead?
![Page 4: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/4.jpg)
Full CastWho is who?
![Page 5: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/5.jpg)
Full Cast [Main Character]• Should we dance… (…Swing)? Rick Grimes as
Our Client!!
![Page 6: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/6.jpg)
Full Cast [Co-Star]• …Together? Lori Grimes as
B2B 2000!!
![Page 7: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/7.jpg)
Full Cast [Special Guest Artist]• …And a Child was Born Carl Grimes as
Bluebell!!
![Page 8: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/8.jpg)
Full Cast [Supporting Actors]• And the Context The Walkers as
$!%&%!$!!
![Page 9: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/9.jpg)
A Brief History
Leyenda
Gestión AcadémicaRecursos HumanosGestión Económica
RegistroGestión
Investigación
Portal Corporativo
Seguimiento de Cursos de Extensión Universitaria
Inventario de patrimonio
Telefonía
AulaNETBiblioteca Uniovi Directo Tarjeta Inteligente
Gestión Identidades
LDAP Corporativo
Active Directory
Correo Corporativo
Functional and technological Context
![Page 10: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/10.jpg)
A Brief History [The Recipe]
Ingredients:J2SE 5.0JPA 1.0 (Hibernate)Spring FrameworkWAS 6Informix
![Page 11: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/11.jpg)
A Brief History [The Holy Book]
![Page 12: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/12.jpg)
A Brief History [The Infrastructure]
![Page 13: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/13.jpg)
A Brief History [The Team]
![Page 14: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/14.jpg)
ArchitectureBasic Architecture Concepts
![Page 15: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/15.jpg)
Architecture [Bottom-Up]
• Data Access Layer– JpaGenericDao (over Hibernate)– Package DAO’s
![Page 16: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/16.jpg)
Architecture [Service Layer]
POJOTRANSA
CTIONAL
CACHEDSECURED
REMOTE
CUSTOM ASP
ECT DynamicProxyProxy#DoAction
1. DoBefore2. RealSubject#DoAction3. DoAfter
![Page 17: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/17.jpg)
Architecture [Service Layer]
![Page 18: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/18.jpg)
Architecture [Service Layer]
![Page 19: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/19.jpg)
Architecture [Remote Services]
![Page 20: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/20.jpg)
Architecture [Remote Services]
• Server Side
• Clent Side
![Page 21: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/21.jpg)
Architecture [Spring HTTP Invoker]
![Page 22: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/22.jpg)
The Big DealDesktop or not Desktop?
![Page 23: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/23.jpg)
The Big Deal [What?]
We want a Desktop client!!
OK, let’s use both Desktop and Web Clients
![Page 24: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/24.jpg)
The Big Deal [2006] [Why?]
↓↓ Few Plugins
↓ Inmature
↓↓↓ Hard To Learn
↓↓↓↓ Unreal
↓↓↓↓↓ Privative
↓↓↓↓↓↓ Heterogeneus
![Page 25: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/25.jpg)
The Big Deal [The Winner]• Why Spring RCP?• Provide a way to build
structured, highly-configurable, GUI-standards-following Swing applications faster by leveraging the Spring Framework
• Foster integration with existing rich-client-related projects where it make sense. For example, jgoodies-forms and TableLayout are two good layout managers. We don't need to develop another one.
• Adhere to the principles set forth by the Spring Framework programming to interfaces; the importance of sound OO design, documentation, and testing.
![Page 26: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/26.jpg)
PrototypingHow looks like?
![Page 27: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/27.jpg)
Prototyping [Balsamiq Mockups]
![Page 28: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/28.jpg)
Prototyping [Initial Look]
![Page 29: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/29.jpg)
Prototyping [Current Look]
![Page 30: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/30.jpg)
<Demo />
![Page 31: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/31.jpg)
How ToThe key concepts of our child
![Page 32: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/32.jpg)
How To [Key Spring RCP Features]• Almost everything are beans• Swing programming without knowing Swing• Command ‘framework’• Form data binding• Based on Eclipse concepts (Perspective, view)• I18n, validation, support classes, icon and image
abstraction…• Out of the box integrations:
– JGoodies– Acegi/Spring Security– Hibernate Validator– …
http://netbeans.dzone.com/news/spring-rcp-tutorial
![Page 33: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/33.jpg)
How To [Bluebell Improvements]1. Easier configuration (CoC)2. Module based approach3. Out of the box scaffolding and new commands4. Non intrusive: prefers ‘extensions’ and ‘aspects’
over ‘patches’ – Enable to migrate from current installations!!
5. Modern look’n feel6. Bug fixes and utility classes7. Testing ‘framework’8. Spring 3 and Maven 39. Integrations10. Multiple deployment models11. Performance improvements
![Page 34: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/34.jpg)
How To [1. Easier Config. - CoC]• Maven artifacts• Main class
org.bluebell.richclient.application.RcpMain
• Separation of concerns (application contexts)– Startup: Defines the splash screen, but could define anything that
you want to have happen specifically at startup
– Richclient: Configures the Spring RCPcomponents and services.
– Command: Provides the application's commands, organized within menu bars and toolbars, and the items within them
• Shared Beans
![Page 35: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/35.jpg)
How To [1. Easier Config. - CoC]
![Page 36: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/36.jpg)
How To [2. Module Based Approach]Your App
![Page 37: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/37.jpg)
How To [2. Module Based Approach]
CoC
Placeholder
• http://forum.springsource.org/showthread.php?101299-Trying-out-a-new-route&p=341019#post341019
![Page 38: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/38.jpg)
How To [2. Module Based Approach]
Resolved Value Parent PPC + Priority Order
![Page 39: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/39.jpg)
How To [2. Module Based Approach]
http://bluebell.googlecode.com/svn/www/bluebell-richclient/xref/org/bluebell/richclient/application/config/BbApplicationConfig.html
![Page 40: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/40.jpg)
How To [3. Scaffolding]
![Page 41: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/41.jpg)
How To [3. Scaffolding]
![Page 42: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/42.jpg)
How To [3. Scaffolding] class form
T:extends Object
AbstractBbChildForm
AbstractMasterFormApplicationWindowAware
T:extends Object
AbstractBbMasterForm
T:extends ObjectU:extends Object
AbstractBbSearchForm
ApplicationWindowAware
T:extends Object
AbstractBbTableMasterForm
ApplicationWindowAware
ApplicationWindowAwareForm
BbConsoleForm
AbstractDetailForm
T
BbDispatcherForm{leaf}
T
BbValidationForm
«interface»GlobalCommandsAccessor
Form
AbstractForm
*
![Page 43: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/43.jpg)
How To [3. Scaffolding]
![Page 44: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/44.jpg)
How To [3. Scaffolding]
Form Builderhttp://www.jgoodies.com/articles/forms.pdf
![Page 45: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/45.jpg)
How To [4. Non Intrusive Approach]
• AOP– org.bluebell.richclient.application.support.ApplicationPageConfigurerAspect– org.bluebell.richclient.application.support.ApplicationWindowAspect
• Newer implementations– org.bluebell.richclient.command.config.BbToolBarCommandButtonConfigurer– org.bluebell.richclient.factory.ComponentFactoryDecorator– org.bluebell.richclient.form.util.BbHibernateRulesValidator– org.bluebell.richclient.components.jideoss.JideOssComponentFactory– org.bluebell.richclient.form.binding.jideoss.JideBindingFactory– org.bluebell.richclient.application.config.substance.SubstanceLookAndFeelConfigurer– org.bluebell.richclient.application.docking.vldocking.substance.SubstanceDockableCo
ntainerFactory– org.bluebell.richclient.components.substance.SubstanceComponentFactory– org.bluebell.richclient.components.swingx.SwingxComponentFactory– org.bluebell.richclient.application.config.vldocking.VLDockingLookAndFeelConfigurer– org.bluebell.richclient.application.docking.vldocking.BbVLDockingApplicationPageFac
tory
• Modularization Approach and so on…
![Page 46: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/46.jpg)
How To [5. Look’n Feel]
![Page 47: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/47.jpg)
How To [5. Look’n Feel]
![Page 48: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/48.jpg)
How To [5. Look’n Feel]
![Page 49: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/49.jpg)
How To [5. Look’n Feel]
![Page 50: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/50.jpg)
How To [6.Bug Fixes and Utilities]
• Bug Fixes– Type Converters– org.bluebell.richclient.form.util.BbDefaultFormModel– org.bluebell.richclient.application.config.substance.SubstanceLookAndFeelConfigurer– org.bluebell.richclient.application.docking.vldocking.substance.SubstanceDockableCo
ntainerFactory– org.bluebell.richclient.application.docking.vldocking.ui.BbDockViewTitleBarUI– org.bluebell.richclient.application.docking.vldocking.ui.BbFocusHighlighter
• Utils– org.bluebell.richclient.application.support.ApplicationUtils– org.bluebell.richclient.command.support.CommandUtils– org.bluebell.richclient.form.builder.support.DirtyTrackingUtils– org.bluebell.richclient.form.FormUtils– org.bluebell.richclient.util.GlazedListsUtils– org.bluebell.richclient.util.ObjectUtils– org.bluebell.richclient.swing.util.SwingUtils– org.bluebell.richclient.table.support.TableUtils– org.bluebell.richclient.application.docking.vldocking.VLDockingUtils
![Page 51: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/51.jpg)
How To [7. Testing] class Testing
AbstractJUnit4SpringContextTests
AbstractBbRichClientTests
AbstractBbSamplesTests
AbstractBbSamplesTests
TestApplicationUtils
TestApplicationWindowAspect
TestApplicationWindowAspectWithinSubstance
TestApplicationWindowAspectWithinVLDocking
TestBbDispatcherForm
TestBbVLDockingApplicationPage
TestDefaultApplicationPageConfigurer
TestMockAbstractBbTableMasterForm
TestMultipleValidationResultsReporter
TestStressOnAbstractBbTableMasterForm
TestTabbedApplicationWindowFactory
TestVLDockingBeanPostProcessor
![Page 52: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/52.jpg)
<Demo />
![Page 53: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/53.jpg)
How To [8. Spring 3 and Maven 3]
![Page 54: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/54.jpg)
How To [9. Integrations]
• Jide OSS Components• SwingX Components• Automatic VLDocking layout with Velocit Engine• Substance Look’n Feel• Coquette Icon Set
![Page 55: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/55.jpg)
How To [10. Deployment]
• Maven Exec Plugin
• JWS (on GAE)• Applet (not tested yet in production envs.)• Even with JUnit!!
![Page 56: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/56.jpg)
How To [10. Deployment]
• http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6533653
• JAR packaging, signing and compress out of the box (Maven + ANT) [Hard work!!]– org.codehaus.mojo.webstart::webstart-maven-plugin– org.codehaus.mojo::keytool-maven-plugin– org.apache.maven.plugins::maven-antrun-plugin– org.codehaus.mojo.webstart::webstart-pack200-anttasks– org.codehaus.mojo.webstart::webstart-jnlp-servlet
![Page 57: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/57.jpg)
How To [10. Deployment]
![Page 58: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/58.jpg)
How To [11. Performance]
• http://docs.oracle.com/javase/1.5.0/docs/guide/deployment/deployment-guide/pack200.html
Pack200 + GZIP
![Page 59: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/59.jpg)
Related Links• http://jirabluebell.b2b2000.com/browse/BLUE• http://saber.b2b2000.com/display/BLUE/Bluebell• http://code.google.com/p/bluebell/• http://bluebell.googlecode.com/svn/www/index.html• http://www.springsource.org/spring-rcp• https://gitorious.org/valkyrie-rcp
![Page 60: Spring IO 2012: The Walking Dead - Desktop Applications with Spring RCP](https://reader030.vdocument.in/reader030/viewer/2022032513/55d17277bb61eb06198b46ed/html5/thumbnails/60.jpg)
Q&A