Matt RaibleMatt Raible is a writer with a passion for software. 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.
You searched this site for "jsf". 312 entries found.

You can also try this same search on Google.

Editing Java webapps instead of edit/deploy/reload

For the last few years, I've always done Java webapp development the hard way. Yeah, I'm the guy that makes Dion cringe (although I'm pretty sure he's not referring directly to me). I edit a class/jsp/xml file and run "ant deploy reload". Then I wait a few seconds for my context to reload in Tomcat. Luckily, I do mostly test-first development, so it's rare that I have to open my browser to test stuff. However, with the power of CSS and Ajax, manual testing in a browser is becoming more and more useful (although Selenium may solve that).

I've long resisted the power of the IDE, b/c I've always trusted Ant and felt confortable with the command line. However, I'm ready for a change. I'm ready to start developing Equinox and AppFuse-based applications using the edit/save/auto-reload cycle. So how do I get started? Where's the instructions for setting up my IDEs to work this way?

I prefer to use Eclipse and IDEA for development - so I'll likely try to get this working in both. If I get it working, I'll make sure and provide good documentation so others can do the same. I'm also willing to make any changes in project structure to make this happen; modifying build.xml (or pom.xml) to accomodate shouldn't be too difficult.

Posted in Java at Nov 07 2005, 09:16:03 AM MST 23 Comments

Simon begins "The Journey"

It's pretty cool to see that Simon is going to begin a quest to find the best web framework to fit his needs.

Struts, WebWork, Stripes, Spring MVC, Wicket, Tapestry, JSF, etc, or even rolling your own. With so many J2EE web application frameworks to choose from, how do you decide which one to use? Several articles (e.g. JavaServer Faces vs Tapestry) and presentations (e.g. Comparing Web Frameworks) already exist, but they generally concentrate on a small subset of the available frameworks.

This can be a daunting task, but it sounds like he's got a good plan:

Clearly this is a massive task so, to reduce the scope, I'm going to focus on what it takes to build a read only web application. If I were to hazard a guess, I'd say that the 80-20 rule applies. 80% of a web application is read only and 20% is interactive (e.g. HTML forms, AJAX, etc). Of course, this is changing with technologies like AJAX, but we're still on the upward curve. Traditionally, that 20% is the most complex and is an area where many web application frameworks claim their unique selling points. For this reason, I may iterate over the evaluation process to take into account how the frameworks help web developers build interactive webapps. For now, I'm going to look at whether the frameworks make doing the 80% easy.

Notice that Simon has added a couple frameworks that I haven't worked with: Stripes and Wicket. It should be interesting to see his findings. Not every framework is designed to do the same thing, so it'll be cool to find out which one Simon thinks is the best for read-only applications.

Posted in Java at Nov 02 2005, 03:18:32 PM MST 3 Comments

Spring MVC the most popular web framework among AppFuse users

At the beginning of October, I did an informal poll on the AppFuse mailing list to see which web framework users were developing their applications with. Surprisingly, Spring came out on top, and the component frameworks (JSF and Tapestry) are the least used. I find this interesting b/c AppFuse lowers the barriers and reduces the learning curve for all of these frameworks.

Poll Results

If you're an AppFuse user and didn't respond on the mailing list, please leave a comment with the web framework you're using.

On a related note, I noticed that java.net added RSS Feeds for mailing lists today. This means if you have an RSS Reader, you can subscribe to the AppFuse user mailing list.

Heh, I just subscribed and there's no messages in the feed. Maybe this feature needs a little more work.

Posted in Java at Oct 25 2005, 10:29:40 AM MDT 30 Comments

What's the best way to integrate Ajax into a Java webapp?

I received an e-mail over the weekend asking how to integrating Ajax into into the various web frameworks covered in my Java Web Framework Comparison Whitepaper. Below is my reply:

The best thing that I've seen is to use DWR, Prototype and Scriptaculous.
These will work with all web frameworks, and if you're using Spring on the backend -
DWR makes it easy to expose your beans as JavaScript objects.

Also, there's a number of tag library solutions that greatly simplify things:

  http://javawebparts.sf.net
  http://ajaxanywhere.sf.net
  http://ajaxtags.sf.net

I haven't used the first one, but I have used AjaxAnywhere and saw a demo of
AjaxTags from its developers.  They both look like they could be very useful.

For those of you using Ajax in your Java webapps - what's your advice? Do you use these same libraries or other ones?

This post was partially motivated by my desire to reiterate things that are so obvious. ;-)

Posted in Java at Oct 17 2005, 10:50:00 AM MDT 12 Comments

Java in Action Presentations and OS Rot

I think I have a serious case of OS Rot on my PowerBook. Despite the fact that it's been extremely slow lately, I went ahead and used it to deliver my Comparing Web Frameworks talk at Java in Action. I was a little hesitant when I agreed to do this talk - mainly because it required me to stretch a one-hour presentation into a 3-hour presentation. I figured the best way to take up all that time would be to do some live coding. So I recorded a whole bunch of "Live Templates" in IDEA and went in to the talk thinking I could pull it off. To say the least, my Mac didn't cooperate and the "live coding" I did failed miserably. JR Boyens hits the nail on the head in his review. Cameron only attended the first part (before the live coding started) and it looks like I did pretty good in the first hour.

Lessons Learned: 1) Have a backup plan and 2) don't do Comparing Web Frameworks as a 3-hour tutorial. I've never had a backup plan in the 2 years I've been speaking at conferences. I've been pretty lucky though, my demos have always worked. I was due for a failure. For my afternoon session about Ajax and Spring, I moved all the live coding stuff to the Dell laptop I had with me. This worked much better, but I was again spat on by the Demo Gods and over half of my demos failed to work. Oh well, I guess it just wasn't my day.

The good news is that all the demos are available online. The master/detail applications I developed are already part of Equinox, and the Ajax demo is available at http://demo.raibledesigns.com/equinox-ajax. Features include an ajax-ified Display Tag with AjaxAnywhere, an editable text with script.aculo.us (click on a user's first name in the table), in page updates with DWR (on the detail screen) and a zip-code autocomplete/city-state auto-populate with script.aculo.us and DWR. If there's any interest, I can write up a tutorial on how each feature was constructed. In the meantime, you can download the equinox-ajax project from java.net.

After my Ajax talk, I was approached by a couple of the AjaxTags developers, and they showed me some very cool widgets they're working on. I definitely plan on digging into this project in the very near future.

Posted in Java at Oct 09 2005, 03:20:45 PM MDT 1 Comment

Hibernate Relationships with XDoclet Tutorial

I finally got around to finishing the Hibernate Relationships tutorial for AppFuse today. This initial version includes a howto for creating the UI with Struts. In the future, I'll add sections for creating the UI with Spring MVC, WebWork, Tapestry and JSF. Those should be easy now that the hard part is done. This is a first cut at this tutorial, so it's likely there's issues, bugs and things I did wrong.

Now it's your turn. If you have a chance, please try it out and let us know how we can improve it.

Posted in Java at Sep 23 2005, 11:51:50 AM MDT 2 Comments

Seam

I have to admit, there's something about Seam that intrigues me. Maybe it's because they put up a really nice-looking demo (I'm a sucker for eye-candy), or maybe it's because it seems to be well documentated, or maybe it's the fact that it's based on J2EE standard technologies (EJB3 and JSF). It could also be that I greatly respect the work of Gavin King (who's always been respectful to me when I asked Hibernate questions back in the day).

It could be the lack of configuration, but I think it's the simplicity that gets me. A POJO (Entity Bean), a Session Bean for your business logic, and a view page (w/ Facelets no less, which is very cool). Other new frameworks this year include Wicket and Stripes. While these frameworks look cool, I really like the idea of a full-stack framework much better (I do use AppFuse after all). Well done Gavin - Seam looks very cool IMO.

On a related note, I upgraded AppFuse to MyFaces 1.1.0 yesterday w/ minimal effort. You can grab the latest from CVS if you'd like to get started with MyFaces quickly.

Posted in Java at Sep 21 2005, 10:00:28 AM MDT 15 Comments

AjaxAnywhere

From Ajaxian.com:

AjaxAnywhere is designed to turn any set of existing JSP components into AJAX-aware components without complex JavaScript coding. In contrast to other solutions, AjaxAnywhere is not component-oriented. You will not find here yet another AutoComplete component. Simply separate your web page into multiple zones, and use AjaxAnywhere to refresh only those zones that needs to be updated.

This is one of the few Ajax projects I've seen that looks to provide a lot of value w/o a whole lot of work. Notice how much it enhances JSF with this cool demo.

Posted in Java at Sep 16 2005, 08:52:29 AM MDT 4 Comments

Should I change AppFuse's default web framework?

Currently, the default web framework in AppFuse is Struts. It's nothing fancy like Shale or Struts Ti, but rather Struts Classic. Even though Struts is not dead it's a pain in the ass to work with compared to other MVC frameworks like Spring MVC and WebWork. Yesterday, on the AppFuse Mailing List, I kicked off an informal poll about switching to a different default web framework. I think most of the people that choose Struts w/ AppFuse are choosing it b/c it's the default. Making another framework the default would likely same quite a few users a lot of headaches.

So which one should I make the default? Here's my thoughts from the mailing list thread:

I like Spring MVC and WebWork better than Struts, but I believe that WebWork is much easier to understand and develop with. Unfortunately, it's not well documented or marketed, so it's a bit difficult when you run into snags. Of course, if you contact the user community via forums or e-mail, answers flow quickly.
...
I'd like to use the framework that's simplest to understand. Right now, in my eyes, that's WebWork. I think JSF and Tapestry are excellent too (as component-based frameworks), but Tapestry's learning curve is difficult and JSF has a lot of issues (like everything is a post). Hopefully things will get better with JSF 1.2, but it's probably another 6 months before MyFaces supports 1.2 - let alone the app servers.
...
Maybe we should just drop Struts altogether - or replace it with Struts Ti? Unfortunately, it'll probably be a while before it's ready for production (I doubt it's that useable now).

Of course, if a WebWork Book was out - this move would be a lot easier. I did talk to Patrick Lightbody on IM yesterday and he said "it's done" and supposedly he has copies, but I haven't seen anything on the WebWork Blog to prove this.

A related question: how much would it hurt AppFuse if I dropped Struts altogether and went with something like Wicket instead? I'd like to keep that cap at 5 web frameworks. If I dropped Struts and added Wicket, I might lose potential users, which might not be a bad thing. ;-)

Posted in Java at Sep 15 2005, 07:32:51 AM MDT 32 Comments

WebWork Books

What is it about WebWork that makes it so hard to write books about? I remember talking to Kris Thompson (a.k.a. the guy that quit blogging) last summer about WebWork in Action. At that time, it was "almost done". Over a year later and it's still "due out next month" (or is it done?). Almost as bad is Matthew Porter's WebWork Live, which was started late last year. I remember Matthew saying he expected to finish the initial version in March - and there's still not an ERP almost 10 months later.

Here's my guess: the Manning book has been done for months, but the publishing process takes months. As for Porter, my guess is he's too busy providing outstanding support at Contegix to work on the book. Any good conspiracy theories out there? Maybe WebWork has too many patterns that need to be documented? ;-)

Posted in Java at Sep 14 2005, 05:23:04 PM MDT 3 Comments