Wish there was an Appfuse Lite|Decaf|101 version
Posted : April 30, 2004 at 6:21 pm [America/Los_Angeles]
Matt’s Appfuse is indeed an extremely impressive way for individuals to get up-to-speed with many of the buzzwords in Java landscape. I think I will be fairly accurate if I said that the majority of Appfuse users (and there are quite a few) today use it to learn from a working application which uses Struts/Tiles, Spring, Hibernate or iBATIS and many many more new and cutting-edge APIs and Tools. Ironically, the very things that attracts users like myself might sometimes hinder its adoption in some circles of java programming community.
Before I comment on my title, let’s take a look at the list of APIs and tools Matt brilliantly pulls together in Appfuse:
Standards, APIs/Frameworks (code that is used by the Appfuse during runtime):
- Struts/Tiles
- JSP 1.2/2.x and JSTL
- Spring
- iBATIS or Hibernate
- Clickstream
- Country Tag
- State Tag
- Display Tag
- Struts Menu
- MySQL or PostgreSQL JDBC drivers
Code generation, TDD and Build tools:
- Ant-contrib
- Canoo Webtest
- Checkstyle
- DBUnit
- Jakarta Cactus
- JUnit & JUnitDoclet
- Java2Html
- PMD
- StrutsTestCase
- XDoclet
- Maven (I think)
If you have been on the sidelines “reading” more than “implementing” or “using” some of these tools or APIs, this would appear to a pretty daunting list to work with and can get overwhelming in a hurry.
And that brings me to this idea of a “decaf” Appfuse. Ideally, it would be nice to do have a new ant task in Appfuse which works as follows:
ant new -Dapp.flavor=decaf or 101 or lite|all -Dapp.name=yourApp -Ddb.name=database
This will output a folder called ‘yourApp’ (or whatever name you chose) which will do all the necessary code generation (via xdoclet) along with the usual dose of Ant ‘magic’. The result will be a directory structure with nothing but the runtime code necessary for core application functionality ready to ‘ant war’ up. No white-box or black-box testing or additional tools not directly related to the runtime functionality of the application will be enabled in the decaf option. I worked through Appfuse the hard way and now that I have done it, I realize that it is indeed a nice little implementation to use as a baseline for you next project. Just start with the ‘decaf’ version, and then as you get comfortable with Canoo or StrutsTestCase, keep adding them to your portfolio. I am sure Matt must have did it this way himself 
Matt, hope you’re tuned in and listening
If so, what do you think?
- Anand
Category: Application Development |
9 Comments »
Heh, there is an AppFuse Lite - I just haven’t released it yet. Stay tuned.
Posted by: Matt Raible at April 30, 2004 @ 8:54 pm
Nice..:-)
Posted by: Anand Sharma at May 1, 2004 @ 9:02 am
I appreciate the work he has done on his project.
But, I would like appFuse minus -
# Country Tag
# State Tag
# Display Tag
# Struts Menu
# Struts/Tiles
# JSP 1.2/2.x and JSTL
# StrutsTestCase
but plus
Webwork/XWork
Velocity
Sitemesh
I guess its hard to make everyone happy
Posted by: Matthew Payne at July 9, 2004 @ 7:48 pm
Here you go: AppFuse Light.
Matthew - the Country/State Tags will be gone in the next release b/c they require a $75 license for production use. The WebWork version will remove Struts/Tiles and StrutsTestCase. It will also use SiteMesh - but I’ll probably stick with JSPs and my two favorite tags: DisplayTag and Struts Menu. It’s simply not possible to get this same functionality (yet) using a Velocity-only solution. BTW, here’s a here howto for replacing JSPs with Velocity.
I’ll definitely be doing a Velocity version of MyUsers for Spring Live, but it’s unlikely for AppFuse. Unless I could figure out how to make the DisplayTag and Struts Menu work natively with Velocity - then I’d be more than happy to do a Velocity-only version!
Posted by: Matt Raible at July 9, 2004 @ 8:19 pm
Matt/Matthew:
Thanks for your comments. Frankly, I too would like a WW2/Velocity based AppFuse Light and looks like Matt has already done it. Nice!
Will definitely check out AppFuse Light early next week and share my findings.
Thanks for all the good work that you’ve done Matt with AppFuse and cannot wait to get my hands on your Spring Live book. I sure hope you don’t get too carried away in the book with using Spring as a full-blown MVC framework. I’d rather see a bunch of examples of how to use Spring in the context of another MVC such as WW2.
Either way, I am sure you will do a great job with the book!!
- Anand
Posted by: Anand Sharma at July 10, 2004 @ 12:46 am
Unfortunately, AppFuse Light does not have WW2 or Velocity integration (yet). My goal with MVC frameworks and Spring Live is as follows:
1. Show how to use Spring with Struts (Chapter 2).
2. Show how to use Spring MVC with Spring (Chapter 4).
3. Show how to do page decoration, validation, e-mail and file-upload with Spring (Chapter 5).
All of this is in the current ERP (Chapters 1-5). In Chapter 6, I’ll demonstrate how to use Velocity and FreeMarker with Spring MVC. Sidenote: Even though I think these are great technologies, I wish there was a simple way to do paging and sorting of lists (like the displaytag). The rest of the chapters cover other things, but not WW integration. I’ll probably won’t do a chapter on that until after 1.0 is released.
Here’s a preliminary summary for that chapter (not in the current TOC):
Integrating Spring with WebWork, Tapestry and JSF
This chapter explains how to hook Spring’s middle tier into WebWork, Tapestry and JSF. It will be similar to Chapter 4 (where Struts is converted to Spring). You will learn how to do page decoration, validation and exception handling in each framework as well.
Hopefully this chapter will end up as a tutorial on how to use each framework with Spring. Of course, each framework might deserve their own chapter too. If you purchase a subscription, you can easily influence what I cover in this chapter (and others).
Posted by: Matt Raible at July 10, 2004 @ 9:35 am
Subscribed and blogged about it this morning
http://indrayam.com/archives/application_development/000374.php
Thanks and keep up the good work Matt!
- Anand
Posted by: Anand Sharma at July 10, 2004 @ 9:47 am
can you try and demonstrate the use of “MAVEN” + “JUNIT” + “JUNITDOCLET” against a simple java program — i need an example and maven.xml + project.xml to show me how it is done.
i need it to make the test but not from inside an ide, but outside for example win2000/dos —> cmd…
thank you
Posted by: meir abramson at October 1, 2004 @ 2:39 pm
i miss u
Posted by: pokiri at July 13, 2006 @ 4:11 am
Leave a Comment