|Developer(s)||Matt Raible and several other developers|
3.5.0 / February 20, 2015
|Type||web application framework|
|License||Apache License 2.0|
AppFuse is an open-source Java EE web application framework. It is designed for quick and easy start up of development, while also using open-source Java technologies such as Spring Framework, Hibernate and Struts. AppFuse was originally created by Matt Raible, who wanted to eliminate the "ramp up" time in building new web applications.
AppFuse provides a project skeleton, similar to the one that's created by an IDE when one clicks through a "new web project" wizard. AppFuse 1.x uses Ant to create the project, as well as build/test/deploy it, whereas AppFuse 2.x uses Maven 2 for these tasks. IDE support was improved in 2.0 by leveraging Maven plugins to generate IDE project files. AppFuse 1.x uses XDoclet and JDK 1.4+.
Unlike other "new project" wizards, the AppFuse wizard creates a number of additional classes and files that implement features, but also serve as examples for the developer. The project is pre-configured to talk to a database, to deploy in an appserver, and to allow logging in.
When AppFuse was first developed, it only supported Struts and Hibernate. In version 2.x, it supports Hibernate, iBATIS or JPA as persistence frameworks. For implementing the MVC model, AppFuse is compatible with JSF, Spring MVC, Struts 2 or Tapestry.
Features integrated into AppFuse includes the following:
- Authentication and Authorization
- User Management
- Remember Me (saving your login information so you don't have to log in every time)
- Password Reminder
- SSL Switching
- URL rewriting
- Page Decoration
- Templated Layout
- File Upload
This out-of-the-box functionality is one of the main features in AppFuse that separates it from the other "CRUD Generation" frameworks, including Ruby on Rails and Grails. AppFuse is similar to Spring Roo in that both provide rapid productivity solutions for the Java programming language (whereas Grails and Ruby on Rails focus on other programming languages). The aforementioned frameworks, as well as AppFuse, allow you to create master/detail pages from database tables or existing model objects.