more productivitiy with spring roo

35
Produk’ve Entwicklung mit Spring Roo Eberhard Wolff SpringSource – A division of VMware

Upload: eberhard-wolff

Post on 12-Jul-2015

1.885 views

Category:

Technology


1 download

TRANSCRIPT

Produk've  Entwicklung  mit  Spring  Roo  

Eberhard Wolff SpringSource – A division of VMware

About  Eberhard  Wolff  •  Principal  Technologist  •  Consultant  &  Trainer  •  Author  (e.g.  first  German  Spring  book)  

•  [email protected]  •  TwiGer:  @ewolff  •  Blog:  hGp://ewolff.com  •  hGp://slideshare.net/ewolff  

Spring's  Mission  

#1  :  J2EE  should  be  easier  to  use  

Mission  Accomplished!  

How  can  we  make  live  even  easier?  

We  need  to  improve  in  other  areas.  

Build  

Raise  the  level  of  abstrac'on  

We  mostly  create  domain  models  +  logic  working  on  it  

Development  tool  

Roo  

"Roo's mission is to fundamentally and sustainably

improve Java developer productivity without

compromising engineering integrity or flexibility"

Roo's  Mission  Statement  

"Roo is a little genie who sits in the background and handles the

things I don't want to worry about"

End  User  

"Roo is a like a text adventures of the 80ies – it even gives you

hints!"

Demo  Time!    

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  

Not  shown  •  Database  reverse  engineering  •  JSON  •  GWT  support  •  SOLR  support  (search)  •  Spring  Web  Flow  support  •  SELENIUM  web  tests  •  Google  App  Engine  Support  

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  

Roo Infrastructure

Implementa'on  Overview  

User's Project

.aj .xml .jsp .properties

Roo Add-Ons Roo

Add-Ons Roo Add-Ons @Roo

Annotations provide

source only retention

.java

monitor and change

Roo Add-Ons

STS

Shell

AspectJ ITDs

Ac've  Genera'on  

Person_Roo_ ToString.aj

toString():String

Person.java

name:String

write

Person_Roo_ JavaBean.aj

getName():String

setName(String):void

read Roo Add-Ons Roo

Add-Ons Roo Add-Ons Roo

Add-Ons

Person.class

name:String toString():String

getName():String setName(String):void

AspectJ Compiler

read read

write Compilation unit separation with automated round-trips

Add  ons  •  May  add  commands  •  May  add  ITDs  or  other  files  

•  Can  be  ac'vated  if  changes  occur  •  Metadata  events  send  out  

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  

springsource.org/roo  

Full  visibility  in  the  performance  for  each  Request  

Spring  Beans,  Transac'ons,  

SQL,  HTTP  …  

2  Steps  

#1  Deploy  applica'on  on  tc  Server  developer  edi'on  

#2  Go  to  localhost:8080/insight  

Demo  Time!  hGp://www.youtube.com/    watch?v=P_EskssNDU8  

How  it  fits  in  our  strategy  

A  division  of  VMware  

Lightweight  App  Run'me  

Virtual  App  Environment  

Hybrid  Cloud  

Spring  tc  Server  

VM  

Spring  tc  Server  

Lightweight  App  Framework  

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  

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!