I really want to like Tapestry 5. How can a Java web developer not want to like something that basically describes itself as not-Struts? However, there have been some frustrations as I’ve prototyped AtomicGamer 2.0.
Tapestry 5 actually has a good amount of documentation. The API documentation is commented. A tutorial is available. Several of the concepts have long and detailed pages of text.
I just can’t find anything.
There’s 5 separate pages on component functionality, but I can’t find out how to actually inject a component onto a page. I know I saw it somewhere, but it’s lost now. There’s InjectComponent and Component annotations, but I don’t know what the difference is between them and I’m sure the difference is significant.
I need more information about contexts, but it took forever to learn that they are a page rendering request feature and documented under page navigation. I apparently should have known this.
I think the problem is the layout of the documentation rather than the contents. I understand what I want to do, but I cannot map my concepts into Tapestry concepts. Hence, the documentation is painful to use at best.
I was a Java and C++ developer, but I’m currently employed as a PHP web developer. Being the only “Java guy” at work, I get some flak thrown at me, but I like to toss some back. For example, PHP is dynamically-typed and interpreted. You never can really be sure if that method is used or if those parameters are the correct type. At least, not until run-time.
Thanks to the popularity of Ruby on Rails, “by convention” is the new big thing and Tapestry 5 loves it. My IntelliJ IDEA is filled with grayed method names since IDEA has no way to know if those methods or even classes are really in use. Is my onActivate method going to be called? Are those the correct parameter types? Who knows! Who cares! It’s by convention!
Annotations can help remove the gray, but then I’m just left with an IDE that thinks everything is used whether or not reality matches.
I’ve been on the fence with Tapestry 5 ever since I learned they embedded the Prototype Javascript library into it instead of being Javascript-framework neutral. I know jQuery already, do I really need to learn another Javascript library to use your Java web framework?
In theory, the standard components in Tapestry should hide Prototype and any Javascript library from me. For example, I want to display my BeanDisplay component. If a user clicks an edit button, it makes an AJAX call and loads a BeanEditForm component.
The Zone component may be able to do this, but I can’t get it to work how I want. Maybe because I’m haven’t found the right documentation. I’m left with implement the Javascript myself, but now I need to learn Prototype or learn how to safely embed jQuery and Prototype into my Tapestry 5 application.
I forget — what, exactly, is Tapestry suppose to be helping me accomplish?
I’ll admit, I’m a Tapestry newbie. However, I’m not a web newbie. I’m not a software engineer newbie. I’m sure Tapestry can be masterfully productive for some people, but I’m just not feeling it yet. Mostly, it feels like I’m fighting the framework and documentation to get it to do what I need it to do, and still failing.
Wicket? Stripes? Back to Struts 2? I don’t know.
Leave a Comment