AppFuse is an open source project and application that uses open source tools built on the Java platform to help us develop WEB applications quickly and efficiently. I originally developed it to reduce the unnecessary time it takes to build a new WEB application for a customer. At the core, AppFuse is a skeleton of the project, similar to what the IDE creates when you create a new Web project through a wizard. When we create a project using AppFuse, it prompts us to use the open source framework before creating the project. It uses ANT to drive tests, code generation, compilation, and deployment. It provides a directory and package structure, as well as libraries needed to develop Java-language based WEB applications.
Unlike most new project wizards, AppFuse creates projects that contain many classes and files from the very beginning. These files are used to implement features, but they are also used as examples when you develop your application. By using AppFuse to start a new project, we can usually reduce the development time of one or a week. We don't have to worry about how to configure the Open source framework, because it's all done. Our projects have been configured in advance to interact with the database, which will be deployed to the application server and authenticated to the user. We don't have to implement security features because it's already integrated.
When I first developed AppFuse, it only supported Struts and Hibernate. After several years of effort, I found a better web framework than Struts, so I added the options for these web frameworks. AppFuse can now support Hibernate or IBATIS as a persistence framework. For WEB frameworks, we can use JavaServer Faces (JSF), Spring MVC, Struts, Tapestry, or webwork.
AppFuse provides a number of features that are required by applications, including:
Certification and authorization
User Management
Remember Me (This saves your login information so that you don't have to log in every time)
Password reminder
Registration and Registration
SSL Conversion
E-Mail
URL rewrite
Skin
Page decoration
Templated layout
File Upload
This "out-of-the-box" feature is one of the differences between AppFuse and other crud-generation frameworks (Crud takes the English first letter to create, retrieve, update, and delete several operations), including Ruby on Rails, trails, and Grails. The frameworks mentioned above, as well as AppFuse, allow us to generate master/detail pages from database tables or existing model objects.
Figure 1 illustrates the conceptual design of a typical AppFuse application:
Figure 1. A typical AppFuse application