28
1 Spring Roo and the Cloud Shekhar Gulati

Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

Embed Size (px)

DESCRIPTION

Session Presented at 5th IndicThreads.com Conference On Java held on 10-11 December 2010 in Pune, India WEB: http://J10.IndicThreads.com ------------ Spring Roo is the rapid development tool for Java. With Roo a full fledged application(maven,Spring, JPA) can be created in minutes. Roo has a low learning curve and is easy to use. Roo does not have any runtime dependency and it can be removed from your application code base in minutes. With current milestone releases, you can also build applications which can be deployed in the cloud(Google App Engine).We will talk in depth about Spring Roo capabilities and which all capabilities are support on Google App Engine. In this tutorial, we’ll look more closely at Roo and how it integrates with Cloud platforms like Google App Engine. We will also develop a small web application using Spring Roo and then will deploy on Google App Engine. Takeaways for the Audience Audience will see the capabilities of spring roo and how they can develop applications which are deployable on cloud (Google App Engine).

Citation preview

Page 1: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

1

Spring Roo and the Cloud

Shekhar Gulati

Page 2: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

2

Hi, my name is...Shekhar Gulati

• Work for Xebia India

• Spring enthusiast (these days )

• Blogger and Writer(JavaLobby and Developer.com)

[email protected]

• Twitter : shekhargulati

Page 3: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

3

Agenda

• Introducing Roo

• Demo for Unbelievers

• Under the Hood

• Capability areas (lots of demo)

• Cloud Support

• Removing Roo

• Conclusion and Q&A

Page 4: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

4

Spring’s Mission

#J2EE or JavaEE should be easier to use

Page 5: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

5

Mission Accomplished !

Now What?

Page 6: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

6

Spring Roo

Development Tool

Page 7: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

7

Spring Roo Mission

Roo's mission is to

fundamentally and sustainably

improve Java developer

productivity without

compromising engineering

integrity or flexibility

Page 8: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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

Page 9: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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)

Page 10: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

10

Demo for Unbelievers

Demo # 1 – A Simple Web Application

Page 11: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

11

Features Covered

• Project management

• Persistence

• Entity support

• Field Management

• JUnit testing

• Spring MVC Controllers, Selenium testing

• Logging

Page 12: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

12

Under the Hood

• Implementation Overview

• Code Generation

Page 13: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

13

Implementation Overview

Page 14: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

14

Code Generation Approach

• Passive Generation

• Active Generation

• Roo is a Hybrid code generation

Page 15: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

15

Active Generation

Page 16: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

16

Demo # 2 Let’s Secure the app

Page 17: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

17

Demo # 3 Speaker should get an Email

Page 18: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

18

Demo # 4 Application speak Dutch

Page 19: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

19

Demo # 5 How social is your app?

Page 20: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

20

Demo # 6 Have an Existing Database

Page 21: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

21

Cloud Support

Page 22: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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

Page 23: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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

Page 24: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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

Page 25: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

25

Features Not Covered

• JMS support

• JSON support

• SOLR support (Search)

• Spring Web Flow

• Add-on creation

Page 26: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

26

Future Sneak Peak

• Spring Integration support

• Better Google App Engine support

• More view technologies support

• NoSQL support

• Ne04j

Page 27: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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

Page 28: Spring Roo and the Cloud (Tutorial) [5th IndicThreads.com Conference On Java, Pune, India]

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?