Gunnar Hillert's Blog

Saturday, March 28, 2009

DevNexus Report Part 2

In part one I provided an overview of attended DevNexus sessions. Here are some more details I took away from the presentations. The first days of the conference started out with Neil Ford, who always seems to provide those excellent but more high-level-off-the-beaten-path-type presentations (The presentation certainly contained an interesting Angelina Jolie picture). In his presentation he talked mainly about a quality work environment and how to be more productive as a developer. In his opinion giving developers their own office would be the best as it allows them to fully concentrate on the given development tasks. If that is not feasible and you're not working for Joel, then an open room configuration is the next-best compromise. And finally the worst solution: cubicles. Those suckers simply slurp your brain dry…

Well, afterward I headed over to Ari Zilka's talk about Terracotta. He gave an overview/introduction of Terracotta's capabilities. The presentation was quite similar to the talk we had at our monthly AJUG meeting last year but since then Terracotta published a new reference web application (Examinator) that really looks sharp and consist of a very good technology stack besides the fact that it uses Terracotta:

Spring MVC

Spring Webflow

Spring Security

JPA (Hibernate)

FreeMarker

SiteMesh

MySQL

One example he gave that stuck with me quite well, was the typical email registration process, when signing up for a new user account. You provide an email address, but before the account can be activated, you need to verify the email address using a verification email. However, using Terracotta, you're able to defer saving the email to the database until verification is complete and thus you can keep "state" information out of the database.

Afterward, I listened to Charlie Hubbard's talk on GridGain. This was an interesting talk in that GridGain is tackling distributed computing from a different angle than Terracotta. You are basically using it to farm out little chunks of data that are then processed by those nodes. It feels very reminiscent to using JMS with Publish/Subscribe with some processing logic bolted on.

After this talk I attended Bill Burke's talk on REST. It is interesting how various frameworks converge to a common point these days - RestEasy looked like Spring MVC 3.0 :-)

The last talk I visited was on Jared's Richardson's talk on 'using agile to optimize' which was a good talk. It reminds me that I still need to read his book Ship It!

At the end of the day we all headed down to the bar and had a few drinks. I met a former colleque of mine and chatted a while with Charlie Hubbard and Lance Gleason. A long good day…

Thursday, March 26, 2009

RIA, Flex and Excitement

I cannot believe that already two weeks passed by since the Atlanta DevNexus conference. Since then I have been quite busy learning Flex. My desire to explore Flex started back when James Ward talked at one of our AJUG meetings several months ago. Unfortunately, beyond some initial explorations, I never found the time to make the next leap forward.

The presentations at the DevNexus conference, though, finally pushed me beyond that initial hump. At the conference I attended the talks for GWT, JavaFX and Flex. Here is what I took away from it:

No doubt, GWT looks great and I think it is in the process of capturing a good share of the pie among Java developers. Since you write the GUI using Java (Compiled into JavaScript), it is a really nice component-based Framework (forget JSF). The ability to unit test your GUI code with just jUnit is cool, too. Something I was not aware of prior to attending DevNexus is the ability to also embed GWT into existing applications (e.g. a DIV on a page). However, at the end of the day you're still creating HTML with its limitations in terms of richness.

In terms of that, JavaFX has potential in my opinion. While it comes with its own scripting language you are still able to use the the full breath of exisitng Java libraries. Unfortunately, JavaFX does not seem to be there, yet. While some of the example application look nice, it still lacks some important pieces, e.g. lots of standard components. At the end of the day, most developers are building business apps and thus need standard components for datagrids, charting etc.

This was also one of the key complaints Yakov Fain (See picture) made at his DevNexus presentation which gave the audience an overview of various RIA technologies. (Another perspective on the JavaFX was posted by Javalobby: Where in the world is JavaFX?)

And therefore, by the end of the conference I was mostly convinced that Adobe Flex is the best technology at the moment for delivering rich internet applications. Don't get me wrong, I still hope that JavaFX can make it and maybe IBM fancies with the idea of becoming a player in that area and provides some more resources once BlueSun is born.

Nevertheless, once the conference was over, I made the decision to take the Flex deep dive. I mostly finished reading Learning Flex 3 and I just started reading Pro Flex on Spring. For both books I am planning on publishing book reviews soon.

As an example I am in the process of creating a simple Flex-based front-end (highly experimental) for jRecruiter my open source project. So far I have setup the Spring BlazeDS 1.0M2 integration and I am pulling back job postings from the server using AMF and showing them in a data-grid component. Furthermore, I added Google Maps to the Flex application which works pretty neat. It gives you the ability to show job postings on a map (and thus helping you estimate possible morning commutes). I hope to have a deployed version available soon. In the meantime, here is an early screen-shot:

Monday, March 16, 2009

DevNexus Audio Files Available Now

Originally we did not plan on recording the sessions during DevNexus 2009, but thanks to the help of Stephen Davis we are able to provide recordings of ten presentations. The quality could be better but I think the presenter is mostly intelligible. The recordings are available here.

Friday, March 13, 2009

DevNexus 2009 Report Part 1

More than half a year of preparation finally culminated in the grande finale from March 10 to 11 at the DevNexus conference. The result was in my opinion a great success. We received many emails from speakers and attendees alike, commenting on the very good quality of the DevNexus conference. This was the biggest event that I helped organizing, yet. I already have a few ideas and areas of improvement for DevNexus 2010. But that is subject of a future blog post…

Overall, I truly enjoyed the speaker line-up. Here are the presentations I attended:

March 10

On the Lam from the Furniture Police by Neil Ford

Terracotta - Real Apps, Real Frameworks, Real Use Cases by Ari Zilka

Introduction to Grid based computing with GridGain by Charlie Hubbard

Scaling RESTful Services with JAX-RS by Bill Burke

Software Teams Tuneup: Using Agile to Optimize by Jared Richardson

Scaling Hibernate: tips, recipes and new perspectives by Emmanuel Bernard

March 11

JavaFX: The Platform for Rich Internet Applications by Doris Chen

Picking the right technology for the Rich Internet Application by Yakov Fain

Thursday, March 12, 2009

I18N your Java Web Application

I went through the exercise of internationalizing (I18N) my home project. It is still work in progress but I added support for German in most places. Unfortunately, I got a bit bitten by the fact that by default properties files in Java have to be encoded in ISO-8859-1. Up to today, all web applications I helped developing, were created for an English speaking target audience, and therefore, even though they often used properties files, they never went beyond the standard character set.

Interestingly, though, if you like using typographically correct characters like the ellipsis or quotation marks, you would run into the same issue. For that reason alone I think everything (Your JSP files, server, database, source code etc. should all be able to handle UTF-8)

Nevertheless, the limitation that properties files by default are not cannot be in UTF-8 is quite annoying, as it would require you to escape special non-ISO-8859-1 characters or use a conversion tools such as native2ascii. This blog post summarizes the general issue nicely.

For my project I am using Struts 2.1. By default it does not allow for UTF-8 based message resources. Since Java 6 introduced support for creating a custom loader when accessing resource bundles, I was looking into ways of maybe extending Struts 2. Well, it looks like Struts 2 does neither allow a custom ResourceBundle Control nor for easy patching of Struts itself. See also: https://issues.apache.org/struts/browse/WW-2774

Unfortunately, as mentioned above, it looks like there is not an easy pluggable way of convincing Struts 2's textprovider to use Spring's messageSource implementation. As I am already using Spring MVC for some of my actions, I decided to use Spring's message tag within my JSPs, I am not crazy about it, as I now mix different web-frameworks but it seems to work like a charm right now.

Two last questions to answer are:

What is the best way to edit resource bundles using eclipse?How do ou structure your resource bundles without loosing track of things?

After searching the web for a while, I finally settled for Eclipse Resource Bundle Editor. It works quite nicely, I just wish something useful like this would be built into Eclipse by default.

As for structuring the property files, I settled pretty much on a jsp-by-jsp structure. E.g. if I have a file edit-settings.jsp and I want to customize the page title, then I create a resource bundle entry jsp.edit-settings.title=My settings

Similarily I deal with class files:

class.AddUserAcion.success = The user has been successfully registered.

Just as additional information: I wonder, whether it might be a cool thing, to be able to structure properties files similar to Rails 2.2+. There is an interesting RailsCast available about how to do I18N in Ruby On Rails.

Friday, March 6, 2009

jQuery UI and ThemeRoller

I use jQuery quite extensively in my projects these days, but I kind of ignored jQuery UI for too long. The last two days, though, I finally got more into jQuery UI, after I was looking for a modal dialog component and realized that jQuery UI provides a very nice implementation by itself.

I haven't done much directly with the available components (except the dialog component), butI was very much impressed about the way you download jQuery UI. They call it "Build Your Download" which let's you pick and choose which components of jQuery UI you may want to use and it creates a customized download bundle for you.

But substantially more impressive is "ThemeRoller", which not only let's you select between various themes but also allows for editing and creating new themes. All changes are applied right on the spot and once you're done you can include the theme in your customized jQuery UI download.

From there I discovered that jQuery released a new CSS Framework called "jQuery UI CSS Framework". It looks quite promising and I wonder if it might be applicable for my pet project. I certainly need to learn more about it...it would be nice if it could serve as the main CSS for my web application and therefore allow for easy theming of the application.