Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

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.

Should we change AppFuse to be Struts 2-specific?

Dusty recently posted an interesting idea to the AppFuse developers mailing list:

After thinking/coding/reading for a while I think the more interesting task is: Retool AppFuse to be one or more Struts2 plugins based on various higher level app patterns. (AppFuse Facebook, AppFuse Employee DB, AppFuse Blog, AppFuse Basic LDAP, AppFuse Basic Crowd).

This all comes from the fact, that I have been wanting to refactor the AppFuse web layer for Struts. One of the interesting aspects of AppFuse is that it works pretty much the same across all its web frameworks. It does so with some lowest common denominator abstractions that can be ported and look and work the same across frameworks. I have picked my tool(s): Struts 2 and Ruby On Rails when I want to pretend I am young again. I know Spring MVC, JSF, etc. but I have no desire to build significant apps on those platforms. It's not because they suck and Struts2 rules, it is because I know Struts 2 the best, I am most efficient there and it provides everything I need to build great webapps (Let's not devolve to a framework debate). So, I would rather have a more Struts 2-specific web stack, that really leverages conventions born and raised there. The nice thing about the Struts 2 web stack is that it is complemented nicely by AppFuse's data/service layer, since unlike Grails or Rails, Struts 2 has no data or service layer. [Read More »]

Seems like a good idea to me. What do you think?

Someday I'd like to come up with a "compatibility test" that allows others to improve upon the ideas in AppFuse and develop their stacks independently. A suite of Selenium tests that require extensionless URLs might be a good start.

Posted in Java at May 29 2008, 08:29:44 AM MDT 11 Comments
Comments:

After thinking/coding/reading for a while I think the
more interesting task is: Retool AppFuse to be one or more
Struts2 plugins based on various higher level app patterns.
(AppFuse Facebook, AppFuse Employee DB, AppFuse Blog,
AppFuse Basic LDAP, AppFuse Basic Crowd).
[...]
Someday I'd like to come up with a "compatibility test" that
allows others to improve upon the ideas in AppFuse and develop
their stacks independently. A suite of Selenium tests that require
extensionless URLs might be a good start.
I don't really know what to say, I personally have read this post about 6 times and still am not sure what exactly the target is, and what the effects or end result would be. Please could you elaborate on this? Thanks, Val.

Posted by 217.194.34.103 on May 29, 2008 at 09:56 AM MDT #

I agree it's confusing. The last paragraph contains some thoughts of mine that are disconnected from the first idea and question. Basically, I think if I as to come up with a set of features and compatibility test for AppFuse, it would allow the first thing to happen - where we evolved AppFuse to take advantage of Struts 2 more. When you start talking about specific applications (AppFuse Facebook, AppFuse Blog, etc.), I agree that a compatibility test for core features makes no sense.

Posted by Matt Raible on May 29, 2008 at 10:15 AM MDT #

I'm not so sure that Dusty's idea replaces Appfuse, so much as adds to it. There's a need for Appfuse for those that are studying/comparing web frameworks - or that want a boost when starting an application.

But there's a lot left unsaid by Appfuse that are still the core parts of any application. And more and more of us are looking at specialized application types such as FaceBook, Blogs (one of my current apps needs an integrated blog now), etc.

For example, Appfuse' registration/signup is not at all like the signup process on most web apps you will find out there - i.e. you signup, and email gets sent, your click on it to activate the account. I can understand why that is not a part of appfuse as it would have to be done in all the frameworks. But it would have real value if it could be done as a plugin or packaged in a similar manner.

With all the rev's going on in all of the frameworks, keeping up can be tough - Matt and crew have done an admirable job. I cannot believe the hours I see them spending answering the same noobie questions patiently, over and over. Thanks!

I'm not saying to drop Appfuse, but maybe concentrating on some application plugins for Struts2 as Dusty suggests would be a good thing.

Posted by Richard on May 29, 2008 at 11:16 AM MDT #

I'm not sure how you could make this portable as well.

It'd be great to have appfuse have a "make me a site" wizard that lets you do checkboxes for:

  • instant registration
  • registration with approval
  • registration with email activation (and approval)
  • LDAP user accounts
  • blogs
  • content management w/ HTML editor
  • forums
  • full text search

etc. but this is far beyond what the intended goal of AppFuse was (to jumpstart you into a web framework w/ a reasonable layout of files/directories and build files). This would be more of a web site jumpstart feature on top of AppFuse, but I have no idea how you'd be able to maintain all the features across all the frameworks AppFuse supports. It'd probably be a royal PITA :-P

On the other hand, this would also give you an idea of how well each of the frameworks handle optional features which would be enlightening for those of us who have enjoyed your framework comparos...

Posted by Ken on May 29, 2008 at 11:42 AM MDT #

Having spent a lot of development time with Rails in the last two years I must say that Java is far behind when developing web apps.

IMHO it would be a good idea to concentrate on one framework because one thing I like about Rails is that it is "optionated software". Some clever guys did all the work and provided a full featured stack for me ready to get started.

The Java world needs something like Rails but I doubt it can be Grails. Grails uses Spring and Spring is today what EJB was 6 years ago. On the one hand it's brilliant, but on the other it's bloated and too academic (look at all these weird class and interface names).

I'm writing an application using Spring and Struts2 at the moment and it's so slooooooooooooooow to develop with compared to Rails. But having used SpringMVC in the last large project, I'm glad to return to WebWork (Struts2).

AppFuse is one of the best things ever happend in Java land. It saves me so much time. So - thanks Matt - you're brilliant!

Posted by Lars Fischer on May 29, 2008 at 01:53 PM MDT #

If Appfuse Lite kicks around I wouldn't be effected.

We spent a year working with Struts 2, and at that point decided to change to Wicket.

There has been no looking back.

I hope I never have to use Struts 2 again.

(the answer to the simple maths question is 42 ;) - that gave me a smile)

Posted by Ned Collyer on May 29, 2008 at 05:56 PM MDT #

Ned - what do you mean by "kicks around"? It sounds like you're not an AppFuse user and your main opinion is you prefer Wicket over Struts 2.

Posted by Matt Raible on May 29, 2008 at 06:08 PM MDT #

Hi Matt, I'm all for the idea of higher level app patterns, which is long overdue in the Java community (of course, I might not be searching hard enough. :) I'm pretty sure there's a steady demand for high level patterns such as Appfuse EmployeeDB and Appfuse InventoryDB, which will be really useful for rapid prototyping and a faster kick-start.

Posted by Sing Chyun on May 29, 2008 at 09:15 PM MDT #

>>Ned - what do you mean by "kicks around"? It sounds like you're not an
>>AppFuse user and your main opinion is you prefer Wicket over Struts 2.

Kicks around = stays :)

It's not that I prefer wicket really.. its that i do not prefer struts to the alternatives.

Given the choice, I would use SpringMVC over Struts2, or delve into Tapestry.

So tooling for those other technologies would be much more useful for me than tooling/patterns for struts.

I have a distaste for Struts 2.

Last time I mentioned my frustration (on this blog), a Jira bug in struts got a lot of attention - merely because I mentioned it here where the public could see.

Anyway, a few months later it got closed because it was too difficult to fix. This was simple handling of checkbox lists - and "unchecking" them if the backing object was in the session.

That approach annoys me.

All personal opinion of course.

Posted by 202.171.174.101 on June 02, 2008 at 05:18 PM MDT #

Matt, thanks for the clarification.
Hmmm, I suppose the title "Should we change AppFuse to be Struts 2-specific?" expresses in fact the essence. Therefore my plain and totally biased opinion: no.
Val.

Posted by 217.194.34.103 on June 04, 2008 at 03:09 AM MDT #

I'm late to the party, but it would rock if you went vertical (features) instead of the current horizontal strategy (few features across multiple web frameworks). As one of the guys above said, being opinionated has advantages. The fact that you want to do it in Struts2 is hot.

Posted by Tony on November 16, 2008 at 11:37 PM MST #

Post a Comment:
  • HTML Syntax: Allowed