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.

The Verge Web Framework

After reading this post on the Server Side, I'd hate to be the guy who invented Verge. He's getting pounded like a rabbit during mating season!

Personally, I don't think there's anything wrong with another web framework. Competition is good. The funny thing is that I've never had a need to migrate away from Struts. I do admit that the IoC (Inversion of Control) in WebWork looks cool, but I don't have a need. After reading most of Rod Johnson's J2EE Design and Development, I do understand IoC (I didn't have a clue before), but I still don't see how I need it. I've never run into a problem with Struts that I couldn't solve. Maybe it helps that I've written my own app to make Struts development simpler.

Even though I do like Struts, and I do find it easy to develop with, I also plan on stuffing my head in a couple of books and learning all about Spring, Tapestry and WebWork. Why? Mainly because I'm a fool and I can't be happy just sitting on the couch and watching TV (which would probably help my blood pressure and make my family happier). I'm a fool because I'd rather learn than relax. Back to the point - why do I want to learn these "big 3?" To be honest, it's primarily because some big names (and folks I'd consider friends) are saying they're cool and they'll make my job easier. If only I wasn't so easily influenced...

What I hate about all of this is that as soon as I decide to integrate Spring into AppFuse, it becomes more complicated. Yes, an XML BeanFactory file is more complicated than Interface i = new InterfaceImpl(), especially for newbies.

Furthermore, I'm willing to bet that I'll end up writing workarounds for issues I encounter in Tapestry and WebWork. I'll even put my money where my mouth is - if your framework doesn't require me to write any workarounds, I'll donate $100 to the project. Heck, if it really is that cool - I'll donate money regardless of workarounds.

The worst part is that there's really no reason to convert my Struts webapp to these newer, cooler frameworks. About the only good reason is so I can say "I know the XXX Framework." I doubt XXX Framework will make anything easier, but it certainly might make my webapp a whole lot cooler. wink

Posted in Java at Jan 12 2004, 03:57:49 PM MST 13 Comments
Comments:

I've said it before, and no doubt I'll say it again, but the web framework issue is far from being solved. What do I mean by that? Well, none of the ones on the market either: a.) Solve all the problems b.) Have enough user base for people to believe a Strust came along, become the defacto standard (with good reason - there was fig all out there at the time), spawned in large part the JSF specification. Struts isn't great, but I agree with you I've not seen in webwork enough benifits to consider moving existing applications. As for WebWork having IoC, I think I'm right in saying it is only Type 1 IoC which doesn't have many of the advantages of type 2 and 3 IoC as implemented by Spring and PicoContaienr respectively. IoC containers are great - I'd agree that for simplistic code IoC can seem more complex (at least in the short term) but for less trivial examples it really can pay off (I have an article coming out soon comparing Spirng and PicoContainer which might be of interest). That said Spring's web framework is far too fiddly to setup wtih all the configuration you have to do - they seem to of concentrated too much on making it flexible, and not enough on making it useable!

Posted by Sam Newman on January 13, 2004 at 01:11 AM MST #

XWork IoC (the heart of WebWork2) is actually Type2 Ioc... And we've got good integration with both Spring and Picocontainer. In fact, Atlassian is building their next app, Confluence, completely on WW2 and Spring.

Posted by Jason Carreira on January 13, 2004 at 03:10 AM MST #

Jason you are such a troll. Matt, I am using spring,struts, jsf and hibernate and the result is short of amazing. Struts has something that all the other framework don't. It's a proved robust solution in the enterprise, every day I discover another enterprise site running struts. I yet have to see one using webwork. Struts is an excellent framework with limitations that are being addressed. JSF is excellent for building ui components, again I don't think any of the other frameworks would be able to offer what JSF does in terms of rich component in the future. Spring helps make your application more flexible and help by separating the tiers and ease development of tedious things. Also note that IoC and (maybe) Spring support are on the roadmap for struts 2.0/ It is hard to argue against srtuts+jsf and I think once struts 2.0 is out the other frameworks would fade even more. A thing that is important to note is that it's inevitable that other devices other than the browser would use the internet in the future and JSF make it so easy to serve whatever the client is, you just need to find a RenderKit.

Posted by Unknown on January 13, 2004 at 04:46 AM MST #

After researching these other frameworks you might want to stay with Struts, that's fine, if it solves your problems effieciently at the end of the day then great. But what I bet you notice regardless of which way you go are new ideals and concepts that you wish Struts had (but maybe not enough to ditch Struts) and hopefully with all of your trememdous free time (Dad) you can help give Struts a new breath of life by commiting back to the project. Tapestry's component centric approach is pretty cool, maybe you could add a component piece to appfuse and so is Interception so maybe you could lobby to have the Struts Interception piece to be actually added to the core Struts base. I'm 100% certain that you won't regret the time you spend learning the other frameworks... even if you choose to stay with Struts.

Posted by Kris Thompson on January 13, 2004 at 04:54 AM MST #

Mr. Anonymous. ASP.NET does everything JSF does and it does it with a very nice IDE. JSF maybe fine but you REALLY need an IDE to do it efficiently!!!

Posted by Kris Thompson on January 13, 2004 at 04:56 AM MST #

Matt, you really ought to make a post about how to efficiently time manage! I don't know how you learn these new technologies, run this great blog, manage appfuse (among other things) and actually make a living doing paid projects!

I missed a pretty important deadline on one project because I was determined to learn and utilize struts awhile back, and then more recently delayed another project because I wanted to learn and utilize hibernate. I'd love to learn some other technologies so that I can have a better idea of which ones would be the best choice for the task at hand but I find it hard to spare the time to do so.

Like you, I'm pretty stuck on struts and don't understand a lot of the negative talk about it. I tend to think a lot of it comes from people that never bothered to fully learn the best way to use it as it does have a bit of a learning curve to understand best practises (at least I found it had a fairly steep learning curve).

As for myself, I'm planning on tackling JSF next...I'm just not sure when and which client gets the honors of a prolonged timeframe for their project completion date :)

Posted by Pat on January 13, 2004 at 06:40 AM MST #

I have not looked at Spring yet. What are the advantages of combining Struts and Spring?

Posted by Gary Blomquist on January 13, 2004 at 02:26 PM MST #

Gary, your best bet is to check out the Struts Spring Plugin. The main advantages are that Spring allows you to declaratively configure the business objects that your Actions will use. If you're using bad MVC design - i.e. calling your persistence layer from your objects - Spring can still help you by setting DAOs on your Actions. It's main strength, IMO, is the ability to declaratively (in an XML file) wire your interfaces to your implementation classes.

Posted by Matt Raible on January 13, 2004 at 02:34 PM MST #

Not to throw to much gas on the fire, but you might consider taking a look at another webframework, Echo.

http://www.nextapp.com/products/echo/

It's "hook" is that it is completely Java server-side programming for developing web applications. Absolutly no HTML, Javascript, DHTML knowledge required. As I understand it, this is also the direction of JSF. If you've ever done some Java Swing development, Echo implements that code.

Honestly, I chose this framework because I just couldn't get my arms around Struts. Trust me, I tried, but I kept getting bogged down with the all the XML wiring. Plus my background was in doing a lot of Java development for shuttling data from one Enterprise sytem to another, no J2EE stuff... However, now after looking at Spring and Hibernate, the XML configuration stuff is really making sense so I may consider switching over to Struts.

There are a few shortcomings, but if you play within the rules a bit, they are non-existent, of course. :)

Here is a great article written by Brad Baker, an individual who developed an exceptionally robust set of Echo components, that discusses why one would consider the Echo framework:

http://echopoint.sourceforge.net/OlderArticles/WhyDoItAllInJava.html

thanks,
Mark

Posted by Unknown on January 13, 2004 at 03:48 PM MST #

arrrrgh... didn't fill out my Info... above comment was me. :)

one clarrification, Echo is an independent implementation of the Swing Interfaces, it doesn't really use Swing code... obviously.. :) But the programming syntax is almost exactly like coding a Java Swing application

Posted by mnickel on January 13, 2004 at 03:50 PM MST #

<em>> Absolutly no HTML, Javascript, DHTML knowledge required. </em>

Ugh, these kinds of web frameworks make me cringe, and it's part of the reason I'm scared of JSF. Of all the things I know, I know HTML, JavaScript and CSS the best - so why would I want some <em>framework developer</em> writing that for me? I'm not even vaguely interested... ;-)

Posted by Matt Raible on January 13, 2004 at 05:03 PM MST #

I also don't get these type of frameworks, particularly the Jakarta Element Construction Set. I just don't like the way that you have to recompile all the code just to make minor changes to the UI. It reminds me of the custom tag anti-pattern of embedding HTML in your tag handler. ;-)

Posted by Simon Brown on January 13, 2004 at 06:24 PM MST #

Of all the things I know, I know HTML, JavaScript and CSS the best - so why would I want some framework developer writing that for me? I'm not even vaguely interested... ;-)

well, that's the thing, my HTML, DHTML, CSS skills are not my best. :) (Obviously I continue to work on developing and learning... LOL need to keep sharp, eh?) And those differences are what make that article I mentioned a good read. :)

I took a look as the example JSF stuff over at O'Reilly's onjava.com site and it does look interesting, but seemingly like all things related to Java and J2EE, the setup of the infrastructure for even a simple "Hello World" application is huge. That's the benefit of AppFuse is that you take care of all that boring setup stuff so you can get to developing the application.

Thus the reason for my choice to use Echo. Don't get me wrong, as with all things there are shortcomings. It's not always rosey. It's just good that there are choices that appeal to everyones differing strengths.

Regarding JSF, however, I believe that is the law of inevitibility, Mr. Anderson. :) I mean it's Sun... JSF stuff is going to make it into the big frameworks, Websphere, BEA, etc... because all the PHB types love to talk about standards and how much money they'll be saving because of the comfy, warm fuzzies of the "standards". Yeah right. I understand the need and place for standards, they are helpful, but the FUD from the marketing campains gets a bit thick.

good discussion... :)

Mark

Posted by mnickel on January 13, 2004 at 06:46 PM MST #

Post a Comment:
  • HTML Syntax: Allowed