Spring Roo 1.0.0 Released |
|

We're delighted to announce the general availability (GA) of Spring Roo 1.0.0.
Spring Roo is a next-generation rapid application development tool for Java developers. With Roo you can easily build full Java applications in minutes. It differs from other tools by focusing on:
- Higher Java productivity: Try the ten minute test and see for yourself.
- Stock-standard Java: Roo uses the Java APIs and standards you already know and trust.
- Usable and learnable: Roo features an extremely high level of usability and an advanced shell.
- No engineering trade-offs: Roo has no runtime portion and does not impose any CPU, RAM or disk storage cost.
- Easy Roo removal: Roo can be easily removed from a user project in under five minutes.
This release follows some eight community releases (A1, A2, M1, M2, RC1, RC2, RC3, RC4) and extensive feedback. Before reaching Roo 1.0.0 we already had over 1,000 forum posts and some 500 Jira issues logged. There's already been dozens of conference and JUG presentations on Roo, several third-party add-ons and there's even people already writing a commercial book on Roo.
Spring Roo is thoroughly documented, with around 100 pages of detailed documentation available online and in the download ZIP. You can read a three-part blog series introducing Roo, plus view recently-updated conference presentations (Introduction to Roo and Roo Technical Deep Dive).
You can download this new version of Roo, plus access key links at:
We hope you that enjoy using Roo. The Roo team will be taking a short break to celebrate the New Year, and we look forward to hearing about your Roo experiences and following up with more Roo resources.
Happy New Year!
Similar Posts
- Eric Evans to present @SpringOne!
- Spring Integration 2.0 Milestone 3 Released
- Roo + Cloud Foundry = Productivity in the Cloud
- What's New and Cool in Spring 2.0?
- SpringSource dm Server 2.0.2 is released today.





Sakuraba says:
Added on December 31st, 2009 at 10:19 amWhere is the screencast that is necessary to blow my mind first? Come on, at least get me excited a little bit.
solid says:
Added on December 31st, 2009 at 11:06 amhttp://www.springsource.org/roo
Now ctrl f for "see video"
Right there on the front page.
http://lmgtfy.com/?q=spring roo
Amitava Shee says:
Added on February 8th, 2010 at 10:46 amI am running into issues while trying to create a "New Roo Project" using the wizard.I am using STS (Version: 2.3.0.RELEASE, Build Id: 200912171331) and Roo 1.0.0.RELEASE. It works fine if I use the bundled Roo 1.0.0.RC4. Any help is greatly appreciated. Here's the stack trace
=========================================================
null
Error
Mon Feb 08 10:40:58 EST 2010
Internal Error
java.lang.reflect.InvocationTargetException
at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:121)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: org.eclipse.core.runtime.CoreException: No valid Spring Roo installation configured. The Roo version must be at least 1.0.0.RC3.
at com.springsource.sts.roo.ui.internal.wizard.NewRooProjectWizard$1.execute(NewRooProjectWizard.java:163)
at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118)
… 1 more
Caused by: java.lang.ClassNotFoundException: org.springframework.roo.shell.ExitShellRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at com.springsource.sts.roo.ui.internal.wizard.NewRooProjectWizard$1.execute(NewRooProjectWizard.java:160)
… 4 more
Root exception:
org.eclipse.core.runtime.CoreException: No valid Spring Roo installation configured. The Roo version must be at least 1.0.0.RC3.
at com.springsource.sts.roo.ui.internal.wizard.NewRooProjectWizard$1.execute(NewRooProjectWizard.java:163)
at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.lang.ClassNotFoundException: org.springframework.roo.shell.ExitShellRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at com.springsource.sts.roo.ui.internal.wizard.NewRooProjectWizard$1.execute(NewRooProjectWizard.java:160)
… 4 more
Ben Alex (blog author) says:
Added on February 8th, 2010 at 4:19 pmWould you mind asking for help on the Spring Community Forum at http://forum.springsource.org/forumdisplay.php?f=67? The forum provides a better medium for support queries (attaching files, monospaced fonts, others can contribute, better categorisation of messages etc) and offers a searchable archive of questions and answers for the benefit of others. Thanks.
Boyan says:
Added on April 21st, 2010 at 4:25 pmGreat tool!
The thing which is missing is database reverse engineering, without that roo is quite unuseful. For example, if I had database containing 40 tables, each of them had 10 columns, that makes 400 properties to write in roo script. But I heard this option will be added in version 1.1.
Another thing I don't like are generated jsp(x) pages. Actually, they are ok, but I don't understand why there are create.jspx and update.jspx page. In our project, when we wrote CRUD manually we had one page for both create and update operation. On roo case there are two pages for these operations, so if I had to manually add some code, I had to add it in both create.jspx and update.jspx. I compared these two files, and they are almost the samo.
Can anyone tell me reason for such behavior?
Stefan Schmidt (blog author) says:
Added on April 21st, 2010 at 6:35 pmHi Boyan,
Database reverse engineering is something we are currently working on and you will see the first incarnation of it with the Roo 1.1 release.
We kept the create and update jspx pages separate for two reasons. First, many users actually want to present different pages for the create and update cases. For example, you might not want certain fields to be updatable once they are created (with separate pages you can simply disable these fields in the form). Second, there are a number of technical aspects which are easier to handle and understand if you keep them separate (form submission URLs and types (POST, PUT), hidden params, button labels, etc.
Of course, if you wish to maintain only one form for both you can simply change the view name returned by the updateForm method in your controller to the same name as the createForm. Roo will not get in your way if you wish to do this (just push in the relevant methods into your Java sources).
Also, you might be interested to hear that with the 1.1 release the generated forms are reduced in size by about 85% which will make it a lot easier for you to maintain two forms, even if they are mainly the same. All fields and forms will actually be in reusable JSP tag files and therefore adhere to the DRY principle.
Hope this explains our default choice for the separation of create and update forms.
Stefan Schmidt
Spring Roo Software Engineer
SpringSource, a division of VMware
Boyan says:
Added on April 24th, 2010 at 12:34 pmStefan, thanks for response!
Glad to here that reverse engineering is one of the features in following releases. And the thing about reducing jsp size sounds interesting, can't wait to see that ! (and I'm very curious where roo 1.1 will show up?)
I have one more question regarding application organization. When I have roo based application, and I want to add some business logic into it, where to put that code? For example, if I wanted to do some business calculations before saving a bean into db, where to put that logic?
Applications that we work on are layered organized, we have controller layer, service layer (where we put business logic) and DAO layer (using GenericDAO). Service layer starts transaction, because we usually don't save just one object, we save a lot of them and we sometimes have complex business logic which decides what and how will be saved.
So my questions is: how to deal with this things I mentioned above in roo based apps?
Regards, Boyan
Micheal M says:
Added on May 19th, 2010 at 2:46 amBoyan, interesting question. We also use almost the same architecture.
Any comments?
Neeru says:
Added on July 28th, 2010 at 5:00 amHey Ben…
Will you plz tell me how we create Tabs, Menu Bar & Check boxs all these tools in Spring Roo project. Please reply me as soon as possible.
Thanks in advance
cleaningerthedomesticest says:
Added on December 15th, 2012 at 3:12 amThank you with the wonderful articles on your weblog I'm quite curious in this posting and you also have truly helped myself. We have simply just instructed several of our buddies concerning this upon Facebook and they also enjoy your articles as much as i do.