Web tier: servlets, JSP, Web frameworks: Which web framework to use
I am going to build a content/website from ground up. For now the view devices will be a web browser and mobile devices. Does anyone have a good recommendation for a webframework ? It should be well constructed for separating the view from logic and preferably well designed for presenting the view for mobile devices. Any ideas ?
Thx and cheers
- Spring Framework by Rami Muurimc on January 04 2006 00:39 EST
- Framework... by HanChul Lim on January 04 2006 01:57 EST
- Which web framework to use by Kit Davies on January 04 2006 06:08 EST
- only one framework separates view from logic by Brian Ross on January 04 2006 11:24 EST
- Which web framework to use by Pawel Zdziechowicz on January 05 2006 20:21 EST
- Do not use any framework by Hannu Ala-Harja on January 13 2006 11:27 EST
- Only diamonds are forever by Brian Ross on January 13 2006 12:30 EST
My recomendation is Spring Framework. It contains the MVC-model of its own + millions of other things... but just the ones that you want to have in your project :)
The Dependency Injection is maybe the best part of the whole framework (especially when you're working with maven).
Struts + Hibernate!
It depends a bit on what your focus is.
If there is a lot of business logic involved (transaction handling, db access, etc) then you can take your pick from Spring, Struts, Tapestry, Webwork, any JSF implementation. These are all solid MVC and allow you to concentrate on the complexity that matters. They each have their own plusses & minuses but once learnt, they are probably about as productive as each other.
If it is more about content handling / publishing and adapting it for different clients, then you may want to look at Apache Cocoon which is more of a publishing framework but does have support for some transactional work as well.
Only one framework truly separates view from logic. That's Tapestry. Struts, Spring MVC, WebWork, JSF, etc. don't do this completely. (true, Wicket does, but I dont know of anybody who actually uses Wicket...its very young).
I would definitely recommend Tapestry for the web part of it.
Behind that, it depends what you need. Spring is probably the best choice for managing your business logic. If you need content management, you might try something like Cocoon, as a previous commenter mentioned, although I've never used it myself.
I would also recommend Tapestry - it is really not that difficult to pick up as is often decribed. Tacos (http://tacos.sourceforge.net) provides support for Ajax.
I am no zealot - JSF is de facto standard (JSR 127), support from Ide's: JDeveloper, Sun Java Studio Creator, Eclipse (Exadel, MyEclipse) - so probably this is the best investment.
Regarding mobile devices, check out Core JavaServer Faces, chapter 11 - as it can be what you're looking for.
Don't know anything about Tapesty and mobiles, but still's my favourite.
Also check this thread: http://www.theserverside.com/discussions/thread.tss?thread_id=34404
Do not use any specific framework I recomend using the tag libraries under the jakarta commons project.
The frameworks are jus tmaking more tiers to you application which is in somecases a good thing, but I think you wanna make a cost effective and a powerful solution.
You need to consider that the outcome of your project needs to live from 5 - 10 years and if you use frameworks like struts, turbo m2, velocity,slide, jstl and so one... - the programmer who updates you project in 9 years at the future needs to skilled with some ancient framework! But I think Java is very still running strong :)If your company has some standard then the case is another - they say that spring framework is good but personally I don't recomend it.
Just remeber to distribute knowledge when it changes there is no need to do the same operatings over an over again if the outcome is the same ! Use heavy caching and publishing.
I sometimes don't understand the point of these frameworks why to implement another programming language? And as a programming language XML sucks badly - it's a markup language not a programming one.
Okay - maybe I've made my point bit too strongly.
My opinnions may sound to be heretic, but still I
wanna say that one need to understand the cost effiency and the the life circle of an application are the most key factors in application programming and one need to consider those factors from different angles.
No matter what technology you choose, it will eventually become obsolete. No matter how great your app is, it will eventually be replaced. There is no point in worrying about if employees 10 years from now will be familiar with the framework you choose.
The main thing is to choose the best tool to do the job. A good framework will result in less tedious coding for your team and less re-inventing of the wheel. This means a higher quality, more maintainable application.
No matter what technology you choose, it will eventually become obsolete. No matter how great your app is, it will eventually be replaced. There is no point in worrying about if employees 10 years from now will be familiar with the framework you choose. The main thing is to choose the best tool to do the job. A good framework will result in less tedious coding for your team and less re-inventing of the wheel. This means a higher quality, more maintainable application.
Frankly, I think if you live long enough the web won't recognizably exist. Look backwards. How many people have a land line today? How many use telegraphs? Semaphores?
As a application desing goal is not very cost effective to think that no matter the costs this system is going to be obsolete anyway.
One can succesfully various systems like for ex. from old C code to perl as crucial part of an modern web application solution. Okay it needs to be design bit diffently, but systems should be used as long as it possible if it is possible.
Let's do everything from point zero again is going to
make the economic directors of your clients mad. When you can do less work and cost effectly use the old systems these economic directors starts to like you and you get more jobs which ultimately means more money !
I don't suggest to reinvent the wheel again, use frameworks if you find them useful - but there are just common libraries like jakarta commons - no need to reinvent the wheel.
Let's do everything from point zero again is going to
make the economic directors of your clients mad.
Right, especially since you've spent so much time rewriting all the infrastructure that you could have gotten for free with a good framework.