A while ago, I tried Spring Roo — without much success. One of the main obstacles was the fact that most of the dependencies come from a special, internal repository and not from Maven Central. Which is odd. It’s OSS after all, so why do I need a special repository? Is it too much work for the Roo people to push their changes to Maven Central?
Whatever. A few days ago, Spring Roo 1.1 was released. I downloaded it and followed the tutorial.
Everything worked fine (good work, guys!) until I tried to run the tests. Again, I had to fight with Nexus to fix all the missing dependencies. Seems like the problem with the dependencies is still there. Bug #ROO-1111 just improved the situation by listing the necessary repositories so you don’t have to figure them out yourself. But if you’re behind a corporate Maven proxy, you’re still doomed.
Okay. All dependencies are there and … 9 generated tests work. What worries me are two things:
- Compiling a project with a single class and field takes two minutes.
- This simple project needs 976KB sources.
I know this is all generated code but in the end, I will still have to wade through all this to get to the place where I have to make my changes. I prefer frameworks which take the ten lines from the tutorial and put them into a script where I can run them again and again. Generated code is not an issue as long as I don’t see it. Take Grails: It will add everything that you omit in the background. It’s still too slow for my liking but at least the source isn’t bloated with stuff that I don’t care about just yet.
Conclusion: Not quite there, yet.
[…] [Update November, 5th] I tried Roo 1.1. See this blog post. […]
We have so distinct views about Spring Roo that I would like to, if you allow me bring few points about it:
I have evidence that you can build enterprise Java Web Development with Roo a least since 1.1.0.M1. Please visit my showcases website at http://www.pragmatikroo.org/showcases. I hope after visit it you would have a different view about Roo.
Of course is not perfect but please tell me what piece of software is. Not to mention that Roo is still young and has a way to go.
Frankly to evaluate Roo based on “compiling a class whatever takes 2 min”. It is so superficial that really shows lack of serious analysis in this case.
Your other point about requiring a lot of stuff. Again give an piece of enterprise software that not requires a huge pile of code to work.
Finally the great advantage of Roo over Grails -if you are coming from the Java camp- is that you don’t have to learn a new programming language for doing the same things. Roo is Java after all.
Roo is ready for the developers with the right expectations about it.
My expectations are:
a) fast turnaround. I’m not waiting two minutes after every change that I make to the source.
b) there should be a reasonable balance between features and code size. If the tool generates 1MB of code for a single class with a single field, that balance is not there for me.
So for me, Roo just causes different problems rather than solving more problems that any other web framework.
Currently, I’m comparing all web frameworks against Turbogears. With a test case as simple as above, compilation in TG takes less than a second and that includes restarting the server.
I’m not saying Roo should strive for the same number but it should be better than, say, Tomcat with a hand-written JSP.
1) I believe a technician should check on you box. The behavior -2 mins issue- that you are reporting is totally atypical. I might be something wrong with your computer.
2) I don’t know Turbogears. I am sure is great. But if I were doing kind-of superficial analysis I just google “Turbogears issues” and would find that there is very long list of them. Are they disqualifiers. I don’t think so. It just tell me the it is like another piece of software out there.
3) You don’t like Grails because is slow. You should say how is Turbogears -which is a Python framework- vs Grails and Java performance too. Not just narrow down on how many bytes is the generated code.
It seems that you move to compering Python vs Java. That is really-really hard, tricky and nonproductive. I truly believe both programming languages are great.
I just would let the market speak. The market that I know is US IT market. On Dice today there 2308 Pyhon jobs posted and there are 15035 jobs of Java. What these numbers are telling us is that “there market for everybody” in this proportions ofcourse.
Finally, Roo won’t be better than “Tomcat with a hand-written JSP” ever. Why because this is exactly what it is. However if a company uses Spring Roo instead of hand writing them it would save a least $4000.00 USD per developer a week of cost.
Hey don’t forget to vist my Spring Roo showcases website at http://www.pragmatikroo.org/showcases, I can’t wait to read your comments on them.
How to I put this? Java on the server … well …
It takes too long to deploy, turnaround times are way to big, it takes ten lines of code to do even the most simple things.
It’s not really Roo’s fault; I just feel that Roo is too much evolution and too little revolution. It’s the tenth web framework that I tried and I’m sure you have great showcases but the way it works, it just wastes too much of my time. Especially my free time.
Example: It took me an hours to build an FAQ page for my web site with Turbogears. DB design, loading test data, HTML design, CSS, wiki markup with Markdown. Most of that was to figure out how to include the Markdown parser (it’s not a pre-installed module for TG). The whole process felt like I was in control.
With Roo, I run commands with the nice console interface but I never felt in control. I was waiting and waiting and reading huge wads of log messages from Hibernate. It’s nice that it tells me that it’s mapping some model class right now. Can I see the SQL please? No?
Over the years, I grew too impatient for most software, I guess. Roo did a great effort to select the best of breed and wrap them with a useful interface (console, no UI wizard! I like it) that helps to get some work done. Only, it still builds on the rotten rocks of javax.servlet.
Today, I can have a 2TB harddisk, but no SQL database that organizes itself. I can have a 8-core CPU but compiling Java projects still takes a measurable amount of time. In Python that happens at class loading time, so to speak. Too hard for Java?
When Turbogears creates a project, you get a lot of files, too, but most of them are either examples or 1-2 lines of code with a huge amount of comments that explain what else you can do. It freaks me out that no one managed to come close to this on the Java VM.
You spent a lot of time and effort on Roo and that’s cool. For me, Roo just adds to my frustration with how we have to develop software today. So good luck for you, I’ll wait for something that solves my issues 🙂
Wow, you might be right… What would be Turbogears web sites in production that you admire and think are cool?. I want to visit them.
Please send me the link(s).
Question for you: what you think is faster/better-performance for enterprise, Python or Java?.
As for web sites, I don’t care as long as they do what I need. But you can find an old list at SitesUsingTurboGears
As for performance: That depends on your enterprise. How much is readable code worth? How much is it worth that a normal developer can find and fix bugs quickly? How much is it worth that the language is alive, that new features are added at a constant rate, that the features are always added with the developer in mind? How much is it worth that the developer is happy?
Of course, you can do anything in Java and in Python. But the same is true for SQL. It’s turing complete. You could write web servers in it on, say, Oracle with a little help of a couple of Java classes to handle the connections. But I doubt any normal person would try. Java was good 10 years ago, it’s time to start looking for something better or we’ll feel the same pains for another 10 years.
Thank you for the list… I’ll visit ’em for sure.
As you, I just can offer my personal view of things based on my experience.
I can tell you that by using Java in web development I matched or exceeded my customers expectations pretty much all the time.
By using Java on many of my assignments I’ve had very low number of bugs or issues in my applications.
I had contracts without bugs or issues, absolutely nada, zero bugs or issues. All the way from probe-of-concept to production. Java ecosystem deserves most the credit on it.
Since I am consultant at one point I have to turn all my source code to the Java resident experts of the business I am working with.
I have no problem communicating my Java source code to others so they can maintain it.
In my opinion Java ecosystem has been able to adapt and move together with the IT market since its inception. Java delivers thats for sure.
What Roo brings to the table is the fact that address very well the issue of project setup.
Java rocks/Roo rocks
B. & K. Roogards
Note: I almost forgot to mention: Thanks to Java, I never missed a deadline, so far. I am knocking wood as I write it.
Impressive. How does it feel to be the only developer on the whole planet who never missed a deadline? 😉
Thanks to Java, I’m wasting many hours every month writing boiler plate code, wading through endless amount of code that accomplishes only simple things and fighting with design patterns – that is, workarounds for shortcomings of the underlying language.
If I hadn’t know Python, I would believe that’s the best we can do. Thanks to Python, I’ve seen how much better my life can be.
And yes, I’m making a comfortable living as a senior Java developer. With almost 50K on stackoverflow.com, I often know what I’m talking about.
So I can’t agree with you. Java could be much better and so could be Roo. Only not in this world.
I am not unique at all…
My friends Alan Lo and Jaime Mondragon, they pretty much never missed a deadline too. I am sure there are many other out there too.
Not to mention that is the reason we are got paid for.
If you jazz with Java you get times more that referred number. You know what I mean.
Hmm. what an interesting debate. Python is definitely easier from my own experience and Java is more painful. Yet to try the spring roo stuff though but i can tell from reviews “I should give it a few more years”. Not ready to relieve my experience with JEE6 Pains.