3 Replies Latest reply: Jun 27, 2012 6:43 AM by Lukáš Fryč RSS

What is the JBoss Way for Web Development?

Gideon Ravenor Newbie

This is not a loaded question, and neither is it a technology religion question.

 

I have an exacting set of requirements, and I want to know what is the JBoss Way of meeting the requirements. The requirements are:

 

1. Rapid web development - speed is an important factor

2. Highly scalable, stateful (with sessions) application

3. End-user customization, Theming and Personalization is a large requirement

4. Web pages dynamically generated from metadata

  4.1 Templating Support

5. Complex web client, rich user experience

  5.1 Ability to consume 3rd party Javascript component libraries

6. We are a large team with the ability to build our own frameworks, so a complete stack is not a requirement, a solid base that will not lock us in is prefered

7. Complete life-cycle consideration including developer experience, automated testing and deployment is considered

 

What are the 'JBoss Way' recommendations to meet the above?

 

Thank you in advance for your thoughts..

  • 1. Re: What is the JBoss Way for Web Development?
    Lukáš Fryč Master

    Hey Gideon,

     

    have you taken a look at

    http://www.jboss.org/developer ?

  • 2. Re: What is the JBoss Way for Web Development?
    Brendan Healey Master

    Hi, I don't work for Jboss/redhat but have a small amount of feedback based on my own experience, perhaps others

    may wish to add their own thoughts:

     

     

    1. Rapid web development - speed is an important factor

     

    Particularly with JSF I think speed of development is ultimately tied to how experienced your developers are, it's probably

    true with everything really, but particularly with JSF. If you're starting up a big project and don't have a lot of experience

    within the team it would be worth looking at bringing in a few JSF heavyweights perhaps temporarily to help you work

    through some of the pitfalls that everyone encounters when starting with this technology.

     

    There are some consultancy/training companies out there such as http://www.irian.at/en/ (I do not work for them either)

    who have some seriously good people, although I don't know specifically what services they provide.

     

    2. Highly scalable, stateful (with sessions) application

     

    JSF has application and session scoped beans built in. Alternatively JSF can be used in conjunction with CDI (contexts

    and dependency injection) which also provide these scopes. There are CDI extensions projects such as Seam 3 and

    Myfaces CODI which provide additional scopes, and these two projects are merging into the Apache DeltaSpike

    project which is something to keep an eye on for the future.

     

    At the business logic layer EJB has stateless and stateful beans.

     

    Scalability is taken care of by clustering at the application and database server level and both Jboss AS and Glassfish

    provide clustering out of the box, I think.

     

    3. End-user customization, Theming and Personalization is a large requirement

     

    Richfaces supports skinning and makes it very easy to implement this, take a look at the showcase here:

    http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=standardSkinning&skin=blueSky.

     

    Of course Java/JSF provide all the usual internationalisation features.

     

     

    4. Web pages dynamically generated from metadata

     

    I don't personally know of any way of doing this in a JSF Richfaces environment but it's certainly something

    you could look at doing yourself, as you say you have a large team.

     

    4.1 Templating Support

     

    JSF2 (which can be used in conjunction with Richfaces 4) introduced Facelets view handling technology

    replacing JSP. Facelets has powerful templating features which allow flexible code re-use.

     

    5. Complex web client, rich user experience

     

    JSF in conjunction with Richfaces meets this requirement. You also have the option to use jQuery plugins

    as required. It's also possible to write your own JSF/Richfaces custom components and Richfaces provide

    a component developers kit (CDK) for this purpose.

     

     

    5.1 Ability to consume 3rd party Javascript component libraries

     

    Richfaces ships with jQuery which has a jQuery.noConlict option which should allow for interoperability

    with Dojo, Prototype, Scriptaculous & YUI. There may be some work needed to do this, but jQuery is the

    definite leader in the field.

     

     

    6. We are a large team with the ability to build our own frameworks, so a complete stack is not a requirement, a solid base that will not lock us in is prefered

     

    If you use a Java EE compliant stack such as provided by glassfish you've got everything there, but depending

    on the choices you make along the way you can avoid being tied to a specific app server. There are three JSF

    implementations, Mojaraa (the reference implementation), Apache Myfaces and Oracle ADF Faces (so Oracle

    actually have two implementations following the SUN takeover).

     

    If you're going to be using JPA at the persistence layer as long as you don't start using implementation

    specific extensions that aren't in the JPA spec you should be able to move fairly easily from, say, Eclipselink to

    Hibernate or vice versa.

     

    I recently migrated a project from Primefaces to Richfaces and with about 100k+ lines of xhtml + backing bean

    code I was able to do this in about three weeks.

     

    7. Complete life-cycle consideration including developer experience, automated testing and deployment is considered

     

    Regarding automated testing you should check out JBoss Arquillian http://www.jboss.org/arquillian.html. Deployment

    is a breeze but depends on the application server. I use glassfish and can deploy straight to production from the

    NetBeans IDE.

     

    Regards,

    Brendan.

  • 3. Re: What is the JBoss Way for Web Development?
    Lukáš Fryč Master

    This is exhaustive analysis, Brendan!

     

    Brendan Healey wrote:

     

    Hi, I don't work for Jboss/redhat but have a small amount of feedback based on my own experience, perhaps others

    may wish to add there own thoughts:

     

     

    4. Web pages dynamically generated from metadata

    Gideon, you may want to look at Metawidget here.

     

     

    4.1 Templating Support

     

    JSF2 (which can be used in conjunction with Richfaces 4) introduced Facelets view handling technology

    replacing JSP. Facelets has powerful templating features which allow flexible code re-use.

    Multi-Templating is also worth to mention, as it is coming in JSF 2.2 ( http://jdevelopment.nl/jsf-22/ ).

     

     

    5.1 Ability to consume 3rd party Javascript component libraries

     

    Richfaces ships with jQuery which has a jQuery.noConlict option which should allow for interoperability

    with Dojo, Prototype, Scriptaculous & YUI. There may be some work needed to do this, but jQuery is the

    definite leader in the field.

    As Brendan said, you are able to use any custom / third-party widgets together with RichFaces,

    but recommended way is to wrap those components as JSF components, more info here:

    http://www.slideshare.net/lfryc/richfaces-cdk-rapid-jsf-component-development

     

     

    7. Complete life-cycle consideration including developer experience, automated testing and deployment is considered

     

    Regarding automated testing you should check out JBoss Arquillian http://www.jboss.org/arquillian.html. Deployment

    is a breeze but depends on the application server. I use glassfish and can deploy straight to production from the

    NetBeans IDE.

    Yeah, Arquillian, Selenium and Jenkins are winners here!

    http://www.slideshare.net/lfryc/designing-topclass-test-suites-for-web-applications

     

    Cheers,

     

    ~ Lukas