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