7 simple reasons to use AppFuse
IBM developerWorks published my "Seven simple reasons to use AppFuse" article today. Here's a summary:
Getting started with open source tools for the Java™ platform such as Spring, Hibernate, or MySQL can be difficult. Throw in Ant or Maven, a little Ajax with DWR, and a Web framework -- say, JSF -- and you're up to your eyeballs just trying to configure your application. AppFuse removes the pain of integrating open source projects. It also makes testing a first-class citizen, allows you to generate your entire UI from database tables, and supports Web services with XFire. Furthermore, AppFuse's community is healthy and happy -- and one of the few places where users of different Web frameworks actually get along.
While you're there, you might be interested in reading the "Introduction to Spring 2 and JPA" tutorial. I don't know if we'll get JPA support into AppFuse 2.0, but it's certainly a possibility.
As far as AppFuse 2.0, here's the current structure I've started on for Maven 2:
appfuse - data - hibernate - ibatis - service - pom.xml - src - web - jsf - spring - struts - tapestry
After code is moved into the directory structure above (or completely
re-written), I'd like to move to working on creating single module
archetypes and multi-project archetypes (data, service, web) with Maven 2.
After getting the Maven 2 structure checked in, hopefully we can start looking at replacing AppGen. Scott Ryan has done a fair amount of work on this so far with his AppFuse Maven Plugin.
I plan on documenting the plan of attack and milestone features for 2.0 sometime this week.
Update: I started working on the Maven 2 conversion last night. The above structure has changed slightly. Now there's a project in data and web (notice the pom.xml and src in these directories). These projects will contain the classes/files that are common to their sub-projects. The fact that these projects even exist will likely be transparent to the end user.
Posted by JR on August 08, 2006 at 01:57 PM MDT #
One of the things we hope to enable in AppFuse 2.0 is for framework authors to contribute. By having each framework isolated from each other, hopefully it'll be easier to change to do things the best way for that particular framework. On my personal radar: Stripes and Wicket support.
Posted by Matt Raible on August 08, 2006 at 02:03 PM MDT #
Posted by Srgjan Srepfler on August 08, 2006 at 05:00 PM MDT #
Posted by Dmitri Colebatch on August 08, 2006 at 05:02 PM MDT #
Posted by Srgjan Srepfler on August 08, 2006 at 05:25 PM MDT #
Dmitri - I agree. I've said for the longest time that AppFuse isn't for Rookies. However, it does simplify setup so much for people new to Java development, that we find a lot of newbies to Java on the mailing list. I'm starting to reverse my attitude on "not for rookies" and instead try to embrace rookies and show them how to use all these frameworks. Granted, it's tough to see the benefit of frameworks when you haven't developed without them, but we can't tell people to go away just because they don't understand the details of the underlying architecture. In fact, the best thing we can do is likely write good documentation so users understand what they need to know in order to be productive. Isn't this what Rails does?
Posted by Matt Raible on August 08, 2006 at 05:27 PM MDT #
Posted by Ryan on August 09, 2006 at 07:34 AM MDT #
Posted by Matt Raible on August 09, 2006 at 07:39 AM MDT #
Posted by Erik Weibust on August 09, 2006 at 01:00 PM MDT #
As far as why I'm moving from Ant to Maven? Here's a quote:
"The main reason that AppFuse uses Ant over Maven is speed."
I still think that Maven 1 sucks because it's slow (although it's much better now that I have a MacBook Pro). However, Maven 2 is as fast, if not faster than Ant. Also, it's the closest thing us Java developers have to RubyGems. If you're still not convinced, check out the Maven 2 Plugin for Eclipse. I still have dreams of supporting Ant in a release beyond 2.0, but don't know if it'll be worth the effort.
Just like AppFuse simplified using Ant, we hope to make Maven simpler to use as well. ;-)
Posted by Matt Raible on August 09, 2006 at 01:43 PM MDT #
Posted by Srgjan Srepfler on August 09, 2006 at 02:17 PM MDT #
Posted by Ken Yee on August 09, 2006 at 02:50 PM MDT #
Posted by Matt Raible on August 09, 2006 at 03:10 PM MDT #
It maybe a dumb question, but I will ask it anyway ;)
Appfuse2 would be the main folder? Or it will be in, for example, "src/main/java/org/appfuse2"?
Cause it's strange to find a maven project with that kind of structure (it's almost the same structure that's now in appfuse with ant).
Nice to see that the maven step has come ;-).
Posted by Orlando on August 09, 2006 at 06:07 PM MDT #
The dream with AppFuse 2.0 is that it's an archetype, with only a couple AppFuse dependencies that pull in the other frameworks. For example, here's a sample pom.xml for a Hibernate + Spring + Struts 2 application.
From there, you'll create your classes like you do now (extending AppFuse base classes). The "struts" dependency is actually a WAR that will overlay your WAR and include all the default features in AppFuse.
In a future release, hopefully we can create a plugin API that allows you to add and remove features.
Posted by Matt Raible on August 09, 2006 at 07:13 PM MDT #
Posted by John Schwitz on August 10, 2006 at 12:56 PM MDT #
Posted by Remy Charmoz on December 07, 2007 at 02:37 PM MST #