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.

Java Web Framework Tools: How many are there?

How many tools are there for the various open source web frameworks in Java? Here's my count:

So where did I get these numbers?

Struts 2's number (4) is based on tmjee's comment on a recent post. Spring MVC consists of Spring IDE, Gaijun Studio and IDEA (which supports Spring XML code-completion). There's no Stripes tools that I know of. JSF's number (12) is from research I did in October 2005 (if you have a definitive list, let me know). Tapestry has Spindle (which only supports 3.0) and 4.0 has an IDEA Plugin. Wicket has NetBeans support (which also exists for JSF (+Facelets), Tapestry and WebWork).

Please let me know if you have any corrections to these numbers. You can also download my presentation if you'd like to refute anything before tomorrow morning. It's noon in Amsterdam right now, so you have 18 hours or so.

Update: I've updated the graphs based on comments. Thanks for your input!

Posted in Java at May 03 2007, 02:17:28 AM MDT 19 Comments
Comments:

In addition to the the Wicket support in NetBeans, there's Wicket Bench for Eclipse and Wicket Assistant for Intellij IDEA.

Posted by Gwyn Evans on May 03, 2007 at 10:46 AM MDT #

Well, there's also SiteGraph for Struts 2, as well as the Config Browser - although one could argue about those being a 'tool', since they're intended for display only, and some more tools are on their way or are being converted from WebWork. There is a netbeans plugin for Struts 2 that should take off after J1.

Posted by Phil on May 03, 2007 at 11:00 AM MDT #

I know you can only cover so many frameworks. But this list will soon need to contain JRuby/Rails and possibly Grails. I believe NetBeans, Eclipse and IDEA all have some support for Rails. Thanks for doing this research.

Posted by Rob Breidecker on May 03, 2007 at 01:27 PM MDT #

Color me pedantic, but after listing eclipse / idea and then briefly saying Tapestry has netbeans support (which of course it does) - doesn't that make the count "3" and not 2? It's probably a lot higher than 3 but it's hard to tell what your measurements are based on - to make it easier almost all of them are listed at the bottom of the front page: http://tapestry.apache.org/ .

Posted by Jesse Kuhnert on May 03, 2007 at 01:40 PM MDT #

Please do a find-and-replace s/Webwork/Struts 2/g . The presentation is too inconsistent and would be confusing for those who are don't already know that webwork is the predecessor to struts2.

Otherwise, a great presentation. It is a great service to the java web-development community.

Posted by Keith Weinberg on May 03, 2007 at 01:48 PM MDT #

Hi Matt, I am just curious if there is any tool for Jboss Seam , or if anyone it is using it. sound pretty cool to glue JSF and EJB3 together.

Posted by Manny on May 03, 2007 at 01:51 PM MDT #

This is an interesting post, but in my opinion *very* skewed. Wicket is a web framework that is "Just Java", so it doesn't need any special tools or IDE plugins. Wicket has a very active community contributing "libraries and components" instead of building development tools.

JSF is a perfect example. Why are there so many JSF tools available? Because it's impossible to develop productively with "standard" JSF.

Just my 2 cents. Looking at this graph makes it *appear* that JSF is the bomb, when in fact it just has a number of required tools to even make it usable.

Posted by Ryan Sonnek on May 03, 2007 at 02:10 PM MDT #

Ryan makes a similar point but I'll chime in anyways. I think it's worth including a footnote that JSF was designed for tooling and some would say it shouldn't even be worked on without it. So naturally one would expect to have lots of tooling available for the framework.

Posted by Demian Neidetcher on May 03, 2007 at 02:41 PM MDT #

I like JSF because of the abundance of widgets/controls available, particularly AJAX-enabled. At the end of the day, I only need one good tool (JBoss Seam) and then as many as I can handle widget libraries (MyFaces, Trinidad, RichFaces, IceFaces, etc.) because my users simply care about a rich web experience.

Posted by Anthony on May 03, 2007 at 04:29 PM MDT #

In terms of Wicket & Internationalization, you have two built-in options: 1. pages or components that are i18n-specific YourComponent_en.html vs. YourComponent_fr.html (with a default of YourComponent.html if no i18n-specific instance exists). 2. resource bundles: YourApplication_sp.properties, YourPage_de.properties, YourComponent_en.properties -- checking from the most granular on up: component, then page, then application.

Posted by Scott Swank on May 03, 2007 at 05:56 PM MDT #

In point of fact, we mix/match varying templates by i18n and varying more text-specific i18n via resource bundles.

Posted by Scott Swank on May 03, 2007 at 05:58 PM MDT #

By the way, that cartoon on slide #6 is awesome! Where did you get it? I would love to link directly to it.

Posted by James Brundege on May 03, 2007 at 08:12 PM MDT #

Whether it's a con of Wicket that templates live next to the Java classes is arguable. Some people resist this idea initially simply because they are not used to it. But the advantages are pretty big actually, and the main ones are:
  • you never, ever have to wonder where you should find your particular piece of markup
  • you don't need to configure it
  • it's reusable without extra effort.

The last part is pretty awesome actually. You can develop any page, panel or whatever, including the markup, javascript, css files and e.g. images it needs, jar it and if it is in your class path, you can use it *without a single line of configuration or build magic*.

Posted by Eelco Hillenius on May 04, 2007 at 12:20 AM MDT #

Besides Wicket Ajax support via Dojo and Scriptaculous through the wicket-stuff projects, Wicket ships with an Ajax engine as part of the core project. What you use for Ajax and other rich component stuff is plugable, and can in fact be mixed and matched however you like. The advantage of the Wicket Ajax engine - besides the fact that it ships with the core project - is that it is tailored for Wicket. Things like component replacement etc works seamlessly, you'll get an ajax debug panel for free (link to it is rendered on any ajax page automatically when you're in development mode), and it's relatively small and optimized as it is not intended to be general purpose.

Posted by Eelco Hillenius on May 04, 2007 at 12:33 AM MDT #

Sorry for spamming Matt. Just commenting on the Wicket bits while reading your PDF. For bookmarking and URLs, besides having predictable URLs for pages that are supposed to be bookmarkable (note that that's not always what you want, which is actually a problem in other frameworks, requiring more setup for security), there is like you mentioned URL mounting. But besides that, you can also implement custom URL strategies, by providing a custom implementation of IRequestCodingStrategy. See CryptedUrlWebRequestCodingStrategy and UrlCompressingWebCodingStrategy for two examples that are shipped with the project.

Posted by Eelco Hillenius on May 04, 2007 at 12:39 AM MDT #

Concerning 'flash' message support... with Wicket, it's really only for the occasions where you route to a different page than the one you're currently in (and for whatever reason you don't want to set the messages on the other page either). But by default, you can set a message on any component, and Wicket will make it work with the redirect after post (and get in Wicket's case).

Posted by Eelco Hillenius on May 04, 2007 at 12:44 AM MDT #

Anthony, could you please get a little more concrete on why to combine more than one widget library? I mean, the ones you are mentioning greatly overlap between themselves, making your post look like a great marketing fud (no pun intended).

Posted by Ignacio Coloma on May 04, 2007 at 08:11 AM MDT #

MyEclipse 5.1.1 GA from Genuitec http://www.myeclipseide.com/, is a plugin/IDE for Eclipse 3.2.1. It support the development with Spring integrating the SpringIDE 1.3.6, JSF RI 1.1.01 and MyFaces 1.0.9; Tapestry 3.0.x through Spindle.

Posted by Alessandro Gasparini on May 04, 2007 at 10:03 AM MDT #

Not to sound like an activist for JBoss, but JSF is more or less worthless without Seam. However, with Seam in the picture, JSF has a fair shot at being the best framework choice in the market. It's a shame that JSF has to be considered by itself, since those days are all but gone. Eventually the underlying issues with the life cycle will get resolved as JSF 2 and WebBeans converge, but until then, Seam does a tremendous job of hiding the issue. I would also add that Ajax4jsf is pretty much a part of JSF now. You really wouldn't want to use JSF without it.

Web frameworks will always be a personal choice just like a person's favorite flavor of ice cream. I happen to see a strong future for Seam. JSF alone is like sugar and milk...the fundamental ingredients of ice cream, but not yet a full product.

Posted by Dan Allen on May 06, 2007 at 08:51 PM MDT #

Post a Comment:
Comments are closed for this entry.