SQL Zone is brought to you in partnership with:

I am Siva, a passionate java developer, open source enthusiast, blogger. I like to cover Java, Struts, Spring, Hibernate, Ajax Tutorials, How-To's and Best Practices. Sivaprasadreddy is a DZone MVB and is not an employee of DZone and has posted 34 posts at DZone. You can read more from them at their website. View Full User Profile

Struts, Spring, Hibernate... What next?

01.10.2011
| 11572 views |
  • submit to reddit

I have started my career in 2006 as a Java Developer. Since then most of the time I was involved in developing web applications using Servlets, JSP, Struts, IBatis and Hibernate. In late 2008 I started working with Spring and now I am a big fan of Spring.

I am very interested in learning new technologies/frameworks, so I started playing with several things like Quartz, JMS, JSF,JasperReports, DWR, XStream API, JPA, JavaMail, DisplayTag, JUnit, Ant, ApachePOI, JExcel blah blah blah. I am very much bored of doing the same things over and over using Struts, Spring, Hibernate etc.

Apart from job market perspective there could be many people(like me) learning new languages/frameworks/tools out of interest or for fun, or to pass the time. I am a regular visitor to JavaLobby and I am seeing lot of new things coming in Java technology everyday.

So I thought of learning something new and I listed down what are all the new things that are there in the Java world.

1. RIA frameworks (EXTJS, DOJO, YUI, Flex)
2. PHP, RubyOnRails, Groovy/GRAILS
3. Social networking APIs like SpringSocial

RIA Frameworks

It seems to me that we have enough well established server-side technologies(Spring, EJB3 etc...) to develop middleware components. Now the majority of new applications are being developed/enhanced to add AJAX flavour to give a rich look. And there are plenty of Ajax frameworks.

I choose EXTJS, DOJO, YUI frameworks based on their popularity. I have prior experience with ExtJS and ExtJS is unbeatable AJAX library for developing web applications with Rich UI widgets. The ExtJS grid is awesome. And you can find almost every kind of UI widget in ExtJS. But I don't know why majority of the people are using other Ajax libraries instead of ExtJS.

I recently took a look at Dojo and it is really good at some points. Dojo's validations embedded within markup looks great for people like who don't like putting validations somewhere else in Javascript file. But I didn't find any information about Grid supprt with Pagination, Sorting, Filtering. For me(many others also) a grid control with pagination, sorting and filtering a minimum expected widget to be in an Ajax library.

I am working currently using YUI in my project. The YUI features are good but look and feel-wise its very poor compared to ExtJS and Dojo.

I had a chance to play with Flex sometime back in 2009 and its simply superb. But Flex should be used for flashy kind of applications, otherwise it will be a overusage (eg if Flex is used for simple CRUD kind of applications).

Secondary Programming Language

My primary programming is Java and I want to learn a new programming language now which should be cool and suitable for rapid application development. Can somebody suggest what would be better to learn among PHP, ROR, GROOVY/Grails from the percpective of Job market and ease of use to develop small to medium sized web applications.

Social Networking

Recently I am seeing that many websites are providing interfaces to interact with Social Networking sites like Twitter, Facebook, Linkedin etc. SpringSocial might be a good one to learn this time.

After Struts, Spring, Hibernate era, I think the future would be Rich Application Development with Social Networking site interactions.
What do you say?

From http://sivalabs.blogspot.com/2011/01/struts-spring-hibernate-what-next.html

Published at DZone with permission of Sivaprasadreddy Katamreddy, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Michal Xorty replied on Mon, 2011/01/10 - 4:34am

I agree about importance of doing RIA stuff. Recently, I tried Google Web Toolkit and I was amazed. I never really liked plugin-needed environments (Flash, Silverlight) nor did I like writing tons of JavaScript by hand. So GWT was clear choice for me and I recommend at least looking at it. (Main idea is write java, compile to javascript).

Fabien Bergeret replied on Mon, 2011/01/10 - 5:11am

RIA looks like a tendency of the market.

I've worked with Ext GWT (<a href='http://www.sencha.com/products/gwt/'>http://www.sencha.com/products/gwt/</a>), which is rather interesting, and I've had a look at Vaadin( <a href='http://vaadin.com/home'>http://vaadin.com/home</a>), which seems incredibly simple.

I've tried JSF2, but I got quickly confused by the lack of documentation.

My 2 cents ...

Sivaprasadreddy... replied on Mon, 2011/01/10 - 6:33am in response to: Michal Xorty

Hi Michal,

I forgot to mention about GWT. I think for a struts developer it might take time to understand beauty behind the component oriented development. But earlier ihad taste of GWT with a very very simple Hello World kind of application. I was able to run the sample in DEV mode, but i am a bit confused about DEV mode, PRODUCTION mode of GWT.

Can you please give me some links where in i can find information on how to create a web application with gwt and make it a WAR file and can deploy it on Tomcat.

Sivaprasadreddy... replied on Mon, 2011/01/10 - 6:44am in response to: Fabien Bergeret

Hi Fabien,

I am really very much impressed with the ExtJS framework look and feel and its huge UI widget library.

But I dont know why the usage of ExtJS is lower than Dojo or YUI (http://www.indeed.com/jobtrends?q=ExtJS%2C+Dojo%2C+YUI&l=).

I hope the combo of GWT and ExtJS(ExtGWT) would be really great. I haven't looked at  Vaadin yet. I will take a look at it.

Coming to JSF, I had a painful experience with JSF(2). It took one whole day for me to resolve jar version issues and configuration issues to just setup a simple project with JSF2+RichFaces 3.3.3.

 

Michal Xorty replied on Mon, 2011/01/10 - 6:48am

sivaprasadreddy, Google actually provides at code.google.com bunch of useful stuff about GWT! It's best place where to start. I recommend starting with official tutorial here: http://code.google.com/webtoolkit/doc/latest/tutorial/gettingstarted.html
If you are using eclipse IDE and you will instal google plugin, you will have automatically created production ready folder. Than you'll just copy it into tomcat web apps and that's it. You can also find more info at code.google.com. I also recommend GWT designer which Google freed as plugin for Eclipse IDE.

Sivaprasadreddy... replied on Mon, 2011/01/10 - 6:52am in response to: Michal Xorty

Hi Michal,

I haven't tried GWT Designer yet. I will definitely take a look at it.

Jamie Mckinney replied on Mon, 2011/01/10 - 8:04am

The reason ExtJS usage is lower than Dojo/YUI/jQuery/etc is probably down to the license.  Unlike the other libraries/frameworks which have apache/bsd style licenses and can therefore be used freely for both open source and commercial development (without having to opensource your code), ExtJS is GPLV3.  They do offer the option of a commercial license which starts at US$895 for 1 developer.

On top of that, the license situation with ExtJS has had a rocky past.  If you type into google: "extjs license" the first suggestion by google is "extjs license fiasco".

I agree with you though, ExtJS is the best framework of its type.  It just goes to show how much of an impact licensing makes to the adoption rate of excellent software.

Lance Semmens replied on Mon, 2011/01/10 - 9:38am

One downside to using a pure javascript instead of html is that your site may be invisible to google's webcrawler (ie your site has poor SEO). See this link for making your AJAX site crawlable http://code.google.com/web/ajaxcrawling. In summary, it requires some thought.

 

 

mo sy replied on Mon, 2011/01/10 - 9:46am

For those who are having trouble with JSF 2

http://www.coreservlets.com/JSF-Tutorial/jsf2/
http://www.primefaces.org/

Having trouble with jars??? I suggest you get into maven asap and jump on the Netbeans bandwagon, unless maven support in eclipse has been vastly improved since i jumped ship two years ago.

Sivaprasadreddy... replied on Mon, 2011/01/10 - 10:29am in response to: mo sy

Hi Mo sy,

Thanks for pointing my all time faviourite site  http://www.coreservlets.com/JSF-Tutorial/jsf2/ to learn JSF.

For using a web framework do i need to use maven ? Ofcourse I know using maven will greatly reduce app setup process, but usability of a web framework shouldn't depend on Build tools (in my opinion).

 I think it would be really great if the JSF implementors (Mojarra, MyFaces and whatever it is) should have a clean documentation on how to setup atleast a hello world kind of sample application including the information about which version of JSF they are using and mentioning the crucial configuration details that is mandatory.

 One week back I tried to write a simple app using JSF2+RichFaces3.3.3. 

The jsf jar which i downloaded from Mojarra bundle ( I am sure its is the JSF version 2 latest version) doesn't has the class required to annotate my managed bean(@ManagedBean).

I got that jar file from CoreServlets website example and tried to deploy it. Again some wiered issues. After struggling some time and googling for the solution I got the solution in StackOverflow. After including some configuration in web.xml the application is running finally.

 This is how my zeal to learn JSF2 ended :-).  Anyway I request the people who are able to use JSF and are happy with JSF, please document it and share it. It could help a lot for the people like me.

 

 

mo sy replied on Mon, 2011/01/10 - 11:53am in response to: Sivaprasadreddy Katamreddy

If you think that those tutorials with included sample projects or the available maven archetypes are insufficient or overtly complex for newcomers, then please post an article here on your findings to help those whom you believe might find themselves in the same situation.

Sivaprasadreddy... replied on Mon, 2011/01/10 - 11:59am in response to: mo sy

Sure. I will post an article on how to setup a JSF2+RichFaces sample app.

Thomas Quaile replied on Mon, 2011/01/10 - 1:21pm

My personal favorites Ruby On Rails and Stripes. If you want to stay in the Java world, Stripes is great.

Murali Mohan Rath replied on Mon, 2011/01/10 - 5:45pm in response to: Sivaprasadreddy Katamreddy

I haven't used RichFaces. But with JSF 2 I never had a problem with jars. I'll wait for your article to see what problems you had and how you fixed them

Sivaprasadreddy... replied on Mon, 2011/01/10 - 6:49pm

Hi Murali,

Before posting my observations on JSF2, let me give a brief about the problem i faced with JSF2+RichFaces setup.

 I got the JSF2 binaries from http://java.net/downloads/javaserverfaces/release/2.0.3/mojarra-2.0.3-FCS-binary.zip. And i got RichFace-3.3.. As per the RichFaces User Guide the following is the configuration required to setup RichFaces in web.xml.

<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

 

After configuring this in web.xml and deployed I got the following error giving no clue what could be the problem.


javax.faces.view.facelets.FaceletException: Must have a Constructor that takes in a ComponentConfig
at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.<init>(AbstractTagLibrary.java:292)
at com.sun.faces.facelets.tag.AbstractTagLibrary.addComponent(AbstractTagLibrary.java:522)
at com.sun.faces.facelets.tag.TagLibraryImpl.putComponent(TagLibraryImpl.java:111)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processComponent(FaceletTaglibConfigProcessor.java:565)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags(FaceletTaglibConfigProcessor.java:357)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary(FaceletTaglibConfigProcessor.java:310)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process(FaceletTaglibConfigProcessor.java:259)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:334)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:220)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoSuchMethodException: org.ajax4jsf.taglib.html.facelets.ActionParamHandler.<init>(javax.faces.view.facelets.ComponentConfig)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.<init>(AbstractTagLibrary.java:290)
... 23 more
Jan 11, 2011 5:02:25 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! org.ajax4jsf.taglib.html.facelets.ActionParamHandler.<init>(javax.faces.view.facelets.ComponentConfig)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:351)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:220)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoSuchMethodException: org.ajax4jsf.taglib.html.facelets.ActionParamHandler.<init>(javax.faces.view.facelets.ComponentConfig)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.<init>(AbstractTagLibrary.java:290)
at com.sun.faces.facelets.tag.AbstractTagLibrary.addComponent(AbstractTagLibrary.java:522)
at com.sun.faces.facelets.tag.TagLibraryImpl.putComponent(TagLibraryImpl.java:111)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processComponent(FaceletTaglibConfigProcessor.java:565)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags(FaceletTaglibConfigProcessor.java:357)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary(FaceletTaglibConfigProcessor.java:310)
at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process(FaceletTaglibConfigProcessor.java:259)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:334)
... 16 more
Jan 11, 2011 5:02:25 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Jan 11, 2011 5:02:25 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/JSF2] startup failed due to previous errors
Jan 11, 2011 5:02:25 AM com.sun.faces.config.ConfigureListener contextDestroyed
SEVERE: Unexpected exception when attempting to tear down the Mojarra runtime
java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:800)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:302)
at com.sun.faces.config.InitFacesContext.getApplication(InitFacesContext.java:104)
at com.sun.faces.config.ConfigureListener.contextDestroyed(ConfigureListener.java:312)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4011)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4615)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4512)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jan 11, 2011 5:02:25 AM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: A web application created a ThreadLocal with key of type [null] (value [com.sun.faces.util.Util$1@15b5c1f]) and a value of type [java.util.HashMap] (value [{com.sun.faces.patternCache={ = }}]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

 For a newbie to JSF this error stacktrace doesn't give any clue on what went wrong.

I really really appreciate Spring in this regard. The error details that is thrown by Spring framework is more than enough to fix the problems.  It even says"probably setXyz() method is not present" if you try to inject a value for xyz property.

After googling for the solution i got the working configuration from StackOverFlow.

 

<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
<param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.SECRET</param-name>
<param-value>NzY1NDMyMTA=</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_STYLE</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
<param-value>TIDY</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadStyleStrategy</param-name>
<param-value>NONE</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadScriptStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
<init-param>
<param-name>createTempFiles</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceparser</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>enable-cache</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>

 With this configuration application is working finally.

This could be a simple problem for people that are already familiar with JSF. But for a newbie if it takes 6 hours just to see a working HelloWorld application its very hard to learn and work with JSF.

 

 

 

Vinny Carpenter replied on Mon, 2011/01/10 - 9:05pm

I'll agree with everyone else that has already commented on using Google Web Toolkit (GWT).

Ryan Developer replied on Tue, 2011/01/11 - 8:19am in response to: Sivaprasadreddy Katamreddy

@Sivaprasadreddy:  Try using PrimeFaces UI components with JSF 2.   I'vce been using RichFaces for a couple years and on the surface it appears to be full featured and well documented, but when you really get into it you'll find that crucial things are not documented in enough detail and you may run into the all kinds of difficulties.   I ended up switching to PrimeFaces when I migrated to JSF 2.  It made the migration so much easier, and I thought the API designs of the components were much cleaner. Plus I love that PrimeFaces is a single .jar file with no dependencies, and NO CONFIGURATION.  It makes full use of the JSF 2 infrastructure instead of replacing thinsg with its own.

Sivaprasadreddy... replied on Tue, 2011/01/11 - 8:43am in response to:

Hi Ryan,

I haven't tried PrimeFaces yet, but i will take a look at it.

 "PrimeFaces is a single .jar file with no dependencies, and NO CONFIGURATION" is very impressive and i want to have a look at it.

Thank you :-)

Ryan Headley replied on Tue, 2011/01/11 - 1:34pm

Pretty sure this will be unpopular but: RIA: Jquery with HTML5. JQuery is very widely adopted, the javascript code is actually elegant. Its plugin architecture makes it very usable. HTML 5 -- because messing with the DOM directly via JS isn't fun. HTML is there for a reason, so use it. HTML 5 because of some of the new features forthcoming. IE won't do much of it until IE 9 is released but why not start now. Languages/Frameworks: Django -- the framework for developers with deadlines. For me the killer feature of Django is its forms app. (Notice I didn't say admin, though that is heads and tails nicer than rails scaffold). Its never been easier to handle validation, manipulation, etc in your forms. It requires you to learn PYTHON. Not only can python be used for the web via Django or other frameworks, but you can write GUI's, scripts, etc. And using python with virtualenv and either pip or easy_install, it makes setting up numerous different environments withouts stomping on other project dependencies, etc so very simple. People complain about the whitespace counts issue in python, but I say this: NEVER have I read code that was so easily understood and clean looking. Really is a thing of beauty. Anyway, thats just my two GB

Andy Leung replied on Tue, 2011/01/11 - 3:27pm in response to: Ryan Headley

Thanks Ryan, can't agree more, totally love the new support from HTML 5 and coordinations with jQuery ;)

Sivaprasadreddy... replied on Tue, 2011/01/11 - 8:16pm in response to:

@Ryan,

last night I had a look at PrimeFaces and did a simple POC. Its just great. I never imagine a JSF component library would be that much easy to use based on my prior experience with JSF :-)

And coming to number of components that PrimeFaces is supporting, single jar with no configuration is awesome. 

Thank you.

Cool Guy replied on Tue, 2011/01/11 - 8:33pm

People don't like ExtJS because of its license problem. You can read more from wikipedia on ExtJS for the problem.

As for dojo grid, it does support pagination, sorting and filtering.

Edit: my bad, pagination is still under construction and will be released with dojo 1.6

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.