AJUG: AJAX solves "boring applications"

June’s Atlanta Java Users’ Group covered AJAX – while not purely a Java topic, I firmly believe that it will become one of the “must have” skills for J2EE development in the near future, at least for apps with a user interface. Some folks from a local software company, ClearNova, showed up to present. The topic expanded a bit further to encompass Rich Internet Applications.

The usual XMLHTTPRequest approach was mentioned, but the less frequently mentioned hidden IFRAME strategy was also mentioned (though not technically XML). IFRAME has an advantage in that it can point to any server. XMLHTTPRequest must point to the same server and port that the page was loaded from, but is apparently faster than the IFRAME approach. Hidden IFRAME loading may also cause the user to see status bar changes our hear “click” noises.

Overall, AJAX makes good demo-ware. They showed several different examples of pulling data from the server. The real challenge with AJAX seems to be manageability. There are few patterns out there for just how AJAX functionality should be arranged for maximum maintainability and following good design principles. It seems like right now, it is easy to put into an app, but perhaps hard to do so in a clean fashion. Maybe part of that is just my impression of javascript development – a pain, and difficult to debug.

Suggested resources:

ThinkCAP did show the typical J2EE “Store” implemented using their product. They floated the typical Gartner stats pushed by the “simple IDE” vendors, touting a continued linear growth of “hands on the code” developers couple with exponential growth in “point and click” developers. If anything, I’ve personally seen the demands of business applications become more complex, driving higher demand for highly technical developers, but maybe the vendors will get there someday. Their product may be right for some companies and projects, but I don’t think I’ve ever been on a project that would have benefitted from them.

The meeting was definitely worthwhile – I’d encourage you to check out the video of the presentation once they post it on the AJUG web site.


Car Hunt: Part 2

I previously mentioned my hunt for a new car, with prioritied on comfort and good visibility for my 6′ 5.5″ frame, long-term reliability, and performance, with secondary emphasis on price and gas mileage, and the understanding that it may need to accomodate children in the next few years. Here’s my take on the cars I looked at:

  • Acura TL – I tried to like it. The styling still calls to me. In the end, it just doesn’t compare to the Infiniti G35, all a matter of taste. The Acura is more of a sporty luxury sedan, while the Infiniti is more of a luxury sport sedan. Sport matters to me, luxury… not so much. Acura is voted off the island. The gas pedal responds slower, and there’s no reason I should pay this much money for front wheel drive.
  • Acura TSX – Inferior, smaller brother of the TL. All of the TL’s weaknesses, plus smaller space and less power. No thanks.
  • Audi A4 (2.0 CVT) – A blast, even without quattro (AWD) or a bigger engine. The best interior of any car I looked at, and well-engineered ideas throughout. Also had the most legroom due to the broad range of the power seats. I can’t wait for CVT to become more pervasive – it makes so much sense vs. the standard automatic transmission. Unfortunately, Audi’s reliability record and price killed this one. Especially as they sponge parts from the abysmally unreliable Volkswagen parts bin.
  • Ford Escape – Good legroom. Abysmal performance from the 4 cylinder necessitates the V6 engine. Handles great for a small SUV. One of the 3 vehicles that made my short list (shared platform w/ Mazda gives acceptable reliability).
  • Honda Accord – my first victim of the “stop light problem”. At my height, when in this car at a stop light, I have to slink down and tilt my head sideways to see whether the stop light I’m at is green or red. If I’m buying anything more than a value vehicle, this isn’t something I want to deal with. Bye bye accord.
  • Honda Pilot – Visibility problems of the accord with worse legroom. I expected better space from an SUV. Oh welll.
  • Infiniti G35 (sedan) – Fun to drive rear wheel drive sedan. Good legroom and visibility, and fun to drive. Gas mileage isn’t great. 2005 has a great interior compared to 2004 model. A bit on the pricey side. Also makes the short list.
  • Mazda3 (5 door) – very nicely powered sporty compact. Definitely the best value for money of anything I saw. Very narrow legroom and a gas and brake so close that my size 13 shoes tried to push both at once knocked this out of contention. Wish I fit – would be a great ride at a great price.
  • Mazda Tribute – slightly better handling cousin of the Ford Escape. On the short list as a couterpart of the Escape.
  • Nissan Murano – Nice looking smallish SUV, but the handling is mediocre and the CVT is far less refined than Audi’s. The fit is okay, but it feels like I’m driving an oversized, overpriced, hard to handle Nissan Altima. DQ’d on bad value for money and blah handling.
  • Subaru Legacy (GT Limited) – An absolute blast to drive. 250 HP and full-time all-wheel drive on a direct injection engine make for an enjoyable, if a bit cramped and spartan ride. Scared my wife on this test-drive while pushing the limits of AWD. Everything it lacks in polish, it makes up for in fun and responsiveness. The more raw driving experience tells you exactly where you stand on the road.
  • Toyota Camry – Thought I’d give my former ride a chance at being my next ride. Though it looks roomier, it has the same “stop light problem” as the Honda Accord, my old Camry, and my wife’s 626. Like I said, turning my head sideways at each green light isn’t worth my dollar.
  • Toyota Highlander – Once again, the SUV actually fits worse than the company’s sedans. In a rush to accomodate a 3rd row of seats, the front legroom on this is possibly worse than a Ford Focus.

So to recap, the short list came down to the Ford Escape/Mazda Tribute, Subaru Legacy, and Infiniti G35. The best looker and driver, with a premium on price, was the G35. It matched the Tribute and beat the Legacy on driver space. I decided the Legacy wasn’t worth the slightly cramped space, no matter how fun. The Escape/Tribute lost out on minor reliability concerns, and the fact that the G35 gets much better performance from similar gas mileage.

Make no mistake, I’m looking to pay nowhere near the $35k sticker price of a well-equipped new Infiniti G35. I decided I’d prefer a new G35 to a new or used Escape or Legacy. I’m probably actually picking my choice up tomorrow, so I’ll conclude part 3 with my shopping process and maybe a photo or two of the new ride, an Infiniti G35 Sedan.


JSTL Stopped Working?

I’ve been using Jakarta Taglib’s implementation of JSTL for a while now. As I work to move some of my apps up to more recent versions of libraries and J2EE, I beat my head on the wall for a few hours chasing down a nasty problem.

I upgraded the Jakarta Taglib JSTL to the latest version, 1.1.2. Suddenly, many of my JSTL tags stop interpreting the dynamically specified values, such as on a c:forEach items=”${forms}”. I check the docs, and upgraded my XML libraries to the recommended versions. Still broken. I try some non-taglib expression language outputs – it just prints the literal, not the interpreted expression.

The trick? My web.xml still specified that it was a servlet 2.3 webapp. Upgrading the descriptor to the [verbose] 2.4 indicator fixed all the problems. Now to get rid of all of those c:out tags!