JBoss Seam usage makes the application code crazy!

ADSENSE HERE!
Seam Application has a number of good innovations but let's find out if we lose some advantages that we had before. I started application development with JBoss Seam one year ago. With the code base growth I have had more and more problems in workflow development .



I noticed that there are many problems which we have not had before, for example:

  • Utility methods calls are not straight and clear now.

  • Find all usages IDE has feature became useless because of mass EL calls.

  • There is much of the meta programming in such a severe OOP language as Java.

  • It is impossible to debug JSF templates

  • Seam Exceptions look so unclear.



Programming with Seam has all disadvantages of script languages like PHP or Ruby.
I definitely admit that some features like Conversations and Native AJAX support made a big step forward. There is a lot of information in the net about How cool is seam but I tried to reveal the underside.

Think twice before switching to Seam.
ADSENSE HERE!

12 comments:

  1. Take a look at Apache Wicket! Wicket uses clean and pure Java code and pure HTML. Programming with Wicket feels very natural with wicket. Creating new components is so easy that sometimes you don't realize that you have just creaated a new one.

    I've tested several web frameworks, but none of them was so consistent, easy to use and to debug. You feel the weaknesses of most frameworks when you create your own components, use AJAX or debug your application. All this is really comfortable with Wicket. You can simply read pure Java code an understand you application.

    ReplyDelete
  2. I've got same experience by using Seam and reach a point that I've to leave it. As the application grows those downside effects really hurt us a lot.

    ReplyDelete
  3. Good feedback:

    * Utility methods - you can still write your utility methods as plain Java methods, and wire them in yourself - use as little or as much DI as you like
    * IDE / EL usage - we totally agree, hence why we have worked hard on JSR-299 which is typesafe, and so supported natively by an IDE (you can just use the standard "find implementations" feature to navigate, extensions can help with binding annotations)
    * JSF debugging - we've tried to take our experience with this to JSF2 - so please try out JSF2 and see what you think - of course, this is a first iteration of the new support, so we need feedback on that
    * Exception handling - we definitely realise this is a weak point (mainly due to having to bolt this onto JSF), but JSF2 now has native exception handling so hopefully this will address your concerns.

    Pete (Seam project lead)

    ReplyDelete
  4. I can not do utility method call from JSF template. That is why I have to use Seam Application context for utility class. That is a problem because I can not find all usages of the utility method call.

    Thanks for your info - it was really helpful. I will look through JSF2 of course.

    ReplyDelete
  5. Aha - I see what you mean - in general, I would advise calling only business methods from JSF, and using these to call utility methods.

    A good tooling solution (like JBoss Tools) will alieveate this tottally, as it extends the IDE searches to include EL.

    ReplyDelete
  6. Whoops forgot to say I'm JBoss Tools lead

    ReplyDelete
  7. Bogdan, JBoss Tools 3 have "Find references" that also reports usage of EL in xhtml, pages.xml etc.

    Let us know if there is something we don't find ;)

    ReplyDelete
  8. Max,
    Can I integrate these tools to IDE?
    I prefer IntelliJ Idea.

    ReplyDelete
  9. Pete,
    `Permission` methods alway get me stuck.
    Currently I am doing the call like this for them:
    <% if (object.isUserAllowedEdit(getCurrentUserId()) {%>
    ....
    <% } %>
    I know that it is bad idea even if don't use Seam.
    What do you recommend in this case?

    ReplyDelete
  10. Why you want to integrate JBoss Tools from Eclipse into Intellij IDEA ? IDEA has it's own "seam-tools"
    http://www.jetbrains.com/idea/features/jboss_seam.html

    And yes, it's true, think twice before switching to _ANY_ the new technology, because you definitely need a time to get on speed on it. and Seam is not just one technology, you also have to understand JSF lifecycle and Seam lifecycle - it's not an easy switch if you have no deal before with JSF.
    you better take your time and read Seam-Books, it's not a technology which could be used without investigating time into learning it.

    -"debug JSF templates".. Hmm, but you can debug Seam application as any other remote application. so you at least can debug your java method calls and if you need client-side javascript debug - then just use FireBug

    the biggest pros of Seam for me - is simplicity of data-binding and natural way of organizing the code.

    ReplyDelete
  11. > the biggest pros of Seam for me - is simplicity of data-binding and natural way of organizing the code.

    Can you please be more concrete? How is it done in Seam? How is it done in other frameworks? Why does Seam better?

    ReplyDelete
  12. would it be possible to translate your website into spanish because i have difficulties of speaking to english, and as there are not many pictures on your website i would like to read more of what you are writting.

    ReplyDelete

Komen dong, tapi yang sopan dan tidak spam ya

Copyright © Spesial Unik. All rights reserved. Template by CB. Theme Framework: Responsive Design