The management started this project with Hibernate and AJAX but then JSF seemed to have a lesser learning curve. Then they got a look into Groovy we have to learn that. Ruby is still on their minds and now we have REST.
Will it be a good idea to mix all these technologies?
One should take a pragmatic approach when choosing technologies - use what makes sense for the project and the team. Most of the tools you mention do not compete with one another, and so they might well coexist (Groovy vs. Ruby being the exception). I think it's always useful to evaluate tools and find out if there are maybe better ways of doing things. It's good for your resume, too :-)
There's few pieces of software that you can implement in a feasible time span without using more than one "technology". For starters, you probably wouldn't want to implement your own web server to host your web application. Within that web application, you wouldn't want to use the ugly JDBC API for all data access and you wouldn't want to implement your own abstraction layer on top so you pick up Hibernate. You also realize that you're creating a lot of boilerplate with JSP pages so you look into another view technology, say, JSF. At some point you realize that a particular area in your code base could be made much more readable and understandable if we'd have another language than Java, which forces us to create unnecessary constructs so you introduce Groovy.
To me this all makes sense regarding having multiple technologies in the mix. (Personally, I wouldn't have picked JSF but rather Wicket, for example, but that's besides the point.)
Originally posted by Lasse Koskela: ... To me this all makes sense regarding having multiple technologies in the mix.
But would this mix not make code maintenance a bit difficult.
Originally posted by Ulf Dittmer: ... It's good for your resume, too :-)
I guess that makes it worth for all the effort.
Joined: Mar 22, 2005
Originally posted by Reehan Lalkhan: But would this mix not make code maintenance a bit difficult.
You need to maintain the code no matter which technology you use. You can choose not to use an ORM tool like Hibernate - then you have to maintain JDBC code instead. Similarly, you can choose not to use a web framework like JSF - then you have to maintain servlet/JSP code instead.
There is of course the factor that I hinted at with "what makes sense for the project and the team". If the team knows nothing (or little) about a particular tool/technology, then that's a point against it. But the evaluation may show that it makes sense for the team to learn about it, because it promises great benefits.