SlideShare a Scribd company logo
Best practices for structuring
  large GWT applications
     Heiko Braun <hbraun@redhat.com>
About me

•   Heiko Braun
•   Senior Software Engineer JBoss / Red Hat
•   4 years JBoss, 12 years industry
•   Focus on SOA, BPM, GWT
•   Contributor:
    JBossWS, jBPM, Riftsaw, Errai, SAM, Savarra
Topics


•   GWT in 5 minutes
•   Decomposing a large GWT application
•   Introducing Project Errai
What is GWT?
Write AJAX in the Java language
Google Web Toolkit
•   SDK: API, Compiler, Hosted Mode Browser

•   Write AJAX apps in the Java language, then compile to
    optimized JavaScript

•   Edit Java code, then view changes immediately without
    re-compiling

•   Step through live AJAX code with your Java debugger

•   Compile and deploy optimized, cross-browser
    JavaScript
GWT Features
•   Communicate with your server through really simple RPC

•   Reuse UI components across projects

•   Use other JavaScript libraries and native JavaScript code

•   Localize applications

•   Choice of development tools

•   Test your code with JUnit

•   Open Source
Decomposing large
GWT applications
Example: BPM console
Challenge #1:Feature Set

       •   Different features per:
           •   Target runtime
           •   Development stage
           •   Project lifecycle
           •   Target audience
Solution #1:
         Workspace plugins
•   Determined at compile time
•   Based on Maven dependency sets
•   Using Deferred Binding
    •   Create and select a specific implementation
        of a class
    •   Either using Replacement or Generators
Solution #1:
                                 Workspace plugins
(1) ‘mvn -Dconsole.profile=drools install’


                                                 (2) Properties file or annotations




                                            (3) Deferred Binding Generator
Limitation #1:
        Component interplay
•   Each plugin component isolated
•   No interplay possible
    •   It would introduce dependencies
•   Grouping by functionality vs. usability
    •   Conceptual split not necessarily technical
        split
Challenge #2:
      Interplay w/o dependencies
       •     Model-View-Controller ?

            •       Less coupled, but still dependency

            •       Compile-time


(1) Model changed
                                        (2) Update View
Solution #2: Pub/Sub
       •      Messaging through publish / subscribe

       •      Messaging API only shared dependency

       •      Notion of “presence”



(1) Publish messages




                                                 (2) Subscribe Listener
Limitation #2: Pub/Sub

•   Decoupling through de-typed nature
    •   No compile-time checking
•   Exchange protocol (contract) not “visible”
    •   Choreography validation?
Challenge #3:
Server side capabilities
•   Backend capabilities may change as well

    •   Staging vs. production

    •   Different product versions

    •   Target runtime derivations

•   Remember:
    Compile-time linking
    AJAX is pure client side technology
Solution #3: Bootstrap
                  •      Bootstrap: “Give me a list of capabilities”

                       •      Usually RPC call when app starts

                       •      Problem: Fixed initialization point

                             •      Lazy Components?

(1) Client UI starts, request server status
                                                               (2) PluginInfo (type, available)
Solution #3: Messaging w. Presence

             •      Presence: “Need a plumber. Please call XYZ”

                  •      Relies on messaging bus behind the scenes

                  •      Async, independent, durable

(1) Client: Seek capability



                                                        (2) Provider: Offer capability
Introducing Project Errai
Project Errai
•   Consolidates JBoss GWT efforts
•   Both R&D and actual product development
    •   Work in progress
•   Best of breed spin-off as OSS
    •   Errai-Bus, Errai-Workspace, Errai,Widgets
•   http://jboss.org/errai
Errai-Bus
•   Backbone to application
    design

•   Common architecture
    across client&server

•   Enables federated
    architecture

•   Asynchronous messaging
    (pub/sub)

•   Conversational

•   Both GWT and Javascript
    API (OpenHub Spec)
Errai-Bus API:
 Common to client & server
(1) Client: Publish                              (2) Server: Subscribe




•     NOTE: Don’t confuse pub/sub roles with tiers

•     Scenarios:

     •     client-client across server (chat server)

     •     client-client w/o server (inter component)

     •     client-server (client send)

     •     server-client (server push)
Errai-Workspaces
•   UI environment for which to deploy your console

•   Develop against a common workspace API

•   Provides generic services

    •   Authentication & Authorization

    •   Logging & Exception handling

    •   Presence (aka Shoutbox)

    •   [...] (add your implementation here)
Workspaces API
        •     Evolution of the property based config

        •     Uses Deferred Binding as well


(1) Annotation driven                                 (2) Automatic workspace assembly
Errai Widgets
• Complements OSS offering (i.e. Mosaic)
Putting it all together
•   Baseline and best
    practices

•   Free composition of
    console components

•   Different projects
    provide management
    tools

•   Mix and match with
    3rd party elements
Demo Applications
Q&A
Ad

More Related Content

What's hot (19)

1 java introduction
1 java introduction1 java introduction
1 java introduction
abdullah al mahamud rosi
 
Drupal 8 - Quick bites
Drupal 8 - Quick  bitesDrupal 8 - Quick  bites
Drupal 8 - Quick bites
Brahampal Singh
 
Jenkins
JenkinsJenkins
Jenkins
penetration Tester
 
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel ZikmundDotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
Karel Zikmund
 
Transforming your COBOL UI - COBOL Developer Day
Transforming your COBOL UI - COBOL Developer DayTransforming your COBOL UI - COBOL Developer Day
Transforming your COBOL UI - COBOL Developer Day
Micro Focus
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Víctor Leonel Orozco López
 
Flex introduction
Flex introductionFlex introduction
Flex introduction
iamprajyot
 
Gluecon 2018 JaC
Gluecon 2018 JaCGluecon 2018 JaC
Gluecon 2018 JaC
Brian Mericle
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
Hùng Nguyễn Huy
 
Zend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migrationZend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migration
Clark Everetts
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
shalom938
 
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor EditionAd102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
ddrschiw
 
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation WikisAD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
ddrschiw
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
Tarun Vashisth
 
Zend con what-i-learned-about-mobile-first
Zend con what-i-learned-about-mobile-firstZend con what-i-learned-about-mobile-first
Zend con what-i-learned-about-mobile-first
Clark Everetts
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpages
ddrschiw
 
ONAP on Vagrant
ONAP on VagrantONAP on Vagrant
ONAP on Vagrant
Victor Morales
 
Sunshine php practical-zf1-zf2-migration
Sunshine php practical-zf1-zf2-migrationSunshine php practical-zf1-zf2-migration
Sunshine php practical-zf1-zf2-migration
Clark Everetts
 
Part 3 JasForge the collaborative and agile project v1.0
Part 3   JasForge the collaborative and agile project v1.0Part 3   JasForge the collaborative and agile project v1.0
Part 3 JasForge the collaborative and agile project v1.0
Jasmine Conseil
 
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel ZikmundDotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
DotNext 2017 in Moscow - Challenges of Managing CoreFX repo -- Karel Zikmund
Karel Zikmund
 
Transforming your COBOL UI - COBOL Developer Day
Transforming your COBOL UI - COBOL Developer DayTransforming your COBOL UI - COBOL Developer Day
Transforming your COBOL UI - COBOL Developer Day
Micro Focus
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Víctor Leonel Orozco López
 
Flex introduction
Flex introductionFlex introduction
Flex introduction
iamprajyot
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
Hùng Nguyễn Huy
 
Zend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migrationZend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migration
Clark Everetts
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
shalom938
 
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor EditionAd102 - Extreme Makeover -- LotusScript and Java Editor Edition
Ad102 - Extreme Makeover -- LotusScript and Java Editor Edition
ddrschiw
 
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation WikisAD112 -- Development and Deployment of Lotus Product Documentation Wikis
AD112 -- Development and Deployment of Lotus Product Documentation Wikis
ddrschiw
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
Tarun Vashisth
 
Zend con what-i-learned-about-mobile-first
Zend con what-i-learned-about-mobile-firstZend con what-i-learned-about-mobile-first
Zend con what-i-learned-about-mobile-first
Clark Everetts
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpages
ddrschiw
 
Sunshine php practical-zf1-zf2-migration
Sunshine php practical-zf1-zf2-migrationSunshine php practical-zf1-zf2-migration
Sunshine php practical-zf1-zf2-migration
Clark Everetts
 
Part 3 JasForge the collaborative and agile project v1.0
Part 3   JasForge the collaborative and agile project v1.0Part 3   JasForge the collaborative and agile project v1.0
Part 3 JasForge the collaborative and agile project v1.0
Jasmine Conseil
 

Viewers also liked (6)

Creating Inspiration
Creating InspirationCreating Inspiration
Creating Inspiration
Camiel
 
DudeOps - Why The Big Lebowski is About Building a Cloud
DudeOps - Why The Big Lebowski is About Building a CloudDudeOps - Why The Big Lebowski is About Building a Cloud
DudeOps - Why The Big Lebowski is About Building a Cloud
Michael Ducy
 
making_good_soa_great
making_good_soa_greatmaking_good_soa_great
making_good_soa_great
WSO2
 
Cassandra 2012
Cassandra 2012Cassandra 2012
Cassandra 2012
beobal
 
Open Source In Further Education
Open Source In Further EducationOpen Source In Further Education
Open Source In Further Education
Ross Gardler
 
Creating Inspiration
Creating InspirationCreating Inspiration
Creating Inspiration
Camiel
 
DudeOps - Why The Big Lebowski is About Building a Cloud
DudeOps - Why The Big Lebowski is About Building a CloudDudeOps - Why The Big Lebowski is About Building a Cloud
DudeOps - Why The Big Lebowski is About Building a Cloud
Michael Ducy
 
making_good_soa_great
making_good_soa_greatmaking_good_soa_great
making_good_soa_great
WSO2
 
Cassandra 2012
Cassandra 2012Cassandra 2012
Cassandra 2012
beobal
 
Open Source In Further Education
Open Source In Further EducationOpen Source In Further Education
Open Source In Further Education
Ross Gardler
 
Ad

Similar to GWT Jug Stuttgart (20)

Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Phil Leggetter
 
A Tail of Two Containers: How docker made ci great again
A Tail of Two Containers: How docker made ci great againA Tail of Two Containers: How docker made ci great again
A Tail of Two Containers: How docker made ci great again
Kyle Rames
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
Andrew Ferrier
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
Laura Frank Tacho
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
Jean Vanderdonckt
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
Oracle Developers
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Distributed objects & components of corba
Distributed objects & components of corbaDistributed objects & components of corba
Distributed objects & components of corba
Mayuresh Wadekar
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
Software Guru
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
Domingo Suarez Torres
 
Infinum android talks_10_android_libraries_used_on_daily_basis
Infinum android talks_10_android_libraries_used_on_daily_basisInfinum android talks_10_android_libraries_used_on_daily_basis
Infinum android talks_10_android_libraries_used_on_daily_basis
Infinum
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
Docker, Inc.
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
daveymni
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Andrea Tosato
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
Jan Jongboom
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
Camuel Gilyadov
 
Building gRPC services
Building gRPC servicesBuilding gRPC services
Building gRPC services
Robert Robinson
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project 
Elad Hirsch
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Phil Leggetter
 
A Tail of Two Containers: How docker made ci great again
A Tail of Two Containers: How docker made ci great againA Tail of Two Containers: How docker made ci great again
A Tail of Two Containers: How docker made ci great again
Kyle Rames
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
Andrew Ferrier
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
Laura Frank Tacho
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
Jean Vanderdonckt
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
Oracle Developers
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Distributed objects & components of corba
Distributed objects & components of corbaDistributed objects & components of corba
Distributed objects & components of corba
Mayuresh Wadekar
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
Software Guru
 
Infinum android talks_10_android_libraries_used_on_daily_basis
Infinum android talks_10_android_libraries_used_on_daily_basisInfinum android talks_10_android_libraries_used_on_daily_basis
Infinum android talks_10_android_libraries_used_on_daily_basis
Infinum
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
Docker, Inc.
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
daveymni
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Andrea Tosato
 
The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012The Architect Way - JSCamp.asia 2012
The Architect Way - JSCamp.asia 2012
Jan Jongboom
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project 
Elad Hirsch
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
Ad

More from hbraun (8)

AS7 Console 2013
AS7 Console 2013AS7 Console 2013
AS7 Console 2013
hbraun
 
One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011
hbraun
 
Gwt cdi jud_con_berlin
Gwt cdi jud_con_berlinGwt cdi jud_con_berlin
Gwt cdi jud_con_berlin
hbraun
 
Gwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraunGwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraun
hbraun
 
Errai Workspaces
Errai WorkspacesErrai Workspaces
Errai Workspaces
hbraun
 
Errai CDI Integration
Errai CDI IntegrationErrai CDI Integration
Errai CDI Integration
hbraun
 
Errai Workspaces
Errai WorkspacesErrai Workspaces
Errai Workspaces
hbraun
 
Jbpm4 Deployer
Jbpm4 DeployerJbpm4 Deployer
Jbpm4 Deployer
hbraun
 
AS7 Console 2013
AS7 Console 2013AS7 Console 2013
AS7 Console 2013
hbraun
 
One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011
hbraun
 
Gwt cdi jud_con_berlin
Gwt cdi jud_con_berlinGwt cdi jud_con_berlin
Gwt cdi jud_con_berlin
hbraun
 
Gwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraunGwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraun
hbraun
 
Errai Workspaces
Errai WorkspacesErrai Workspaces
Errai Workspaces
hbraun
 
Errai CDI Integration
Errai CDI IntegrationErrai CDI Integration
Errai CDI Integration
hbraun
 
Errai Workspaces
Errai WorkspacesErrai Workspaces
Errai Workspaces
hbraun
 
Jbpm4 Deployer
Jbpm4 DeployerJbpm4 Deployer
Jbpm4 Deployer
hbraun
 

Recently uploaded (20)

Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 

GWT Jug Stuttgart

  • 1. Best practices for structuring large GWT applications Heiko Braun <[email protected]>
  • 2. About me • Heiko Braun • Senior Software Engineer JBoss / Red Hat • 4 years JBoss, 12 years industry • Focus on SOA, BPM, GWT • Contributor: JBossWS, jBPM, Riftsaw, Errai, SAM, Savarra
  • 3. Topics • GWT in 5 minutes • Decomposing a large GWT application • Introducing Project Errai
  • 5. Write AJAX in the Java language
  • 6. Google Web Toolkit • SDK: API, Compiler, Hosted Mode Browser • Write AJAX apps in the Java language, then compile to optimized JavaScript • Edit Java code, then view changes immediately without re-compiling • Step through live AJAX code with your Java debugger • Compile and deploy optimized, cross-browser JavaScript
  • 7. GWT Features • Communicate with your server through really simple RPC • Reuse UI components across projects • Use other JavaScript libraries and native JavaScript code • Localize applications • Choice of development tools • Test your code with JUnit • Open Source
  • 10. Challenge #1:Feature Set • Different features per: • Target runtime • Development stage • Project lifecycle • Target audience
  • 11. Solution #1: Workspace plugins • Determined at compile time • Based on Maven dependency sets • Using Deferred Binding • Create and select a specific implementation of a class • Either using Replacement or Generators
  • 12. Solution #1: Workspace plugins (1) ‘mvn -Dconsole.profile=drools install’ (2) Properties file or annotations (3) Deferred Binding Generator
  • 13. Limitation #1: Component interplay • Each plugin component isolated • No interplay possible • It would introduce dependencies • Grouping by functionality vs. usability • Conceptual split not necessarily technical split
  • 14. Challenge #2: Interplay w/o dependencies • Model-View-Controller ? • Less coupled, but still dependency • Compile-time (1) Model changed (2) Update View
  • 15. Solution #2: Pub/Sub • Messaging through publish / subscribe • Messaging API only shared dependency • Notion of “presence” (1) Publish messages (2) Subscribe Listener
  • 16. Limitation #2: Pub/Sub • Decoupling through de-typed nature • No compile-time checking • Exchange protocol (contract) not “visible” • Choreography validation?
  • 17. Challenge #3: Server side capabilities • Backend capabilities may change as well • Staging vs. production • Different product versions • Target runtime derivations • Remember: Compile-time linking AJAX is pure client side technology
  • 18. Solution #3: Bootstrap • Bootstrap: “Give me a list of capabilities” • Usually RPC call when app starts • Problem: Fixed initialization point • Lazy Components? (1) Client UI starts, request server status (2) PluginInfo (type, available)
  • 19. Solution #3: Messaging w. Presence • Presence: “Need a plumber. Please call XYZ” • Relies on messaging bus behind the scenes • Async, independent, durable (1) Client: Seek capability (2) Provider: Offer capability
  • 21. Project Errai • Consolidates JBoss GWT efforts • Both R&D and actual product development • Work in progress • Best of breed spin-off as OSS • Errai-Bus, Errai-Workspace, Errai,Widgets • http://jboss.org/errai
  • 22. Errai-Bus • Backbone to application design • Common architecture across client&server • Enables federated architecture • Asynchronous messaging (pub/sub) • Conversational • Both GWT and Javascript API (OpenHub Spec)
  • 23. Errai-Bus API: Common to client & server (1) Client: Publish (2) Server: Subscribe • NOTE: Don’t confuse pub/sub roles with tiers • Scenarios: • client-client across server (chat server) • client-client w/o server (inter component) • client-server (client send) • server-client (server push)
  • 24. Errai-Workspaces • UI environment for which to deploy your console • Develop against a common workspace API • Provides generic services • Authentication & Authorization • Logging & Exception handling • Presence (aka Shoutbox) • [...] (add your implementation here)
  • 25. Workspaces API • Evolution of the property based config • Uses Deferred Binding as well (1) Annotation driven (2) Automatic workspace assembly
  • 26. Errai Widgets • Complements OSS offering (i.e. Mosaic)
  • 27. Putting it all together • Baseline and best practices • Free composition of console components • Different projects provide management tools • Mix and match with 3rd party elements
  • 29. Q&A