1 Spring Roo and the Cloud Shekhar Gulati
Feb 02, 2016
1
Spring Roo and the Cloud
Shekhar Gulati
2
Hi, my name is...Shekhar Gulati
• Work for Xebia India
• Spring enthusiast (these days )
• Blogger and Writer(JavaLobby and Developer.com)
• Twitter : shekhargulati
3
Agenda
• Introducing Roo
• Demo for Unbelievers
• Under the Hood
• Capability areas (lots of demo)
• Cloud Support
• Removing Roo
• Conclusion and Q&A
4
Spring’s Mission
#J2EE or JavaEE should be easier to use
5
Mission Accomplished !
Now What?
6
Spring Roo
Development Tool
7
Spring Roo Mission
Roo's mission is to
fundamentally and sustainably
improve Java developer
productivity without
compromising engineering
integrity or flexibility
8
What is Roo?
• Rapid Development Tool for Spring
• Development time only• No Runtime
• No Negative Performance Impact
• No Memory Overhead
• No Roo Deployment
• Uses Best of Breed• Spring 3, Spring Security, Spring MVC / Web Flow
• Junit, Log4J, Maven, AspectJ, Eclipse
9
Why should we use Roo?
• Easy Configuration
• Great Learning Tool
• Spring Best Practices
• Restful Web Services, JPA persistence, Security, Integration tests, Selenium test cases, JMS
• Standards
• Bean validation, Dependency Injection
• Powerful Features
• GWT, SOLR, DBRE, NoSQL, Spring Integration (coming soon)
10
Demo for Unbelievers
Demo # 1 – A Simple Web Application
11
Features Covered
• Project management
• Persistence
• Entity support
• Field Management
• JUnit testing
• Spring MVC Controllers, Selenium testing
• Logging
12
Under the Hood
• Implementation Overview
• Code Generation
13
Implementation Overview
14
Code Generation Approach
• Passive Generation
• Active Generation
• Roo is a Hybrid code generation
15
Active Generation
16
Demo # 2 Let’s Secure the app
17
Demo # 3 Speaker should get an Email
18
Demo # 4 Application speak Dutch
19
Demo # 5 How social is your app?
20
Demo # 6 Have an Existing Database
21
Cloud Support
22
# Demo 7 – Moving to Cloud
• Changes to make
• persistence setup (Google App Engine)
• gwt set up
• add aspects for key generation
• Remove constraints (unique)
• do mvn gwt:compile gae:deploy
23
Issues on Google App Engine
• Spring MVC app does not work
• Relationships do not work
• Integration tests do not work (ROO-1711)
• Constraints do not work
• Enum does not work
24
Removing Roo from app
• Use AJDT's "push-in refactoring" feature
• This moves the Roo .aj content into normal .java files
• Remove @Roo* annotations from .java files
• Regular expression (\n.*Roo.*\n) find/replace in eclipse
• Remove Roo's annotation JAR from your POM
• dependency remove command
25
Features Not Covered
• JMS support
• JSON support
• SOLR support (Search)
• Spring Web Flow
• Add-on creation
26
Future Sneak Peak
• Spring Integration support
• Better Google App Engine support
• More view technologies support
• NoSQL support
• Ne04j
27
Resources & Links
• Home http://www.springsource.org/roo/
• Forum http://forum.springsource.org
• Issues http://jira.springframework.org/browse/ROO
• Twitter @SpringRoo
• Twitter #roo hash key
• https://github.com/shekhargulati/spring-roo-playground
28
Conclusion and Q & A
• Roo delivers serious productivity gains for Java
• Popular, mature libraries you already know
• Easy to learn and use
• No runtime, no lock-in, no risk
• ITDs separate clearly generated from non-generated code
• Questions?