SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Building Software
using
Rich Clients Platforms
Rikard Thulin
Speakers Profile
Senior Consultant & Java Evangelist
Co-leader for Gothenburg's Java User
Group, Javaforum
rikard (at) thulin.pp.se
Agenda
• The needs of an advanced rich client
• Why we need Application Architecture
• Available Rich Client Frameworks
• Demo
• Real world experience
• Conclusions
• Q & A
Local vs Web application
Local app
(RCP based)
Web app
Deployment Automatic updates, clients can
have difference versons
Clients are always updated
and in sync
UI
Components
Very rich and mature
Fancy but not mature,
usability is low
Performance
Very high, latency problems can
be reduced
Slow
Time to
develop
Depends on skill set Depends on skill set
Market Small The whole world
The needs
• Time-to-market
• Focus on business logic
• Usability
• Flexible deployment and distribution
• Solve the application architecture problem
Time-to-market
• Requires initial investment
• Hurts TTM in short term
• Huge decrease in mid to long term
• RCP might not be the best choice for
simple applications
Focus on business logic
What the heck is this?
Focus on business logic
What the heck is this?
Focus on business logic
What the heck is this?
Focus on business logic
What the heck is this?
Focus on business logic
• Today - no one needs to write their own
web framework
• Today - no one needs to not write their
own Rich Client application framework
• Instead of doing lots (ant lots) of UI
infrastructure - do real business value
Focus on business logic
• Most applications need some kind of
infrastructure to handle things such as
• actions, menus, keyboard shortcuts,
window management, state, etc
• Swing/SWT does not address this - at the
end of the day they are just widget libraries
Focus on business logic
• The RCP allows you to focus on the
business - not the UI infrastructure
• True also for web applications as well
(no one writes plain JSP)
Usability
• Application level usability comes for free
• Man years of usability out-of-the box
• The RCP helps you with lower level
usability as well
• Lower level usability is pretty much up to
you to get right
Usability
• To demonstrate usability
• First an RCP based dialog will be presented
• Second a non RCP based dialog will be
presented
• Try to figure out the five usability things
addressed by the RCP version
Usability
Dialog implemented using an RCP
Usability
The same dialog implemented without an RCP
Usability
Did you find five
usability issues addressed
by the RCP?
Usability
RCP Non RCP
Side by side comparison
Usability
Usability
Default button
Usability
Default button
Escape closes the dialog
Usability
Default button
Build in support for help
Escape closes the dialog
Usability
Default button
Build in support for help
Escape closes the dialog
Correct spacing
Usability
Default button
Build in support for help
Escape closes the dialog
Correct spacing
Correct size
Application architecture
• An application is divided into modules/
plugins/bundles
• Plugins declares their dependencies
• Plugins publish API:s and hide internal code
• Plugins are loosely coupled
• Plugins execute in a runtime container
• A modular system does not prevent bad
coding practices
• But it encourages good coding practices
• Bad code is isolated to one modules and
not spread across the whole application
Application architecture
• The UI infrastructure to build applications
• Higher level components such as
• Wizards, User Settings, Data Access
framework
• Windowing System
• And much more...
Application architecture
Flexible deployment
and distribution
• Big releases can be deployed as usual
• Parts of the application (a plugin) can be
updated and distributed individually
• New features can be released in between
big releases
• Much more agile approach to releasing
software
Available Frameworks
• Swing Application Framework (JSR-296)
• Spring Rich Client
• JGoodies Swing Suite
• Eclipse RCP
• Netbeans RCP
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Available Frameworks
Less
Better
Features
Learning Curve
Maturity
Community
Eclipse RCP
• OSGi based container (Equinox)
• Manage dependencies and lifecycle
• Explicitly supports dynamic scenarios
• Highly adopted standard
• OSGi Bundle is the unit of modularization
Eclipse RCP
• Based on SWT, native look-and-feel
• Swing component can be embedded
• Requires Eclipse IDE to build (*)
• It is possible to run two or more versions
of the same module in one application
Netbeans RCP
• Proprietary runtime based on
Java Extension Mechanism
• Manage dependencies and lifecycle
• NetBeans module is the unit of
modularization
• Soon to support OSGi bundles
Netbeans RCP
• Built using Ant or Maven, no IDE lockin (*)
• Java Webstart deployment out of the box
• It is possible to run two or more versions
of the same module in one application
• Based on Swing
But Swing is slow...
The performance of Swing is
(for years) not an issue!
“the only problem with Swing is that
there are a limited number of higher-
level abstractions available that assist in
making the toolkit simpler and easier
to use” - The Spring Rich Client Team
Licensing
• Eclipse RCP
• Eclipse Public License (EPL)
• Netbeans RCP
• Common Development and
Distribution License (CDDL)
• GPLv2 with Classpath Exception
DEMO
• Creating a Netbeans RCP based
“Hello World” application using Maven
• No dependency to NetBeans IDE
• Start with a empty directory
• Not pre-cooked in any way (*)
DEMO(this page if for reference purpose only)
• mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes
-DarchetypeArtifactId=netbeans-platform-app-archetype
-DarchetypeVersion=1.2 -DarchetypeRepository=http://
repo1.maven.org/maven2 archetype:generate
• cd <directory>
• mvn install
• cd application
• mvn nbm:run-platform
Real world experience using
Netbeans RCP
• Requires initial investment
• Great community, books, tutorials
• Modularity is complex
• Unit Testing without the runtime
• The usual suspects will haunt you
• Java Help, Java WebStart, Maven
Real world experience using
Netbeans RCP
• We estimated the cost not to use an RCP
to $30K
• The UI quality would have been significant
less
Conclusion
• For small applications the initial investment
could be to high
• What is most important for you?
• Can you reuse plugins from the
community
• SWT or Swing
• OSGi or not
• Build using Eclipse or Maven / Ant
Conclusion
There is no need to
reinvent the wheel
by writing UI
infrastructure code
Conclusion
- or -
Whatever you choose, it
is much, much better than
what you could achieve
yourself
Q & A

Contenu connexe

Tendances

Liferay portals in real projects
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projectsIBACZ
 
Silverlight difference faqs-1
Silverlight  difference faqs-1Silverlight  difference faqs-1
Silverlight difference faqs-1Umar Ali
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)Stephen Chin
 
Embedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse applicationEmbedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse applicationBoris Bokowski
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012CMC Limited
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
 
Beyond The Buzz: Pluggable JavaFX Corporate Applications
Beyond The Buzz: Pluggable JavaFX Corporate ApplicationsBeyond The Buzz: Pluggable JavaFX Corporate Applications
Beyond The Buzz: Pluggable JavaFX Corporate ApplicationsJAX London
 
Microservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro FrontendsMicroservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro Frontendsandrejusb
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Gergely Kis
 
Introduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay PortalIntroduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay Portalrivetlogic
 
Cross Platform Mobile Application Development
Cross Platform Mobile Application DevelopmentCross Platform Mobile Application Development
Cross Platform Mobile Application DevelopmentSenchu Thomas
 
10 top web development frameworks (new version 21 11)
10 top web development frameworks (new version 21 11)10 top web development frameworks (new version 21 11)
10 top web development frameworks (new version 21 11)Mandar Majmudar
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETVijay Nair
 
Features of java unit 1
Features of java unit 1Features of java unit 1
Features of java unit 1RubaNagarajan
 
Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewEugene Bogaart
 

Tendances (19)

Liferay portals in real projects
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projects
 
Silverlight difference faqs-1
Silverlight  difference faqs-1Silverlight  difference faqs-1
Silverlight difference faqs-1
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)
 
Embedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse applicationEmbedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse application
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012
 
JavaFx
JavaFxJavaFx
JavaFx
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Beyond The Buzz: Pluggable JavaFX Corporate Applications
Beyond The Buzz: Pluggable JavaFX Corporate ApplicationsBeyond The Buzz: Pluggable JavaFX Corporate Applications
Beyond The Buzz: Pluggable JavaFX Corporate Applications
 
Microservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro FrontendsMicroservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro Frontends
 
Best PHP Frameworks
Best PHP FrameworksBest PHP Frameworks
Best PHP Frameworks
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 
Spring
SpringSpring
Spring
 
Liferay
LiferayLiferay
Liferay
 
Introduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay PortalIntroduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay Portal
 
Cross Platform Mobile Application Development
Cross Platform Mobile Application DevelopmentCross Platform Mobile Application Development
Cross Platform Mobile Application Development
 
10 top web development frameworks (new version 21 11)
10 top web development frameworks (new version 21 11)10 top web development frameworks (new version 21 11)
10 top web development frameworks (new version 21 11)
 
Micro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JETMicro Front Ends for Micro Services using Oracle JET
Micro Front Ends for Micro Services using Oracle JET
 
Features of java unit 1
Features of java unit 1Features of java unit 1
Features of java unit 1
 
Java Enterprise Edition 6 Overview
Java Enterprise Edition 6 OverviewJava Enterprise Edition 6 Overview
Java Enterprise Edition 6 Overview
 

Similaire à Building software using Rich Clients Platforms Rikard Thulin

Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Adam Mokan
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Sean McCullough
 
DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and MicroserviceInho Kang
 
Overcoming software development challenges by using an integrated software fr...
Overcoming software development challenges by using an integrated software fr...Overcoming software development challenges by using an integrated software fr...
Overcoming software development challenges by using an integrated software fr...Design World
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...DevOps.com
 
Mobile App Development: Off the-Shelf vs Platform
Mobile App Development: Off the-Shelf vs PlatformMobile App Development: Off the-Shelf vs Platform
Mobile App Development: Off the-Shelf vs PlatformDipesh Mukerji
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsBrad Williams
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017Chris Kernaghan
 
#ATAGTR2020 Presentation - Universal Test Automation Framework
#ATAGTR2020 Presentation - Universal Test Automation Framework#ATAGTR2020 Presentation - Universal Test Automation Framework
#ATAGTR2020 Presentation - Universal Test Automation FrameworkAgile Testing Alliance
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaSCloudBees
 
Cross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureCross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureDerrick Bowen
 
Advanced Web Technology.pptx
Advanced Web Technology.pptxAdvanced Web Technology.pptx
Advanced Web Technology.pptxssuser35fdf2
 
Chapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesChapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesIt Academy
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceCloudBees
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science PlatformDecision Science Community
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 

Similaire à Building software using Rich Clients Platforms Rikard Thulin (20)

Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014Transitioning Groupon to Node.js - EmpireJS 2014
Transitioning Groupon to Node.js - EmpireJS 2014
 
DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and Microservice
 
Overcoming software development challenges by using an integrated software fr...
Overcoming software development challenges by using an integrated software fr...Overcoming software development challenges by using an integrated software fr...
Overcoming software development challenges by using an integrated software fr...
 
spring
springspring
spring
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
 
Mobile App Development: Off the-Shelf vs Platform
Mobile App Development: Off the-Shelf vs PlatformMobile App Development: Off the-Shelf vs Platform
Mobile App Development: Off the-Shelf vs Platform
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017
 
#ATAGTR2020 Presentation - Universal Test Automation Framework
#ATAGTR2020 Presentation - Universal Test Automation Framework#ATAGTR2020 Presentation - Universal Test Automation Framework
#ATAGTR2020 Presentation - Universal Test Automation Framework
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
Getting Started with PaaS
Getting Started with PaaSGetting Started with PaaS
Getting Started with PaaS
 
Cross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureCross Platform Mobile Application Architecture
Cross Platform Mobile Application Architecture
 
Advanced Web Technology.pptx
Advanced Web Technology.pptxAdvanced Web Technology.pptx
Advanced Web Technology.pptx
 
Chapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side TechnologiesChapter 11:Understanding Client-Side Technologies
Chapter 11:Understanding Client-Side Technologies
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-Service
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Java Spring
Java SpringJava Spring
Java Spring
 

Plus de Rikard Thulin

What a Back-end Java Developer Doesn't Know About the Modern Web Stack-final
What a Back-end Java Developer Doesn't Know About the Modern Web Stack-finalWhat a Back-end Java Developer Doesn't Know About the Modern Web Stack-final
What a Back-end Java Developer Doesn't Know About the Modern Web Stack-finalRikard Thulin
 
Jigsaw - Javaforum 2015Q4
Jigsaw - Javaforum 2015Q4Jigsaw - Javaforum 2015Q4
Jigsaw - Javaforum 2015Q4Rikard Thulin
 

Plus de Rikard Thulin (6)

Vi-är-Squeed-1.1
Vi-är-Squeed-1.1Vi-är-Squeed-1.1
Vi-är-Squeed-1.1
 
What a Back-end Java Developer Doesn't Know About the Modern Web Stack-final
What a Back-end Java Developer Doesn't Know About the Modern Web Stack-finalWhat a Back-end Java Developer Doesn't Know About the Modern Web Stack-final
What a Back-end Java Developer Doesn't Know About the Modern Web Stack-final
 
javazone 2014
javazone 2014javazone 2014
javazone 2014
 
Post - JavaOne 2014
Post - JavaOne 2014Post - JavaOne 2014
Post - JavaOne 2014
 
Javaone 2014
Javaone 2014Javaone 2014
Javaone 2014
 
Jigsaw - Javaforum 2015Q4
Jigsaw - Javaforum 2015Q4Jigsaw - Javaforum 2015Q4
Jigsaw - Javaforum 2015Q4
 

Building software using Rich Clients Platforms Rikard Thulin