This is about serious sites…
I can say today in java world JSF2 is the best solution for your web application. People who think “What did you say? JSF is the best?”, does not know JSF anymore and do not understand web application frontend problems and solutions.
Usually people need some site for example some public view for one singer. So starting with php well start.
They write a some view connect with database, after integrate jquery and write enormous java script validation codes direct in the pages,include a lot of external libraries and all perfect. Also part of code developed as php functions, part of as php classes…
Ah after one week you need calendar, slider or datatable? Where are a lot of not standard with well known bugs java script libraries, just include and affect on page load performance.:)
Good, your frontend and backend not separated, business logic with frontend code.
A lot of values stored in the session… and hackers also very much like this kind of web projects…
Ah .. also they start optimization – optimization started from 2008 and not finished yet…
More advanced developers used CMS-es like wordpress, drupal and others.
Good solution. Singer site developed with enormous not useful code, usually with php errors…
You can integrate a lot of plugins and you know every hacker also like it, and every plugin potential bugs world.. Do not worry, good php developer will fix it during one year:))
You can say “But why? a lot of sites I know in php, for example facebook..””,Yeah you are right, well site, but how is it cost? 8 billion dollars? Also facebook not in php, whey spent billions of dollars for having normal site and also backend is not in php:))).
PHP is good solution, but you must keep development standards, MVC. Classes or functions?
Because you can develop good site with terrific code without any architecture. I know 99 of 100 php sites
very difficult to support and extend. Whey also not a bug free.
About java frameworks…
What we have today?
GWT – great, you can many good feedback, but if you start real development you will have following problems –
a/you will lost your frontend, bug fixing too hard,
b/ GWT code like desktop/swing codes, every button you must define in the java class, this is old style
c/ no MVC, no rapid development
d/ in real life only small project you can done with it, but if you have 5 years go!!!
Wicket – also all code in java classes, buttons, ajax…old style, code is too much, wicket have web components statefull/stateless and if you put one statefull component in the page, all page became statefull, pages will be mounted… web page must be like java class-with the same name/why? i do not know/.
groovy/grails – nice framework with a lot of bugs and serious performance problems, if you think develop with grails, better to choose php codeignater.groovy itself java scritping language, not bad, but with grails you will have serious problems.
I know companies who change JSF to grails and after 3 years whey fail the project and now try to go back.
what about JSF 2?
Why is it better?
a/JSF java web standard, included in java 6 ee, have standard api and support
b/ JSF component controll and have a lot of components with primefaces, richfaces, icefaces, openfaces and more…. and it is important, because you need not integrate java script libraries
And if you notice every framework tr try to clone JSF – be component control, because nowdays you have not time every day develop slider or wizard.
c/JSF provide rich interface
d/JSF controlls-beans too powerfull with its scopes
e/JSF solve layout problem
f/friendly urls no problem
e/you can extend easy, composite components
JSF itself can be frontend and backend, with managed beans you can develop powerfull backend.
HTML5, jquery integration, GMap!!!
Validators and converters have not alternatives.
A lot of utils.
The best Navigation!!!
Also JSF provide the best “web page + java” implementation and separated web forms from java code. JSF conception much more rational than others.
At the moment if you want change JSF version you will only change JSF jar, but for example if you want change GWT or Wicket version you will crash your web application and will refactor a lot of code.
High performance if you know JSF, if you do not know – JSF will eat you:), You need just follow official documentation and understand the web and include needed JSF libraries.
I see in java world one similar framework, it is Spring MVC.
My experience based about in 50 success projects and platforms.