I have the pleasure of introducing another training course: Practical Roo! Huge discount to whoever guesses what the course is about. Actually no, there’s no discount, but I’d be happy to send my personal well done note.
Now, to the course itself. It is a two-day course, you will need some Java experience, it will help if you have done some Spring and AspectJ coding, but it is not strictly necessary. The modules we are covering are:
Introduction
- What is Roo, what does it solve and why do we need it?
- Roo is a code generator
- The generated code follows contemporary Java/Spring style
- It is easy to modify / add to the generated code
- Roo can re-synchronise with the modified code
- It is easy to remove Roo
- What Roo isn’t?
- Not a multi-module, general purpose tool
- Not a one-way code generator
[10:00]
Hello, World
- Show Hello, World Roo application (generate & run)
- Go through the commands we issue (project, persistence, entity, controller)
- Explore the generated source code (the directories, Maven dependencies)
- Building Roo applications
- The apps don’t build using javac? WTF?
[10:40]
Spring Framework Primer
- What is Spring?
- What does it solve?
- Its main components
[12:30]
Food!
AOP Primer
- Why do we need AOP when we have OOP?
- Cross-cutting concerns
- Pointcuts, Advices, JoinPoints and Aspects
- Dynamic weaving (proxies, subclasses)
- Static weaving (load and compile-time)
[14:30]
Architecting Hello, World
- Roo is not just one-way generator
- It is very difficult to separate out custom code from the generated one
- Roo splits the generated code from the custom code
- It uses IDT aspects to simulate .NET’s partial classes
- Roo can re-examine our code and keep its model of the application up to date
- Domain objects have persistence methods (just like RoR and Grails)
- Domain objects are the core of the application
- Controllers use the domain (and the persistence) to manipulate the data
- Maven maintains the dependencies and configures the build process (ajc)
[16:00]
Extending Hello, World
- Add a service
- Add a handler method to the controller
- Use & see DI
[17:00]
Sweet, sweet sleep
More AOP
- AspectJ syntax
- Mixins
- Compile-time static weaving using the ajc compiler
[10:00]
Exploring different fields
- See strings, integers, booleans, dates & friends
- Declarative validation, custom validation rules
[11:30]
Associations
- Have a Blog and Post relationship
- Explore the details of different associations (many-to-one, many-to-many)
[13:00]
Food!
Exploring the web tier
- Improve the standard data scaffolding
- Structure of the generated pages, tiles
- Explore the style sheets, JavaScript and AJAX
- Roo and REST
[14:30]
Roo and the team
- What if you have more people working on the same Roo application
- How to share the Roo code, how to keep the generated code and the Roo sources synchronized
- Automated builds and tests
[16:00]
Q&A
- Interesting goodies for exceptional attendees
- Questions
- Pet projects
[17:00]


