Discussions

News: WebWork 1.2 Web Application Framework Released

  1. WebWork 1.2 Web Application Framework Released (33 messages)

    Version 1.2 of WebWork is now available. The release includes significant improvements and marks the first release since integrating into the OpenSymphony project (home of SiteMesh, OSCache, etc). WebWork is a pull HMVC web application framework in Java, developed as Open Source (Apache license).

    Visit http://www.opensymphony.com/webwork).

    More info
    =======================
    WebWork is a pull HMVC web application framework in Java, developed as Open Source (Apache license) and designed to help create dynamic websites using minimal effort and maximum flexibility.
     
    WebWork is *not* just another MVC framework. Its clean architecture allows it to support a multitude of views. This view separation allows you to easily switch between different view technologies without changing the logic that produces the data. For instance, you can go from HTML to Swing to PDF to XSLT to Velocity all with the same model. In addition, it provides the developer with a powerful expression language that allows you to easily navigate its object stack to retrieve and write data. This makes retrieving and setting objects in the view and action trivial. Remember in WW, the idea of a form bean and handler are one. Its small but complete tag library includes a set of UI tags brilliantly architected allowing you to easily customize its view by changing out its jsp template with your own template. If you don't like the provided template view for SELECT, then plug in your own. It provides support for i18n, redirection, error handling, validation, command driven actions, chaining actions, and will handle those pesky type conversions for you automatically going from web to action. For more insightful user comments, visit (http://radio.weblogs.com/0107789/stories/2002/07/09/whyILikeWebwork.html).

    Some new features in this release:

    New view support:
    - Jasper Report View - This view technology provides support for PDF reports. (see http://www.sf.net/projects/jasperreports)
    - VXML View - This view technology provides support for Voice XML

    Misc:
    - Action chaining - You can now chain your actions together allowing you to modularize and easily reuse logic.
    - Parameter to Action attribute type conversion - WW provides you the ability to automate type conversion from HTTP request parameters to primitive and/or object attributes in you actions including arrays. This greatly reduces the type conversion burden.
    - Implicit support for multi-part content - WW wraps the request to allow you to view multi-part request as a normal HTTP request.
    - Numerous other bug fixes and improvements

    For more information on WebWork, visit its website at (http://www.opensymphony.com/webwork). For download information, visit (http://sourceforge.net/projects/opensymphony).

    For more information on OpenSymphony and its other products like SiteMesh, OS Workflow, OS Cache, and more, visit (http://www.opensymphony.com).

    -----------
    OpenSymphony (http://www.opensymphony.org) is a Java open source (http://www.opensource.org) project designed to provide application developers with a suite of components for rapid development of enterprise class Java applications.

    -Matt Baldree

    Threaded Messages (33)

  2. I give high marks to WebWork - it is an excellent framework. The speed with which I was able to be up and highly productive was amazing. I use it quite effectively with Sitemesh. Great work!

    Cheers
    Ray
  3. How does it help page designers to work on jsp/html independent of java/bean developers?
    I know struts pages can be visually done using ultradev, is anything available to use WW for visual page design?

    Regards,
    Chris
  4. If you're using Dreamweaver MX (if you aren't, you should :)), you can specify a .jar or .tld file to get access to the tag library in code view.

    For webwork, just point Dreamweaver to where you have your webwork.jar file and that's it.

    HTH,
    /rick
  5. I will try the framework recentlly,and hope it can give me a hard foundation of the software.
  6. I have been using WebWork for some time on my projects, and it is the best framework I have encountered. It is an incredibly streamlined and agile model for development that I believe is much more accessible than more monolithic frameworks such as Struts.
  7. any word on flash integration ?
  8. Is there any documentation available in PDF format!. It was available for previous release and no I cann't see any more. Could some guide me where I can download the same!

    SH
  9. Performance?[ Go to top ]

    I plan on using this on my next project. Has anyone run into any performance problems with it? Even under ridiculous circumstances?

    I've written my own over the years and would like to go with something that more people are using, but not somethign that takes forever to setup and/or customize.
  10. How does WebWork compare to Cocoon (an Apache XML project)?
  11. Shane

    The two frameworks solve different problems.

    Cocoon is an XML web-publishing framework (basically it powers XML based websites, wap-sites etc), while WebWork is a framework for developing web-based applications.

    A subtle but import difference.

    Regards
    Tendayi
  12. I don't quite understand. Reading the features for webwork, I feel that it competes directly with even Cocoon. I'm not familiar with webwork, not yet, but I'm somewhat familiar with velocity and xslt. My understanding is that one can move their Cocoon based application to webwork. The xslt may or may not change, whilst the xsp need to change to whatever is comparable /suitable in webwork. Another approach with webwork is to curn out xml using velocity.

    I really like the month list speed comparison between a jsp using heavy tags and velocity, though I guess it is not intended to be that. It's a real eye opener for me. Velocity rocks!
  13. What's this "month list comparison"? Can you share the results here so we dont have to download/run any samples of velocity.

    Thanks,
    Chris
  14. The "month list" is just a very simple calendar thing that shows a list of all dates in a year, and highlights the current date. However, it excercises the most important JSP tags such as "iterator","property", and "if". I converted that JSP to use Velocity and the performance differences were quite interesting. The *best* JSP engines can run the page in about 80-100ms (with the worst one being around 3-400ms, guess which one), while Velocity easily renders it in between 30-40ms, and sometimes even as low as 20ms.

    This is a big difference, which highlights how the Velocity execution model is significantly faster. The good thing is that it will have more or less the same performance characteristics on different servlet engines. Unfortunately (or fortunately, depending on who you work for) JSP engines have very different performance characteristics, and the most widely used OpenSource engine just plain s*cks.

    That's what the "month list comparison" is all about.

    /Rickard
  15. Rickard,

    Thanks for the overview. I am surprised that even Jetty/Resin s*cks in your testing.
    Probably Velocity should be part of J2EE instead of JSP.

    Anyway, question is how do you compare the performance of month-list while using WebWork?

    Chris.
  16. Chris,

    There's a performance testing example tool included in WebWork. Deploy the examples, hit index.html and select "Hit URL". Enter the URL you want it to load and fire away. This is very useful for simple testing of your own apps as well.

    /Rickard
  17. Guys,

    Just think about a poor chap starting on a new web-app project. It might take him weeks to decide which presentation technology/framework to choose from. People do like almost all of them (JSP with struts/webwork, Velocity, Tapestry etc etc etc). And this is all without any requirement of xml processing. So, we must have a way to categorize requirements with the recommended framework to save people time. Even voting based on applications in production can help.

    Something to start with.

    Category A
       transactional web-apps
       1. JSP with struts
       2. Webwork
       3. Velocity
       4. Tapestry
       5. cXml

    Category B
       Xml content centric web-apps
       1. JSP and related techs.
       2. Cocoon.
       3. ???
  18. Where would something like stxx (http://stxx.sf.net) fit in? It is an XSLT engine that works off struts (replaces strut's JSP dependency) Granted I'm one of the developers, but I feel its a good compromise for those who like the flexibility of xml/xsl but don't want the complexity of cocoon. It can even co-exist with traditional struts/jsp pages.

    Don
  19. I dunno. I don't think velocity is 'equivalent' to struts/webwork/tapestry/etc. It can be used in some of these frameworks. I have only evaluated Cocoon ver 1.8.2 last year for a few weeks and found xsp to be an unnecessary hardship to go thru.

    I eventually created my own simple framework that allows the views to be either xslt or velocity. Now it seems that webwork supports this and much more, thus making it a viable framework for us to move to.

    I like webwork's flexible support for the views. Very nice.
  20. I am one of these poor chaps starting a personal web-app, and am having this exact struggle. I have been looking into struts, and am ready to go with it, but want to be sure before I get too far down the road.

    So...the app I am building mainly consists of data entry/manipulation screens as well as multiple reporting capabilities. So, the user will essentially be logging in, manipulating data, and doing research with current data via multiple JSP pages.

    Does this sound like a candidate for JSP/struts?
  21. Yeah, but it can also be done thru WebWork, Tapestry and cXML etc. Real question is which one is best. One of the prime objective should be to have web-designer work independently of java developers. If they are able to view dynamic pages (with template/sample data) and make pages visually (say using DreamWeaver MX), that's a big plus. I know JSP/Struts can be done using DreamWeaver. Not sure about others.
    Another advantage of struts/jsp is that now you can have your application "J2EE verified" which can help in marketing.

    Chris
  22. I know that one of the primary design goals of Tapestry; Tapestry HTML templates are just standard HTML documents where some of the tags are marked as components (by adding a "jwcid" attribute to them). They are designed to still preview properly in a WYSIWYG editor even after being instrumented.

    Because Tapestry moves the specification of what each component is into a seperate file (the page or component specification), there's virtually no "chaff" in the HTML.

    Tapestry also will edit out portions of the HTML template that exist just as examples for previewing.

    Example: To display the current user's name and the date of their last login:

    Hello, <span jwcid="insertUserName">Joe User</span> you last logged in on <span jwcid="insertLastLogin">Jan 1 2002</span>.

    This previews fine in an HTML editor.

    At runtime, the two <span> tags and thier contents are removed and replaced with actual content, presumably drawn from a database persistent object.

    You can really hide the components with minimal effort, i.e.,

    <tr jwcid="eachLineItem">
      <td><span jwcid="insertName">Product Name</span></td>
      <td><span jwcid="insertQuantity">1</span></td>
      ...
    </tr>

    Here, a Foreach component (a component that iterates over a collection of objects and renders its body for each one), is "hidden" inside a <tr> tag.

    Anyway, that's more than enough imposition on a WebWork thread ... I just couldn't resist pointing out one of my favorite features of Tapestry.

    http://tapestry.sf.net
  23. Hi,

    I have been following this thread and also been looking at many of these web frameworks that are out there. It seems to me that for the most part the advantage of using these frameworks really come into play in projects where there are many developers involved. More specifically when there are a clear mix of Java people and HTML people.

    I have been looking for that 'magic bullet'if you will, that would speed up things for my own personal projects. I haven't really found a speed increase using things like WO or ASP.net which is in many ways is like WO's and I would guess Tapestry?

    In my experience the time consuming stuff is in the validations (solved with a simple bean packed with the correct methods) and database interaction. Handling how the user moves in the system in really a no brainer if you understand the DOM and use a simple MVC setup.

    I guess if you need to create multiple views and perhaps some other specialized uses that come pre-built in a framework you might also find advantage. But then a again it is amazing what a some custom tags can do...

    I am intersted what others think of what I have said, does it make sense or am I missing something here?

    Stef
  24. Stefan,

    <quote>
    I have been following this thread and also been looking at many of these web frameworks that are out there. It seems to me that for the most part the advantage of using these frameworks really come into play in projects where there are many developers involved. More specifically when there are a clear mix of Java people and HTML people.
    </quote>

    Same here. I have also been looking quite extensively at numerous web frameworks, and I have basically come to the same conclusion. Often you just do not gain anything but rather complicate simple things.

    Clean MVC is indeed a no-brainer for many types of applications. I have introduced an extremely simple approach to my team: Basically custom controller servlets that do all the processing and view JSPs that render the results. Instead of custom controller servlets, you can also use JSPs that just contain Java code and redirect at the end (JSPs with automatic recompilation may be easier to handle for HTML developers). This approach has been sufficient for more than two years, numerous web applications, and numerous Java web developers and HTML designers.

    Conceptionally, these custom controller servlets are similar to Struts actions and can do everything those can do: populate one or more plain beans used for forms or parameters, perform validation, process data, generate results or errors and put them into request or session scope, redirect to an appropriate view. They can be mapped to action URLs via standard servlet mappings. Init parameters like view URLs can be handled via Servlet init parameters, global ones with ServletContext init parameters. This is easy to understand, extremely flexible, does not need many lines of code, and works nicely without MVC framework restrictions and without overhead.

    The only "libraries" necessary for writing controllers are something like the Jakarta Commons BeanUtils class for populating beans from request parameters, and a simple ActionServlet base class to ease controller implementation.

    View JSPs can be written nicely with JSTL (JSP Standard Tag Library) and its EL (Expression Language). But even without any tag library at all, view JSPs and not hard to write and maintain if you can live with some simple JSP expressions and scriptlets (even by HTML developers, in my experience). Forms contain the mapped action URLs as targets and can be filled with current values from one or more appropriate beans in request or session scope.

    Note that I do see fields of application for MVC frameworks like Struts or WebWork, especially for large applications and large development teams. But for many types of web applications, I don't really see a need for more than some simple custom guidelines for MVC design, accompanied by a few helper classes and a good tag library like JSTL.

    Juergen
  25. dear all:
        why can not I download the framework,can anybody be kindly to tell me another place to download it?


  26. :) I've downloaded it, can you give me a FTP site where I can upload it for you ?
  27. WebWork 1.2 Web Application Framework Released[ Go to top ]

    thanks,I don't have avaliable ftp address here ,if the package is not big,can you post it to my e-mail,yuguisuo at bjums dot com,thanks again.
  28. http://www.nextapp.com/products/echo/

    This is a nice framework. No HTML/JSP/Java Script guys to work with. If you can handle swing like applications you can develop using ECHO framework.
  29. Wafer project[ Go to top ]


    http://www.waferproject.org/index.html

    {{

    Wafer is a research project which compares the many open source web application frameworks which are available using a common example application. This research project is designed to compare the application frameworks on a level field by specifying an example application so that the application features become irrelevent and the merits of each framework becomes the focus.

    The first phase of this project is to identify and examine the numerous open source web application frameworks written in Java. The reason for the focus on Java is because it is one of the primary languages used for developing web based applications for Enterprises at this time. In the future we will also examine frameworks in other languages, including Perl, PHP, and possibly .NET.

    Since this project is open source it aims to identify and evaluate open source frameworks only at this time. Consideration of free but proprietary frameworks will be examined in the future.

    }}
  30. Concerning WebWork's EL vs. JSTL's (and JSP 2.0's) EL: Will WebWork switch to standard EL at some time or keep its own? In the latter case, based on which arguments?
  31. Has anyone tested WW with WebLogic Server 7.0 ?

    Many of the examples don't work on my machine (e.g. HelloWorld). The result is: 500 - Internal Server Error.
  32. Barracuda[ Go to top ]

    article: Barracuda compared to other Web/MVC frameworks

    http://barracuda.enhydra.org/cvs_source/Barracuda/docs/landscape.html

    http://barracuda.enhydra.org/

  33. Struts alternative: Tea[ Go to top ]


    The Tea framework is cool:

    http://opensource.go.com/


    The framework is discussed in Jason Hunter's book: Java Servlet Programming
  34. Struts alternative: Tea[ Go to top ]

    Here is a recent article about Tea:

    http://www-106.ibm.com/developerworks/java/library/wa-tea1.html