This document discusses Spring Roo, an open source tool that aims to improve Java developer productivity without compromising flexibility. It provides an overview of Roo's mission and capabilities for rapidly generating applications using conventions. Roo uses AspectJ to actively generate code based on annotations and allows customization through add-ons. The document demonstrates Roo's features and explains how applications can later remove their dependency on Roo through refactoring.
13. "Roo's mission is to
fundamentally and sustainably
improve Java developer
productivity without
compromising engineering
integrity or flexibility"
Roo's
Mission
Statement
14. "Roo is a little genie who sits in
the background and handles the
things I don't want to worry
about"
End
User
15. "Roo is a like a text adventures
of the 80ies – it even gives you
hints!"
17. You
saw…
• Domain
objects
• Finder
• MVC
support
• Web
applica'on
customiza'on
• Embedding
TwiGer/Google
Docs
etc.
• I18n
• Security
• You
can
add
your
own
code
18. Not
shown
• Database
reverse
engineering
• JSON
• GWT
support
• SOLR
support
(search)
• Spring
Web
Flow
support
• SELENIUM
web
tests
• Google
App
Engine
Support
19. Roo
Benefits
• Proven
language,
tooling,
libraries
…
• No
run'me
overhead
• Can
be
removed
from
project
(Inter
type
declara'on
push
in)
• Can
also
be
used
from
the
shell
(with
vi
or
Emacs)
• Extensions
possible
22. Add
ons
• May
add
commands
• May
add
ITDs
or
other
files
• Can
be
ac'vated
if
changes
occur
• Metadata
events
send
out
23. Removing
Roo
in
Three
Steps
1 Use
AJDT's
“push-‐in
refactoring”
feature
– This
moves
the
Roo
.aj
content
into
normal
.java
files
2 Remove
Roo's
annota'on
JAR
from
your
POM
– You
can
use
Roo's
“dependency
remove”
command
3 Remove
@Roo*
annota'ons
from
.java
files
– Use
a
regular
exp
find/replace
in
Eclipse
for
speed
• You
can
s'll
use
Roo
on
the
project
again
– Its
“hands
off
by
default”
will
ensure
it's
problem-‐free
33. A
division
of
VMware
Lightweight
App
Run'me
Virtual
App
Environment
Hybrid
Cloud
Spring
tc
Server
VM
Spring
tc
Server
Lightweight
App
Framework
34. Conclusion
• Roo
is
based
on
established
technologies
• Spring,
AspectJ,
JPA…
• ITDs
separate
clearly
generated
from
non-‐
generated
code
• Tackles
build,
development
tool
etc
• Flexible
architecture:
You
can
add
your
own
add
ons
• And:
Spring
Insight
can
be
used
for
performance
op'miza'on
of
Spring
Apps
35. The
Approach
Revisited
• You
do
the
domain
model
–
Roo
does
the
rest
• Opinionated:
Sensible
defaults
• No
lock
in
– Source
level
annota'ons
– Push
In
refactoring
can
be
used
to
eliminate
Roo
• You
have
nothing
to
loose
–
much
to
gain!