| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <!-- $Id$ --> |
| <html> |
| <head> |
| <link rel="STYLESHEET" type="text/css" href="scripts/style_virtlib_pcIE55.css"> |
| </head> |
| <script language="JavaScript"> |
| <!-- |
| |
| function openWin(url, windowName, width, height) |
| { |
| var screenX = Math.floor((screen.width)/2)-Math.floor(width/2); |
| var screenY = Math.floor((screen.height)/2)-Math.floor(height/2)-20; |
| |
| |
| var features = |
| "toolbar=no," + |
| "scrollbars=no," + |
| "status=no," + |
| "top=" + screenY + "," + |
| "left=" + screenX + "," + |
| "screenX=" + screenX + "," + |
| "screenY=" + screenY + "," + |
| "width=" + width + "," + |
| "height=" + height; |
| |
| var newWindow = window.open(url, windowName, features); |
| |
| newWindow.focus(); |
| return newWindow; |
| } |
| |
| function showStatusImage() |
| { |
| openWin("images/success/status-table.gif", "Screenshot1", 745, 450); |
| } |
| |
| |
| function showEditForm() |
| { |
| openWin("images/success/edit-form.gif", "Screenshot2", 750, 470); |
| } |
| |
| // --> |
| </script> |
| <body bgcolor="#839cd1" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> |
| |
| <table width="100%" border="0" cellspacing="0" cellpadding="2"> |
| <tr> |
| <td valign="top" align="left"><IMG height=44 alt="[Tapestry Logo]" src ="images/ico_t.gif" width=44 align=absMiddle border=0 > <IMG height=22 alt=Tapestry src="images/hd_tapestry.gif" width=100 align=absMiddle vspace=17 border=0> |
| |
| <p>This page contains quotes from the Tapestry community, appearing on the |
| <a href="http://www.geocrawler.com/lists/3/SourceForge/19561/0/" target="_top">Tapestry Developer mailing list</a> |
| and in online forums such as <a href="http://theserverside.com/home/thread.jsp?thread_id=12750" target="_top">TheServerSide.com</a>. |
| |
| <p> |
| <small>These entries have been editted for grammar and readability.</small> |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Tapestry met all of our requirements and helped us proceed onto a |
| successful release. |
| </div> |
| We used Tapestry to implement the monitoring and administration console |
| for |
| a wireless network management product. Initially, we implemented a |
| demonstration using standard JSP but we realized that JSPs presented |
| difficulties for implementation. Some of our requirements were a very |
| aggressive development schedule, integration with EJB 2.0 beans, ability |
| to |
| write modular reusable components, very reliable, easy code maintenance, |
| internationalization, and of course easier debugging than the generated |
| JSP |
| code. Tapestry met all of our requirements and helped us proceed onto a |
| successful release. |
| |
| <p> |
| After reading the tutorial and reviewing the examples, we started with |
| writing simple components. We started with a StatusImage |
| component. The |
| GIF for the status image should be localized and selected based on |
| standard |
| network status states. Another example of a simple component was a |
| validating IP address |
| text field. The IP address field uses the Tapestry |
| validation framework. After that, we moved onto more complex components |
| like the StatusTable shown in the figure. |
| This table has a varying number of rows depending on the configuration of the product using the Tapestry |
| Foreach component (very cool). This StatusTable makes use of another |
| essential Tapestry component, the Conditional. Looking at the Actions |
| columns, the set of actions is conditional based on the row. All this |
| logic |
| happens in the Java class and is not embedded into our HTML making |
| maintenance much easier. |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Tapestry's flexibility along with its |
| clean object-oriented architecture |
| made our web interface shine. |
| </div> |
| Finally, we integrated servlets and JSPs into our Tapestry web |
| application. |
| We needed servlet integration for charting and JSPs for reporting. With |
| all |
| this flexibility, we could use each technology where they worked best. |
| |
| Overall, all of Tapestry's flexibility along with its clean |
| object-oriented |
| architecture made our web interface shine. |
| |
| <p> |
| Dorothy Gantenbein |
| <br> Profluent, Inc. |
| |
| <p> |
| <IMG height=12 src="images/dots_leftnav.gif" width=14> |
| <A class=clsLeftNav href="javascript:showStatusImage();">Screen Shot 1</A> |
| <IMG height=12 src="images/dots_leftnav.gif" width=14> |
| <A class=clsLeftNav href="javascript:showEditForm();">Screen Shot 2</A> |
| |
| |
| <br clear="right"><br>.................................................................... |
| |
| |
| <p></p> |
| <div class="right-side-quote"> |
| It's the most exciting model in Java web development |
| I've seen in a long time. |
| </div> |
| I've said it before and I'll say it again... |
| You owe it to yourself to take a serious look at Tapestry. |
| It's the most exciting model in Java web development |
| I've seen in a long time. It really allows you to build applications--not web sites--that "execute on the web." Very cool stuff. |
| |
| <p>Chris Wilson |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Tapestry is the best solution to the presentation tier ... |
| </div> |
| Tapestry is the best solution to the presentation tier and it provides a clean separation of content and developer code. |
| First, I extended it for WAP support, then I developed several WAP components and |
| finally I developed a complete email application for WAP in record time. |
| |
| <p>David Solis |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Tapestry is the best framework I have seen that offers this sort of separation. |
| </div> |
| When using Struts or Velocity, in order to see what the finished |
| page will look like, our graphic designers |
| must assemble the application, deploy it ... they |
| basically lose all the luxuries of WYSIWYG development ... |
| I spent 30 minutes or so with one of our graphic designers here, |
| and he was giddy at what I showed him as I redesigned one of our smaller |
| apps using Tapestry. |
| |
| <p> |
| Bottom line for us is this: We have graphic designers and we have developers, |
| and I don't want them to necessarily have to know each others' job to get things done. |
| Tapestry is the best framework I have seen that offers this sort of separation. |
| |
| <p>Jim Birchfield |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| We |
| are able to publish any kind of our metadata-driven business objects with just |
| a handful of generic, highly dynamic pages, using customizable components. |
| </div> |
| As a 'lay developer' using Tapestry I can only recommend it. |
| We have built a content management system |
| based on Tapestry, plus multiple sites that are now powered by it. |
| Thanks to its component architecture, we |
| are able to publish any kind of our metadata-driven business objects with just |
| a handful of generic, highly dynamic pages, using customizable components. |
| All business logic is encapsulated in business objects |
| and services, so there is not really much logic in the presentation layer besides the navigation parts. |
| |
| <p> |
| The learning curve is not flat, but is really worth |
| the effort. If you need to bring a dynamic web-app to the browser |
| Tapestry offers many predefined and stable components to build on. |
| We have gone with Tapestry and we will continue to use it |
| in the next couple of projects needing a web-interface, too. |
| |
| <p>Jiri Lundak |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| The amount of code I am having to |
| write is greatly reduced and I am achieving a much greater level of reuse. |
| </div> |
| I just wanted to send you a quick note of appreciation for your Tapestry |
| framework. It is a truly original and innovative approach. |
| |
| <p> |
| While the learning curve is steep compared to thinner webapp frameworks, I |
| have found it is well worth the effort. The amount of code I am having to |
| write is greatly reduced and I am achieving a much greater level of reuse. |
| |
| <p>Malcolm Edgar |
| |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| ... one can build incredibly complex Web applications quickly |
| and easily, and yet be assured that those applications |
| are of a very high quality. |
| </div> |
| I just want to second the positive comments about Tapestry. |
| We have evaluated a lot of frameworks in the past couple of years, |
| and in our opinion Tapestry is the only open source Java framework |
| at the moment that provides everything necessary for Web-centric component |
| oriented development. |
| |
| <p> |
| The most important feature of Tapestry is |
| indisputably the ability to package common |
| Web functionality into components that can then |
| be effortlessly reused again and again. Building a |
| Tapestry application is pretty much like playing with |
| Lego bricks -- all you have to do is just fit the different |
| pieces together and not worry about how each brick would |
| work internally or how the different pieces would interract |
| with one another (an OO approach at its best). As a result, |
| after gaining some experience and accumulating a set of components, |
| one can build incredibly complex Web applications quickly and easily, |
| and yet be assured that those applications are of a very high quality. |
| |
| <p> |
| Tapestry has another major advantage as well -- |
| it provides very clean separation between presentation and logic |
| (cleaner than that of the most commonly used frameworks). The |
| design of its templates is also very mindful of the actual web |
| development process, accomodates very nicely the work of the |
| web designers from the start, and allows them to play along |
| even in later stages of the application development. This, |
| again, is something rarely found in the other frameworks. |
| |
| <p></p> |
| <div class="right-side-quote"> |
| We've |
| got a significant increase in productivity, we've got increased quality, |
| we've got happy web designers, and we've |
| put an end to the repetitive operations -- it would be hard to think |
| of a better scenario. |
| </div> |
| I will mention just one more superb feature -- the Tapestry design |
| and APIs provide a huge number of extension points that allow you to |
| customize the behaviour of the framework almost to no |
| end. In order to achieve a specific goal for one customer we twisted the |
| behaviour of the system so much, that Howard would faint if he sees |
| it. In any case, being able to easily modify and extend specific elements |
| of the framework is a major advantage. |
| |
| <p> |
| This may sound a bit like an advertisement, but it is not -- |
| we are just very satisfied users. We've |
| got a significant increase in productivity, we've got increased quality, |
| we've got happy web designers, and we've |
| put an end to the repetitive operations -- it would be hard to think |
| of a better scenario. |
| |
| <p> |
| If you are experienced in OO and/or components and care about |
| Web development, I would suggest that you have a look at Tapestry. |
| I would be very surprised if you do not find it |
| a far more viable solution for your needs than JSP or Struts, |
| for example. |
| |
| <p>Mind Bridge |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| The perfect separation of roles was what drew me to Tapestry ... the rest of the |
| things (and there are a lot of them) were the iceing on the cake. |
| </div> |
| Actually what drove me to Tapestry wasn't the saved development time, it was |
| the sheer beauty of it :-)<br> |
| I |
| come from an ASP/VB background and I was getting sick and tired of that mess, designers |
| constantly asking me "Is it OK to move this part of code to the bottom |
| of the page?" , "Could you take a look and see if I didn't mess anything |
| when I added the picture?", "Ohh, I'm sorry. that was an include file, |
| I thought it was just a comment" ... well you get the picture, and tools like |
| Dreamweaver only help to some extent. The |
| perfect separation of roles was what drew me to Tapestry ... the rest of the things |
| (and there are a lot of them) were the iceing on the cake. |
| |
| <p>Luis Neves |
| |
| |
| <br clear="right"><br>.................................................................... |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Tapestry frags the snot out of frameworks like JSF, Struts, and the like |
| </div> |
| The company that I work for did a research project with the |
| National Research Council of Canada, and we spent several months reviewing |
| web services, J2EE, and Database systems for a technical risk project that we were doing. Out of that we learned 3 things: |
| |
| <ol> |
| <li>Web services were immature. |
| <li>J2EE was overrated. |
| <li>That JSP and anything else that stuck anything |
| other than HTML into an HTML file was not only counter-productive but |
| dangerous to the life of the project.</li> |
| |
| </ol> |
| |
| <p></p> |
| <div class="right-side-quote"> |
| All of our development efforts have moved to Tapestry. |
| </div> |
| I will give you an example. We have a "legacy" project that is done in |
| JSP (all of our development efforts have moved to Tapestry). We had to perfect the |
| logic of the project while the text and look of the project was still in flux. Everytime our |
| graphics guys fixed the pages, code would get damaged, or vice versa. Everytime |
| our graphics guys created new pages, our programmers would have to go mark |
| up the pages with code and could not work on the logic of the given page until after |
| our graphics guy had finished it. On top of that the whole system has to be translated |
| into French. Which means that we not only have doubled our work, we have actually ended up |
| tripling it, pushing back deadlines, etc. If it had not been for the fact that we "inherited" the code, |
| it would have been done in Tapestry to start with, because: |
| |
| <ol> |
| <li>Our graphics designers could do their thing without disturbing the work of our programmers. |
| <li>The programmer wouldn't have to wait for the designers to finish a page to start work on it. |
| Many times our programmers work with pages that are simple white with text and form fields and after it works, |
| our designers integrate the pages together. |
| <li>Localizing for French simply involves |
| copying the existing layout, replacing English text with French, and saving it with a new file extension ... no need to recreate the code of a JSP. |
| <li>If our client doesn't like the look, it is a |
| simple matter of changing it, no code is disturbed, no code is broken, |
| it will work when it is done being modified without our programmers even |
| looking at it. (And our designers don't even know Java....)</li> |
| |
| |
| </ol> |
| |
| <p> |
| If you are using a language or framework that puts proprietary (non-HTML) code into your |
| templates or HTML files, I seriously suggest that you take a look at the approach that Tapestry |
| takes as you will probably find that it is quite revolutionary in its approach to web development (as stated above). |
| |
| <p> |
| So take it from someone who just researched existing and upcoming technology for three months, Tapestry |
| frags the snot out of frameworks like JSF, Struts, and the like. |
| |
| <p></p> |
| <div class="right-side-quote"> |
| Integration of other packages / APIs that support a Java Beans |
| style is a no-brainer ... it simply works. |
| </div> |
| I will give Apache one thing though, they have built a lot of production quality |
| software that beats even Microsoft. We added Torque to Tapestry to |
| fill a void in the database support (Tapestry by itself has no database support) because Tapestry's model |
| fit so perfectly that I can actually create a web page to display all the records in a table using only |
| 14 lines of Java code, of which less than half (only 6 lines of code) are actually |
| hand written (the rest are auto-generated by Eclipse). So I guess that is another point |
| for Tapestry: Integration of other packages / APIs that support a Java Beans |
| style is a no-brainer. No taglibs need to be written, no new scripting needs to be created, it simply works. |
| |
| <p>Adam Greene |
| <!-- END Content --></p> |
| </td> |
| </tr> |
| </table><!-- ****END BODY WRAPPER**** --><!-- ****FOOTER**** --> |
| <table width="100%" border="0" cellspacing="0" cellpadding="0"> |
| <tr bgcolor="#8e9cd1"> |
| <td> </td> |
| </tr> |
| <tr bgcolor="#4b5887"> |
| <td height="47"> |
| <IMG src="images/spacer.gif"> |
| </td> |
| </tr> |
| <tr bgcolor="#333333"> |
| <td height="65"> |
| <table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000"> |
| <tr height="65"> |
| <td width="654" align="right" valign="bottom" class="clsFooter">© 2003 Apache Software Foundation. |
| All rights reserved. |
| </td> |
| <td width="70"> </td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| <tr bgcolor="#333333"> |
| <td> |
| <table width="724" border="0" cellspacing="0" cellpadding="3" bgcolor="#000000"> |
| <tr height="65"> |
| <td height="200" width="654"> </td> |
| <td width="70"> </td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| </table><!-- ****END FOOTER**** --> |
| </body> |
| </html> |