Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta. developer.okta.com

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

A Letter to the AppFuse Community

The last AppFuse release was way back in May 2008. Many folks have asked when the next release would be ever since. Often, I've said "sometimes this quarter", but obviously, that's never happened. For that, I apologize.

There are many reasons I haven't worked on AppFuse for the past 18 months, but it mostly comes down to the fact that I didn't make time for it. The good news is I'm working on it again and will have a release out sometime this month. Unfortunately, it probably won't be a 2.1 final release, but there's so many things that've changed, I feel like a milestone release is a good idea. Here's a brief summary of changes so far:

  • Changed archetypes to include all source and tests for the "webapp" portion of the application. No more warpath plugin, merging wars and IDE issues. Using "mvn jetty:run" should work as expected.
  • Moved from Spring XML to Annotations.
  • AppFuse Light converted to Maven modules and now depends on AppFuse's backend.
  • Published easier to use archetype selection form in the QuickStart Guide.
  • Published archetype selection form for AppFuse Light. I do plan on combining these forms as soon as I figure out the best UI and instructions for users to choose AppFuse or AppFuse Light.
  • Upgraded all libraries to latest released versions (Spring 3 hasn't had a final release yet).
  • Upgraded to Tapestry 5 thanks to Serge Eby. I still need to complete tests and code generation for tests.
  • Added Compass support thanks to a patch from Shay Banon.
  • Upgraded from XFire to CXF for Web Services.
  • Moved Maven repository to Sonatype's OSS Repository Hosting for snapshots and releasing to Maven Central. There are no longer any AppFuse-specific artifacts, all are available in central.

I realize there's many full-stack frameworks that do the same thing as AppFuse with less code. Examples include Ruby on Rails, Grails, Seam, Spring Roo and the Play framework. However, there seems to be quite a few folks that continue to use AppFuse and it stills serves the community as a nice example of how to integrate frameworks. Furthermore, it helps me keep up with the latest framework releases, their quirks and issues that happen when you try to integrate them. In short, working on it helps me stay up to speed with Java open source frameworks.

For those folks that like the 1.x, Ant-based version of AppFuse, there will not be a 1.9.5 release. I know I promised it for years, but it's simply something I will not use, so I'd rather not invest my time in it. I'm sorry for lying to those that expected it.

So what's the future of AppFuse? Will it continue to integrate web frameworks with Spring and popular persistence frameworks? Possibly, but it seems more logical to align it with the types of Ajax + REST applications I'm creating these days. I'm currently thinking AppFuse 3.0 would be nice as a RESTful backend with GWT and Flex UIs. I might create the backend with CXF, but it's possible I'd use one of the frameworks mentioned above and simply leverage it to create the default features AppFuse users have come to expect.

More than anything, I'm writing this letter to let you know that the AppFuse project is not dead and you can expect a release in the near future.

Thanks for your support,

Matt

Posted in Java at Nov 04 2009, 12:17:17 AM MST 44 Comments
Comments:

Thanks Matt.

Posted by Richard Reyes on November 04, 2009 at 01:29 AM MST #

great news!

i also saw you integrated some of my patches!

i know whit what you are struggeling. for me too i hoped to spend some time on appfuse but up to now i did not do it.

hope with your new energie i will get infected to :D

nice to know: i just did a project for selling concert tickets (hope it will be release soon so i can send you the link). started up with appfuse and after two weeks the customer could start see the first screens (we work with scrum). after 4 month we are done!

appfuse helped start up and made it possible to make nice and clean code because of the framework we were (forced) into.

Posted by tibi on November 04, 2009 at 02:55 AM MST #

ps i did an struts basic project

Posted by tibi on November 04, 2009 at 03:37 AM MST #

Thanks Matt, It's really a good news.

Posted by I Wayan Saryada on November 04, 2009 at 04:07 AM MST #

thanks matt for keeping up the amazing work on appfuse! especially for beginners it is a great help with starting J2EE development.

Posted by Arthur Erdoes on November 04, 2009 at 04:33 AM MST #

[Trackback] This post was mentioned on Twitter by mraible: A Letter to the AppFuse Community: http://bit.ly/2zVWgd

Posted by uberVU - social comments on November 04, 2009 at 04:36 AM MST #

Awesome! Thank you for your hard work!

Posted by Sakuraba on November 04, 2009 at 05:53 AM MST #

Hi Matt,

Thnx for your dedication in AppFuse!! ;-))

I just would like to ask u if u think if SeamFramework could be used without Spring (or even without EJB3)?! It would be great if u add Seam in AppFuse so that we get bidirection Dependency Injection (w/ Java5 Annotations) and use the Conversation Context. (It finally would mean our complete independency to JavaServlets! :-)))

Other advantage is that we shoud use the suitable way of Hibernate's LasyLoading (in a Statefull fashion, of course) without those terrible erros in master/detail UIs. :o

It also should be great use cliente WebService as Persistency (DAO - data acess) too!!

Marvelous work!!!

Posted by Derlon on November 04, 2009 at 06:34 AM MST #

I hope appfuse 3.0 can provide an alternative solution instead of Spring, such none-spring pojo solution, ejb sulotion...etc. Because spring is not lightweight now , especially after introducing OSGI... it is more and more complicated, but at the same time, EJB is more and more simple than before.

Posted by hantsy on November 04, 2009 at 06:59 AM MST #

Oh, appfuse hav'nt been updated for a long time.

Posted by hantsy on November 04, 2009 at 07:00 AM MST #

Other idea...
1. Add glassfish support, it is so popular...there are some glassfish plugin can be used , the cargo(1.0 is released now and can be installed from the m2 repository ) and official glassfish maven plugin (from glassfish project)...
2. Provide a pragmatic DDD practice...

Posted by hantsy on November 04, 2009 at 07:07 AM MST #

@Derlon - I don't see the point in adding Seam to AppFuse when you could just use Seam instead. AppFuse's latest JSF support uses Spring annotations (@Component, @Autowired and @Scope) to get rid of the need for managed-bean definitions. The only downside is I haven't figured out a way to bind a parameter to a property (like you can with #{param.id} in a managed-bean definition). As far as independence of Java Servlets, I'm not convinced that is a good idea. I believe JSF 2.0 has somewhat seen the light and started to embrace HTTP rather than try to workaround it.

@hantsy - I still don't see the need for EJB, especially since the most popular platform for Java is Tomcat. I agree that Spring is not as lightweight as it used to be, but it is modular, so AppFuse doesn't include the whole ball of wax.

As far as GlassFish support, you should be able to easily add that to your project. I don't know that it's necessary to add it out-of-the-box, especially since I don't trust that Oracle will continue to invest in it.

Posted by Matt Raible on November 04, 2009 at 11:06 AM MST #

"However, there seems to be quite a few folks that continue to use AppFuse"

Smacks of lost hope. Though you know it, I just wanted to give you a gentle and friendly outside remainder. Your statement puts appfuse in a weak light which it is not. Most of the frameworks that you have mentioned, differ from Appfuse. The name of the game in appfuse is flexibility in fusion. Most of these frameworks don't give that flexibility. They are tightly bound to implementations.

Appfuse is a one of its kind framework which you cannot pale against others however big they may be. Thanks a ton for your effort and dedication, it is simply awesome. Number of users/contributers will only continue to grow.

Chris.

Posted by Chris on November 04, 2009 at 11:26 AM MST #

Appfuse was a great learning tool, when I started out coding applications using the spring and hibernate in 2007.

Looking forward to see the new stuff and how you implement integration to the other frame works.

I'd like to second Chris on: "Appfuse is a one of its kind framework ..." Well done!

Posted by Andreas on November 04, 2009 at 04:52 PM MST #

Flex, GWT, and one other Ajax-based alternative UI and RESTful backend. I think that is definitely the way to go for future releases. Many of our clients have been impressed by the defaults for Flex on the UI side. It is very rare possibly my the first time with a technology that we deliver the prototype UI and clients haven't asked us to make changes. That has impressed me with Flex.

Thanks for your hard work, as a reward, please do more hard work! Thanks Matt.

Posted by Najitaka on November 04, 2009 at 06:23 PM MST #

Hi Matt,

Can you please make sure so that we can generate code for domain classes that has foregine key relationships...

Appfuse is the best....
Thanks,
Sridhar

Posted by sridhar vennela on November 04, 2009 at 08:44 PM MST #

It's a good news. I have a suggestion whether model-oriented framwork can be used as data management module. such as OPENXAVA. It provides convenient way to manage data of project.

Posted by Hugh on November 05, 2009 at 03:27 AM MST #

@hantsy - spring is lighter now. They have modularized their code. so you use just what you need. Jboss / tomcat is more popular than glassfish. you should be able to deploy the war file in any application server without too much work.

Posted by sj on November 05, 2009 at 10:52 AM MST #

Thank you for the good news!

One question, please: why just not use Java 6 and, instead of CXF, the WS that are already included with it? (I've tried it, it works!).

Let's not forget that Java 5 is not supported anymore by Sun!

Posted by Marian Ion on November 06, 2009 at 11:12 AM MST #

@Marian - if you provide an example that works to expose services as SOAP and REST endpoints, I'd be happy to use that instead. In my experience, I found that Jersey (which is what I believe you're referring to) didn't work with Spring beans as well as CXF did.

http://raibledesigns.com/rd/entry/my_experience_with_java_rest

Posted by Matt Raible on November 06, 2009 at 11:19 AM MST #

I've been using Appfuse for years! Each time it's the best choice for me to start one project. Besides the list you mentioned, will there be the migration from acegi to spring security? Thank you.

Posted by Tony Luo on November 06, 2009 at 06:05 PM MST #

@Tony - glad to hear AppFuse has worked out well for you. We upgraded to Spring Security before AppFuse 2.0.2 was released. See item #10 in the release notes.

Posted by Matt Raible on November 06, 2009 at 10:40 PM MST #

I have been learnt a lot from Appfuse. Thanks for your hard work! Spring Roo looks like a pretty promising framework. Both Appfuse and Roo have their own strength. I think we get a more powerful framework if AppFuse can be converted to Spring Roo's plugins and would benefit both sides.

Posted by Anthony Yuan on November 07, 2009 at 07:06 PM MST #

>if you provide an example that works to expose services as SOAP and REST endpoints,

Unfortunately I only used SOAP - basically replacing XFire with Java 6 WS (the annotations remain the same, the only thing I did was replacing xfire-servlet.xml with sun-jaxws.xml and adding a listener in web.xml).

OK, if CXF coud expose services as REST endpoints that would be an improvement; what about using Java 6 instead of Java 5 ?

Marian

Posted by Marian on November 08, 2009 at 05:32 AM MST #

Hi matt,I am one of your fans from china. I continue to use appfuse to build j2ee projects for chinese customers since the verion of 1.8.The Appfuse framework works fine , It have saved so much time in the development of projects.We chinese java developers really thank you for what your team have done.

As a matter fact, I have be using this framework to build very large information systems in china with the concept of OO and Domain Model.With the help of open source j2ee java framework, I also find cluster-building is also easy now with or without ejb3. Thanks really.

We have integrated Flex RIA framework into appfuse 2.0.2 recently,but with flexbuilder tool of adobe company.The major components include spring blazeDS,swc files,actionscript,etc.As a fact, we use pure flex as the whole presentation level of J2EE.It works fine.

I suggest you add flex RIA framework as a major choice of RIA of the future appfuse version.

SOA is not OO way to handle business, we only consider it as a common interface between systems.

As the leading direction of java, MDA archicture and AI(artifical intelligence) will not be a long revolution in the future.

Posted by spring zhong on November 09, 2009 at 06:31 AM MST #

Another question I'd like to know: We have found xhtml files cannot mix with jsp, html file together. They are not compatible. So What we did is to suggest now not to use xhtml files in the projects yet.

Could it be another error of sun's jsf standard. Or any special reasons to use this special kind of xhmtl format?

Posted by spring zhong on November 09, 2009 at 07:30 AM MST #

@Spring - I would not recommend using JSP with JSF. The XHTML files you see are from Facelets, which has become the standard template framework for JSF 2.

For information on why JSP doesn't work well with JSF, see Improving JSF by Dumping JSP.

For more information on Facelets, see Facelets fits JSF like a glove.

Posted by Matt Raible on November 09, 2009 at 09:49 AM MST #

Matt,

Just a comment on how glad I am to see AppFuse active again and to let you know how great a learning tool it has been for me personally. Please keep up the great work. A lot of people really appreciate it.

Jim

Posted by Jim on November 09, 2009 at 01:25 PM MST #

Matt, thanks this article at URL of http://onjava.com/pub/a/onjava/2004/06/09/jsf.html which you provided. After read this article carefully, I buy the concept of XHTML files and JSF1.2 now. That's a real great relief of my brain. Thanks a lot,I am still a learner yet. But at lease xhtml files will be used in our projects in the future. I don't worry compatible problems any more. It looks like JSP will be history now though countless websites still use it.

Now I understand ajax things like viewhandler things in facelets,iceface,richface such things.

Have you consider the possibility of not just view appfuse as an only web framework,but construt the future of the appfuse as a total j2ee solution for enterprise.

By integrating such opensource framework like activemq of jms,and jetspeed of portal,flex of RIA,spring 3.0,etc. Appfuse will be a great masterpiece in the future.And it will greatly release our pain in the path to build information system for our companys.

I can help if it is permitted.

Posted by spring zhong on November 10, 2009 at 12:09 AM MST #

Hey Matt,

Thanks for the note; RESTful services and GWT and / or flex sounds awesome, and good news on the CXF front too, I know a number of us having been interested in that.

I also have to echo Chris' comments... I've looked at Seam (which looks like it borrowed a lot of ideas from you, BTW) and a few others and I still prefer appfuse, it is flexibility in fusion and I think as well, one of a kind.

Good work Matt, thanks and let me know if you need any help!

--jack

Posted by Jack on November 10, 2009 at 12:23 PM MST #

@jack

I would prefer to use FLEX instead of GWT. The demo of GWT is ugly that really give people bad feeling at the first glance.

I have being using Flex. Flex has a good architecture for GUI which borrows a lot of good ideas from windows of microsoft. For example MDI windows of FLEX is a very easy way that can be used to build portlets-like interface for customers.The tool to build application by flex is also very easy, using flex builder tool is likely to use RAP tool like lazarus or delphi such things before, most customers and trainees prefer to use the easer tool to build GUI applications.They don't like the sophiscated way to build application.

The only disadvantage of flex is that a flash plugin shoud be installed in the browser.But 90% of browsers have install this plugin in the world now.

@matt Could FlexUnit be used in AppGen or Spring Roo to generate related sources of the future appfuse.

Posted by spring zhong on November 10, 2009 at 06:50 PM MST #

Hi Matt, Thanks for your good news!

Posted by Sunny Mac on November 16, 2009 at 02:23 AM MST #

good job! keep moving!

Posted by johnydz on November 16, 2009 at 09:12 PM MST #

[Trackback] The AppFuse Team is pleased to announce the first milestone release of AppFuse 2.1. This release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are Hibernate , Spring and Tapestry 5.

Posted by Raible Designs on November 19, 2009 at 09:26 PM MST #

Matt,

I was reading a book on JBoss Drools by Paul Browne and saw a reference to AppFuse. There was even a screenshot of the AppFuse login page. (Page 227). Are there any plans to implement Drools in the next version of AppFuse?

Jim

Posted by Jim on November 21, 2009 at 02:44 PM MST #

Jim - there are no current plans to implement Drools in AppFuse. Do you have a use case that you think would make sense for Drools in AppFuse?

Posted by Matt Raible on November 21, 2009 at 02:53 PM MST #

Hi Matt,

Do you have any plans for GWT with Appfuse? if yes are you going to use MVP patterns.

Thanks,
Sridhar

Posted by sridhar on November 21, 2009 at 03:28 PM MST #

Matt,

I actually am writing a ticketing application based on, of course, AppFuse. I implemented Drools and maintain the rules within the database. I am hoping it will be a way to make changes without bringing the applications down. I just started working with it so I don't know how far I can take but if I glean anything of value out of this exercise, I will let you know.

Jim

Posted by Jim on November 21, 2009 at 04:23 PM MST #

@Sridhar - Yes, I plan on adding GWT to AppFuse and I plan on using MVP. Quote from the post above:

I'm currently thinking AppFuse 3.0 would be nice as a RESTful backend with GWT and Flex UIs.

You also might want to checkout a post I wrote on GWT and AppFuse. Googling around shows there's a couple articles too.

Posted by Matt Raible on November 21, 2009 at 04:31 PM MST #

Thanks a million... Can't wait..

Posted by sridhar on November 21, 2009 at 09:31 PM MST #

Thanks for all the hard work and continuing to keep this fantastic project updated. I needed to create a quick Java-based site and Appfuse helped me get through some of the pieces/parts I had not previously used. Your efforts are greatly appreciated!!

Posted by elliot on November 25, 2009 at 10:23 PM MST #

Great! I like Ibatis DAO, instead hibernate, How to integrate ibatis DAO?

Posted by 203.126.130.140 on February 18, 2010 at 08:41 PM MST #

iBATIS is integrated by default. See the using iBATIS page for more information.

Posted by Matt Raible on February 18, 2010 at 08:43 PM MST #

Thanks Matt for all your hard-work and sharing with the community :)

Posted by Senthil on May 17, 2011 at 05:58 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed