24. června 2009

Spring ROO

Poprvé jsem o projektu Roo slyšel na konferenci SpringOne v červnu v roce 2007. Tehdy vlastně jen oznamovali začátek projektu a musím říct, že mě to nijak příliš nezaujalo. Dokonce jsem si na tento projekt vzpomněl minulý rok na podzim a myslel jsem si, že ten projekt již dávno skončil.

A neskončil. Po dvou letech se objevila první verze, oznámení proběhlo na SpringOne v letošním roce.

Obecně mám k různým generátorům negativní přístup, proto mi trvalo chvíli, než jsem si našel čas a podíval se na to, co vlastně Roo nabízí. A byl jsem pozitivně překvapen:

  • Roo shell se zdá být mocný nástroj.

  • Sami autoři také asi nemají nejlepší zkušenosti se "standardními" generátory kódu a již z deklarace hlavních myšlenek projektu je cítit jiný přístup. Tedy snaha o to, aby Roo byl pomocníkem a ne omezovačem. Roo je možné použít pro rychlé nastartování projektu, dokonce je možné zapojit Roo do již existujícího projektu. Nebo naopak kdykoliv Roo opustit. To je díky tomu, že Roo vlastně negeneruje přímo Java zdrojový kód, ale využívá AOP pro generování do zkompilovaného class souboru.

  • Vygenerovaný kód je postavený na jiných Springových projektech (Spring framework, Spring security), a proto mi nedělá žádný problém se orientovat v těchto souborech a případně je upravovat, doplňovat. Jediné co je navíc, jsou specifické @Roo anotace pro generování výsledného kódu resp. zkompilovaného kódu. Zde se intenzivně používá AspectJ inter-type declarations.

  • Líbí se mi, jak lidé ve Springu se stále drží svých ideologických představ o správném vývoji aplikací, což je vidět i zde. Kromě produkčního kódu se generují unit testy, dokonce s napojením na Selenium.

  • Samotný projekt Roo je napsán hodně flexibilně - kromě základních služeb Roo obsahuje rozšíření (tzn. add-ons), které právě dodávají Roo všechny ty možnosti generování. Takže teď je např. rozšíření pro Maven nebo Hibernate, ale do budoucna může být pro ANT nebo TopLink. Navíc je tu možnost vývoje vlastních rozšíření.


Někde jsem četl názor o tom, proč má Spring dva nástroje na generování kódu - nyní nově Roo a dříve získané Grails. Oba nástroje znám jen velmi povrchně, takže je nemohu moc porovnat. Snad jen, že Grails vyžadují Groovy oproti Roo. Určitě jsou nástroje z výsledného přínosu hodně podobné, ale Roo míří svými možnostmi o dost dále. Kromě toho byl projekt Roo spuštěn dávno před tím, než bylo jasné, že SpringSource získá G2One a tedy Grails. Navíc se domnívám, že hlavním důvodem akvizice nebyly Grails, ale jazyk Groovy. Co bude dále nevím, ale vypadá to, že oba dva projekty pojedou stále dále bez nějakého omezení.

Projekt je nyní ve verzi 1.0.0.M2 a v brzké době bude uvolnění verze 1.0. Hlavním představitelem projektu je Ben Alex, který je mimo jiné hlavním autorem Spring security. Tedy aspoň pro mě záruka kvality.


Odkazy pro více informací:

2 komentáře:

jinxx řekl(a)...

Diky za shrnuti, osobne v tomto projektu vidim velkou budoucnost. Uvidime kam se posune...

300zatacek řekl(a)...

Díky za zajímavý tip.

Nevěděl jsem o tomto projektu a po krátkém začtení se do dokumentace to vypadá jako zajímavá věc, vyzkouším...