Making Java Development Fun
                                                                         with Spring Roo




Copyright © 2011 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture.
Antons Kranga
 • Qualification:
    - 10+ years in Java
    - Certified Technology Architect
    - Java and OO Design Trainer

 • Currently works in Accenture Architecture Innovation

 • Specialized:
    - Enterprise Application Design
    - Enterprise Portals

 • Likes:
    - Martial Arts
    - Embedded Devices

 • WEB
    - http://www.linkedin.com/in/antonskranga




Copyright © 2011 Accenture All Rights Reserved.           2
Agenda


1. Problems of Java Development

2. Introduction to the Spring Roo




Copyright © 2011 Accenture All Rights Reserved.   3
Problems of traditional Java Applications
Pre warning message…




Copyright © 2011 Accenture All Rights Reserved.   4
Problem 1: Dam Complex!!!
Even primitive JEE application is complex by it’s nature




Copyright © 2011 Accenture All Rights Reserved.            5
Problem 2: Not DRY at all




Copyright © 2011 Accenture All Rights Reserved.   6
Problem 3: Developers are too conservative




                                                  Should we always
                                                   keep fall into
                                                   traditions and
                                                   close our eyes for
                                                   innovation?




Copyright © 2011 Accenture All Rights Reserved.                         7
Problem 4: Boilerplate code




Copyright © 2011 Accenture All Rights Reserved.   8
Goal of Spring Roo


                                                  Goals of Roo
                                                  •   Make Java Development Fun
                                                  •   Eliminate JEE Complexity
                                                  •   Boost programmers productivity
                                                  •   KISS and DRY

                                                  Methods to achieve goals
                                                  • Use simple but powerful commands
                                                  • Pragmatic code generation
                                                  • Aspect Oriented Programming
                                                  • Use DDD and eliminate DAO
                                                  • Service layer is optional!
                                                  etc




Copyright © 2011 Accenture All Rights Reserved.                                        9
Word of warning!!!



Spring Roo is not a…




Copyright © 2011 Accenture All Rights Reserved.   10
What is a Spring Roo


                                                                Addon

                                                    Addon
                                                                           Addon
                                      controls                 Roo
                                                               Core

                             Developer
                                                      Addon             Addon




                                    changes                        observes and
                                                                   changes




                                                  Spring Application



Copyright © 2011 Accenture All Rights Reserved.                                    11
Basic Spring Roo addons


                                                                    Data

                                                      Persistence

                                                                     Dynamic
                                            Project                   finders
                                             Mgmt

                                                          Roo
                                                          Core
                                                                           Spring
                                        Spring                              MVC
                                        Security


                                                      …          Spring
                                                                  Web         Web
                                                                  Flow
                                         Project
                                   Configuration




Copyright © 2011 Accenture All Rights Reserved.                                     12
Spring Roo Core components




Copyright © 2011 Accenture All Rights Reserved.   13
Roo application development cycle



                                                                                                     Iterative use in
                                                                            Only initial setup       maintenance is
                                                                                                     possible


                                                          Configuration
    Project setup                        Entity design                                    Web Setup
                                                               (e.g.
      (project)                         (entity, field)                                   (controller)
                                                          security setup)




Copyright © 2011 Accenture All Rights Reserved.                                                                   14
Let’s do some coding




Copyright © 2011 Accenture All Rights Reserved.   15
Spring Roo UI concept


                                                  • Model-View-Controller
                                                    (MVC) concept

                                                  • Rich UI controls (free type
                                                    dropdown lists etc)

                                                  • JavaScript used to improve
                                                    user experience



Copyright © 2011 Accenture All Rights Reserved.                                   16
What has been generated during for web

                               uses/controls (via shell)
                                                                                      Domain Model
       Developer                                                                                source
                                                  generate
                                                             Roo Core
        Web
        Application
                                                             generate
                                                                        Spring MVC Controller
                                                                        class CustomerController {
Static templates                                                           ...
                                                                        }
          JSPX tags for controls

          Internationalization (i18n)                                   JSPX View page
                                                                        <div xmlns:jsp=“...”
          Spring JavaScript                                             ...
                                                                        </div>
          JSPX web pages                                         uses


          CSS, Pictures etc



Copyright © 2011 Accenture All Rights Reserved.                                                          17
Page Layout



                        layout.jspx                      base views
                              Header.jspx


                                                                        customer.jspx
                              menu.jspx           View    create.jspx




                                                         update.jspx     product.jspx



                              footer.jspx

                                                            list.jspx
                                                                        loan.jspx




Copyright © 2011 Accenture All Rights Reserved.                                 18
Thank You!



    What I missed?




Copyright © 2011 Accenture All Rights Reserved.   19

LatJUG. Spring Roo

  • 1.
    Making Java DevelopmentFun with Spring Roo Copyright © 2011 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture.
  • 2.
    Antons Kranga •Qualification: - 10+ years in Java - Certified Technology Architect - Java and OO Design Trainer • Currently works in Accenture Architecture Innovation • Specialized: - Enterprise Application Design - Enterprise Portals • Likes: - Martial Arts - Embedded Devices • WEB - http://www.linkedin.com/in/antonskranga Copyright © 2011 Accenture All Rights Reserved. 2
  • 3.
    Agenda 1. Problems ofJava Development 2. Introduction to the Spring Roo Copyright © 2011 Accenture All Rights Reserved. 3
  • 4.
    Problems of traditionalJava Applications Pre warning message… Copyright © 2011 Accenture All Rights Reserved. 4
  • 5.
    Problem 1: DamComplex!!! Even primitive JEE application is complex by it’s nature Copyright © 2011 Accenture All Rights Reserved. 5
  • 6.
    Problem 2: NotDRY at all Copyright © 2011 Accenture All Rights Reserved. 6
  • 7.
    Problem 3: Developersare too conservative Should we always keep fall into traditions and close our eyes for innovation? Copyright © 2011 Accenture All Rights Reserved. 7
  • 8.
    Problem 4: Boilerplatecode Copyright © 2011 Accenture All Rights Reserved. 8
  • 9.
    Goal of SpringRoo Goals of Roo • Make Java Development Fun • Eliminate JEE Complexity • Boost programmers productivity • KISS and DRY Methods to achieve goals • Use simple but powerful commands • Pragmatic code generation • Aspect Oriented Programming • Use DDD and eliminate DAO • Service layer is optional! etc Copyright © 2011 Accenture All Rights Reserved. 9
  • 10.
    Word of warning!!! SpringRoo is not a… Copyright © 2011 Accenture All Rights Reserved. 10
  • 11.
    What is aSpring Roo Addon Addon Addon controls Roo Core Developer Addon Addon changes observes and changes Spring Application Copyright © 2011 Accenture All Rights Reserved. 11
  • 12.
    Basic Spring Rooaddons Data Persistence Dynamic Project finders Mgmt Roo Core Spring Spring MVC Security … Spring Web Web Flow Project Configuration Copyright © 2011 Accenture All Rights Reserved. 12
  • 13.
    Spring Roo Corecomponents Copyright © 2011 Accenture All Rights Reserved. 13
  • 14.
    Roo application developmentcycle Iterative use in Only initial setup maintenance is possible Configuration Project setup Entity design Web Setup (e.g. (project) (entity, field) (controller) security setup) Copyright © 2011 Accenture All Rights Reserved. 14
  • 15.
    Let’s do somecoding Copyright © 2011 Accenture All Rights Reserved. 15
  • 16.
    Spring Roo UIconcept • Model-View-Controller (MVC) concept • Rich UI controls (free type dropdown lists etc) • JavaScript used to improve user experience Copyright © 2011 Accenture All Rights Reserved. 16
  • 17.
    What has beengenerated during for web uses/controls (via shell) Domain Model Developer source generate Roo Core Web Application generate Spring MVC Controller class CustomerController { Static templates ... } JSPX tags for controls Internationalization (i18n) JSPX View page <div xmlns:jsp=“...” Spring JavaScript ... </div> JSPX web pages uses CSS, Pictures etc Copyright © 2011 Accenture All Rights Reserved. 17
  • 18.
    Page Layout layout.jspx base views Header.jspx customer.jspx menu.jspx View create.jspx update.jspx product.jspx footer.jspx list.jspx loan.jspx Copyright © 2011 Accenture All Rights Reserved. 18
  • 19.
    Thank You! What I missed? Copyright © 2011 Accenture All Rights Reserved. 19