Seven simple reasons to use AppFuse for Java Web Apps

Discussions

News: Seven simple reasons to use AppFuse for Java Web Apps

  1. 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. This article show you how AppFuse uses open source tools to help you develop Web applications quickly and efficiently. AppFuse's community is healthy and happy -- and one of the few places where users of different Web frameworks actually get along. It's written by Matt Raible, the author of AppFuse, so it's really a clear explanation of the reasoning behind AppFuse itself.
    AppFuse is an open source project and application that uses open source tools built on the Java platform to help you develop Web applications quickly and efficiently. I originally developed it to eliminate the ramp-up time I often found when building new Web applications for customers. At its core, AppFuse is a project skeleton, similar to the one that's created by your IDE when you click through a wizard to create a new Web project. When you create a project with AppFuse, it prompts you for the open source frameworks you'd like to use and then creates your project. It uses Ant to drive testing, code generation, compilation, and deployment. It provides your directory and package structure, as well as the libraries you'll need to develop a Java language-based Web application. Unlike the products of most "new project" wizards, AppFuse-created projects contain a number of classes and files from the very beginning. These files are used to implement features, but they also serve as examples for you when you're developing your application. By using AppFuse to start new projects, it's possible to eliminate the usual first week or two of development time. You don't have to worry about configuring open source frameworks together because that's already done for you. Your project is preconfigured to talk to a database, deploy in an application server, and authenticate users. There's no need for you to implement security features because they're already integrated. When I first developed AppFuse, it only supported Struts and Hibernate. Over the years, I've found better Web frameworks than Struts, so I added options for them as well. Today, AppFuse supports Hibernate or iBATIS as persistence frameworks. For the Web framework, you can use JavaServer Faces (JSF), Spring MVC, Struts, Tapestry, or WebWork. AppFuse comes out of the box with features that many applications need, including:
    • Authentication and authorization
    • User management
    • Remember Me (which saves your login information so you don't have to log in every time)
    • Password reminder
    • Signup and registration
    • SSL switching
    • E-mail
    • URL rewriting
    • Skinability
    • Page decoration
    • Templated layout
    • File upload
    This out-of-the-box functionality is one of the main things that separate AppFuse from the other CRUD generation frameworks (from create, retrieve, update and delete), including Ruby on Rails, Trails, and Grails. The aforementioned frameworks, as well as AppFuse, allow you to generate master/detail pages from database tables or existing model objects.
    The reasons are:
    1. Testing
    2. Integration
    3. Automation
    4. Security features and extensibility
    5. Code generation with AppGen
    6. Documentation
    7. Community
    What do you think of AppFuse? It's open source, so there's more or less an open invitation to add features or contribute to the project, as many already have; are you a user of the project? What strengths and weaknesses do you see in it? Message was edited by: joeo@enigmastation.com

    Threaded Messages (10)

  2. Passive code generator[ Go to top ]

    Personally I prefer active code generators over passive code generators. It's true. Passive code generators help to start up with a new application (or any other software element), but we (the programmers) need to work with the resulting code for ever. The active code generators allow to the programmer working always with something more simpler. Other way is working without using code generators at all, but with the same effect, using an higher level of abstraction to leave the framework simple. OpenXava or MDA solutions are examples of active code generators, romaframework or nakedobjects are examples of higher level of abstraction without code generation. I like more the approachs of these frameworks over AppFuse. Of course, passive code generators can be useful in some circumstances. Javier Paniza
  3. Re: Passive code generator[ Go to top ]

    Personally I prefer active code generators over passive code generators.
    From my perspective the major value in AppFuse is not about code generation. One of the major arguments listed again and again against the Java community is that even if one component is easy to configure, use and deploy, you still have to glue together lots of disparate toolkits at the start of every project. Hell, even just getting Hibernate up and running with a viable session/transaction pattern is work given all the dependent libraries. Then setting up a war build, and your favorite web framework, plus maybe spring, maybe acegi or some other security etc. Yikes, it's a lot of setup cost! I like that AppFuse is solving this problem. -Tim Fennell Stripes: Because web development should just be easier.
  4. Re: Passive code generator[ Go to top ]

    Really though, how often do you setup a new project versus working on an existing one? And it doesn't even take a day to get setup. If your project is only going to take a month or two, then maybe there's value in cutting that day down to a couple hours . Most of my projects live for years, so I just don't see any real value in things like AppFuse. And on those rare occassions when I have a new project to setup, I'd much rather use another project of mine as a starting point.
  5. Stripes and Appfuse[ Go to top ]

    If you had an example that integrated with Appfuse I think your framework would gain more traction.
  6. I only use Appfuse to learn how to use different technologies together. I don't think I'll use it to build an application.
  7. Good Learning Framework[ Go to top ]

    I only use Appfuse to learn how to use different technologies together. I don't think I'll use it to build an application.
    +1. Its useful for small projects where you are starting from scratch and you are using everything it provides. I think its one of the better frameworks for getting started with all the different technologies in the different tiers in the JEE world.
  8. I'm glad that i don't need to bang my head against a bunch of documents or articles to achieve a "best practice" solution,because Appfuse does for me.Thanks Appfuse ,Thanks Matt Raible
  9. I'm glad that i don't need to bang my head against a bunch of documents or articles to achieve a "best practice" solution,because Appfuse does for me.Thanks Appfuse ,Thanks Matt Raible
    Feel exactly the same than you. In our company, AppFuse is use to show how to cope with the best practices of building a web application without the burden of having to : 1) write a lot of XML files, 2) build our own framework once again... It is also use in many of our fix-rated projects for clients like french army or EDF (main electricity company in France). Thank you with much, Matt ! Your job is of great value.
  10. A vote for Stripes/Appfuse[ Go to top ]

    The Stripes framework would make a great Appfuse candidate. It's similarity to Struts provide an easy port and learning curve for the large Struts community out there. Its centralization of forms, validation, and flow, a low configuration overhead, and strong type conversion put it on par with any Java MVC front-end out there. With the DAO, persistence, and auto-crud features Appfuse provides I think Stripes could compete head on with full stack solutions like Seam. Matt??????
  11. Re: A vote for Stripes/Appfuse[ Go to top ]

    Stripes is on our radar. Specifically, it's listed on our roadmap and we've had discussions with Tim on the dev list.